class MotherBrain::Upgrade::Manager

Handles upgrading nodes in already environments.

Public Class Methods

instance() click to toggle source

@raise [Celluloid::DeadActorError] if Upgrade Manager has not been started

@return [Celluloid::Actor(Upgrade::Manager)]

# File lib/mb/upgrade/manager.rb, line 9
def instance
  MB::Application[:upgrade_manager] or raise Celluloid::DeadActorError, "upgrade manager not running"
end
new() click to toggle source
# File lib/mb/upgrade/manager.rb, line 19
def initialize
  log.debug { "Upgrade Manager starting..." }
end

Public Instance Methods

async_upgrade(environment, plugin, options = {}) click to toggle source

Asynchronously upgrade an environment

@param [String] environment

name of the environment to upgrade

@param [MB::Plugin] plugin

plugin to use for performing the upgrade on the environment

@option options [Hash] component_versions

Hash of components and the versions to set them to

@option options [Hash] cookbook_versions

Hash of cookbooks and the versions to set them to

@option options [Hash] environment_attributes

any additional attributes to set on the environment

@option options [String] environment_attributes_file

any additional attributes to set on the environment via a json file

@option options [Boolean] :force

Force any locks to be overwritten

@return [JobTicket]

# File lib/mb/upgrade/manager.rb, line 42
def async_upgrade(environment, plugin, options = {})
  job = Job.new(:upgrade)

  async(:upgrade, job, environment, plugin, options)

  job.ticket
end
upgrade(job, environment, plugin, options = {}) click to toggle source

Synchronously upgrade an environment

@param [MB::Job] job @param [String] environment

name of the environment to upgrade

@param [MB::Plugin] plugin

plugin to use for performing the upgrade on the environment

@option options [Hash] component_versions

Hash of components and the versions to set them to

@option options [Hash] cookbook_versions

Hash of cookbooks and the versions to set them to

@option options [Hash] environment_attributes

any additional attributes to set on the environment

@option options [String] environment_attributes_file

any additional attributes to set on the environment via a json file

@option options [Boolean] :force

Force any locks to be overwritten

@return [Job]

# File lib/mb/upgrade/manager.rb, line 70
def upgrade(job, environment, plugin, options = {})
  worker = Worker.new(job, environment.freeze, plugin.freeze, options.freeze)
  worker.run
ensure
  worker.terminate if worker && worker.alive?
  job.terminate if job && job.alive?
end

Private Instance Methods

finalize_callback() click to toggle source
# File lib/mb/upgrade/manager.rb, line 80
def finalize_callback
  log.debug { "Upgrade Manager stopping..." }
end