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(username, deployment_manifest, cloud_config, options = {}) ⇒ Object



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

def create_deployment(username, deployment_manifest, cloud_config, 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)

  cloud_config_id = cloud_config.nil? ? nil : cloud_config.id
  JobQueue.new.enqueue(username, Jobs::UpdateDeployment, 'create deployment', [deployment_manifest_file, cloud_config_id, options])
end

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



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

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

#deployment_to_json(deployment) ⇒ Object



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

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

  Yajl::Encoder.encode(result)
end

#deployment_vms_to_json(deployment) ⇒ Object



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

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