Class: Bosh::Director::Api::DeploymentManager

Inherits:
Object
  • Object
show all
Includes:
ApiHelper
Defined in:
lib/bosh/director/api/deployment_manager.rb

Constant Summary

Constants included from ApiHelper

ApiHelper::READ_CHUNK_SIZE

Instance Method Summary collapse

Methods included from ApiHelper

#check_available_disk_space, #json_decode, #json_encode, #send_disposable_file, #start_task, #write_file

Instance Method Details

#create_deployment(user, deployment_manifest, options = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bosh/director/api/deployment_manager.rb', line 14

def create_deployment(user, deployment_manifest, options = {})
  random_name = "deployment-#{SecureRandom.uuid}"
  deployment_manifest_dir = Dir::tmpdir
  deployment_manifest_file = File.join(deployment_manifest_dir, random_name)
  unless check_available_disk_space(deployment_manifest_dir, deployment_manifest.size)
    raise NotEnoughDiskSpace, 'Uploading deployment manifest failed. ' +
      "Insufficient space on BOSH director in #{deployment_manifest_dir}"
  end

  write_file(deployment_manifest_file, deployment_manifest)

  JobQueue.new.enqueue(user, Jobs::UpdateDeployment, 'create deployment', [deployment_manifest_file, options])
end

#delete_deployment(user, deployment, options = {}) ⇒ Object



28
29
30
# File 'lib/bosh/director/api/deployment_manager.rb', line 28

def delete_deployment(user, deployment, options = {})
  JobQueue.new.enqueue(user, Jobs::DeleteDeployment, "delete deployment #{deployment.name}", [deployment.name, options])
end

#deployment_to_json(deployment) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/bosh/director/api/deployment_manager.rb', line 32

def deployment_to_json(deployment)
  result = {
    'manifest' => deployment.manifest,
  }

  Yajl::Encoder.encode(result)
end

#deployment_vms_to_json(deployment) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/bosh/director/api/deployment_manager.rb', line 40

def deployment_vms_to_json(deployment)
  vms = []
  filters = {:deployment_id => deployment.id}
  Models::Vm.eager(:instance).filter(filters).all.each do |vm|
    instance = vm.instance

    vms << {
      'agent_id' => vm.agent_id,
      'cid' => vm.cid,
      'job' => instance ? instance.job : nil,
      'index' => instance ? instance.index : nil
    }
  end

  Yajl::Encoder.encode(vms)
end

#find_by_name(name) ⇒ Models::Deployment

Finds deployment by name

Parameters:

  • name (String)

Returns:

Raises:



10
11
12
# File 'lib/bosh/director/api/deployment_manager.rb', line 10

def find_by_name(name)
  DeploymentLookup.new.by_name(name)
end