class MotherBrain::Upgrade::Manager
Handles upgrading nodes in already environments.
Public Class Methods
@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
# File lib/mb/upgrade/manager.rb, line 19 def initialize log.debug { "Upgrade Manager starting..." } end
Public Instance Methods
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
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
# File lib/mb/upgrade/manager.rb, line 80 def finalize_callback log.debug { "Upgrade Manager stopping..." } end