Class: Bosh::Director::Jobs::RunErrand
- Defined in:
- lib/bosh/director/jobs/run_errand.rb
Instance Attribute Summary
Attributes inherited from BaseJob
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(deployment_name, errand_name) ⇒ RunErrand
constructor
A new instance of RunErrand.
- #perform ⇒ Object
Methods inherited from BaseJob
#begin_stage, #event_log, #logger, perform, #result_file, #single_step_stage, #task_cancelled?, #task_checkpoint, #track_and_log
Constructor Details
#initialize(deployment_name, errand_name) ⇒ RunErrand
Returns a new instance of RunErrand.
11 12 13 14 15 16 17 |
# File 'lib/bosh/director/jobs/run_errand.rb', line 11 def initialize(deployment_name, errand_name) @deployment_name = deployment_name @errand_name = errand_name @deployment_manager = Api::DeploymentManager.new @instance_manager = Api::InstanceManager.new @blobstore = App.instance.blobstores.blobstore end |
Class Method Details
.job_type ⇒ Object
7 8 9 |
# File 'lib/bosh/director/jobs/run_errand.rb', line 7 def self.job_type :run_errand end |
Instance Method Details
#perform ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/bosh/director/jobs/run_errand.rb', line 19 def perform deployment_model = @deployment_manager.find_by_name(@deployment_name) manifest = Psych.load(deployment_model.manifest) deployment = DeploymentPlan::Planner.parse(manifest, event_log, {}) job = deployment.job(@errand_name) if job.nil? raise JobNotFound, "Errand `#{@errand_name}' doesn't exist" end unless job.can_run_as_errand? raise RunErrandError, "Job `#{job.name}' is not an errand. To mark a job as an errand " + "set its lifecycle to 'errand' in the deployment manifest." end if job.instances.empty? raise InstanceNotFound, "Instance `#{@deployment_name}/#{@errand_name}/0' doesn't exist" end runner = Errand::Runner.new(job, result_file, @instance_manager, event_log) with_updated_instances(deployment, job) do logger.info('Starting to run errand') runner.run end end |