Class: VCloudCloud::Steps::CreateOrUpdateAgentEnv

Inherits:
VCloudCloud::Step show all
Defined in:
lib/cloud/vcloud/steps/create_update_agent_env.rb

Instance Attribute Summary

Attributes inherited from VCloudCloud::Step

#client, #state

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from VCloudCloud::Step

#cleanup, #initialize, #rollback

Constructor Details

This class inherits a constructor from VCloudCloud::Step

Class Method Details

.update_network_env(env, vm, networks) ⇒ Object



53
54
55
# File 'lib/cloud/vcloud/steps/create_update_agent_env.rb', line 53

def self.update_network_env(env, vm, networks)
  env['networks'] = generate_network_env vm.hardware_section.nics, networks
end

.update_persistent_disk(env, vm, disk_id, previous_disks_list) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/cloud/vcloud/steps/create_update_agent_env.rb', line 57

def self.update_persistent_disk(env, vm, disk_id, previous_disks_list)
  env['disks'] ||= {}
  env['disks']['persistent'] ||= {}

  persistent_disk = get_newly_added_disk(vm, previous_disks_list)
  env['disks']['persistent'][disk_id] = persistent_disk.disk_id
end

Instance Method Details

#perform(networks, environment, agent_properties, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/cloud/vcloud/steps/create_update_agent_env.rb', line 4

def perform(networks, environment, agent_properties, &block)
  vm = state[:vm] = client.reload state[:vm]

  system_disk = state[:disks][0]
  ephemeral_disk = CreateOrUpdateAgentEnv.get_newly_added_disk vm, state[:disks]
  state[:env] = {
    'vm' => { 'name' => vm.name, 'id' => vm.urn },
    'agent_id' => vm.name,
    'disks' => {
      'system' => system_disk.disk_id,
      'ephemeral' => ephemeral_disk.disk_id,
      'persistent' => {}
    },
    'networks' => CreateOrUpdateAgentEnv.generate_network_env(vm.hardware_section.nics, networks),
    'env' => environment || {}
  }.merge! agent_properties
end