Class: Fog::VcloudDirector::Compute::Vapp

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/vcloud_director/models/compute/vapp.rb

Instance Method Summary collapse

Methods inherited from Model

#inspect, #lazy_load_attrs, #make_attr_loaded_method, #make_lazy_load_method

Constructor Details

#initialize(attributes = {}) ⇒ Vapp

Returns a new instance of Vapp.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 19

def initialize(attributes = {})
  # Memorize VMs because their full XML description was already included in the vApp XML description.
  # Instead simple Array we rather store as Collection in order to provide common interface e.g.
  #    vapp.vms.all
  #    vapp.vms.get_by_name
  if (vms = attributes.delete(:vms))
    @vms = Fog::VcloudDirector::Compute::Vms.new(
      :vapp    => self,
      :service => attributes[:service]
    ).with_item_list(Array(vms))
  end

  super(attributes)
end

Instance Method Details

#custom_fieldsObject



48
49
50
51
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 48

def custom_fields
  requires :id
  service.custom_fields( :vapp => self)
end

#destroyObject



166
167
168
169
170
171
172
173
174
175
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 166

def destroy
  requires :id
  begin
    response = service.delete_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#human_statusObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 54

def human_status
  case status
  when '-1', -1
    'failed_creation'
  when '0', 0
    'creating'
  when '8', 8
    'off'
  when '4', 4
    'on'
  when '3', 3
    'suspended'
  else
    'unknown'
  end
end

#power_offObject

Power off all VMs in the vApp.



95
96
97
98
99
100
101
102
103
104
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 95

def power_off
  requires :id
  begin
    response = service.post_power_off_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#power_onObject

Power on all VMs in the vApp.



107
108
109
110
111
112
113
114
115
116
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 107

def power_on
  requires :id
  begin
    response = service.post_power_on_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#rebootObject

Reboot all VMs in the vApp.



119
120
121
122
123
124
125
126
127
128
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 119

def reboot
  requires :id
  begin
    response = service.post_reboot_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#resetObject

Reset all VMs in the vApp.



131
132
133
134
135
136
137
138
139
140
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 131

def reset
  requires :id
  begin
    response = service.post_reset_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#shutdownObject

Shut down all VMs in the vApp.



143
144
145
146
147
148
149
150
151
152
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 143

def shutdown
  requires :id
  begin
    response = service.post_shutdown_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#suspendObject

Suspend all VMs in the vApp.



155
156
157
158
159
160
161
162
163
164
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 155

def suspend
  requires :id
  begin
    response = service.post_suspend_vapp(id)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#tagsObject



43
44
45
46
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 43

def tags
  requires :id
  service.tags(:vm => self)
end

#undeploy(action = 'powerOff') ⇒ Object

  • powerOff (Power off the virtual machines. This is the default action if this attribute is missing or empty)

  • suspend (Suspend the virtual machines)

  • shutdown (Shut down the virtual machines)

  • force (Attempt to power off the virtual machines. Failures in undeploying the virtual machine or associated networks are ignored. All references to the vApp and its virtual machines are removed from the database)

  • default (Use the actions, order, and delay specified in the StartupSection)

Parameters:

  • action (String) (defaults to: 'powerOff')

    The specified action is applied to all virtual machines in the vApp. All values other than default ignore actions, order, and delay specified in the StartupSection. One of:



84
85
86
87
88
89
90
91
92
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 84

def undeploy(action='powerOff')
  begin
    response = service.post_undeploy_vapp(id, :UndeployPowerAction => action)
  rescue Fog::VcloudDirector::Compute::BadRequest => ex
    Fog::Logger.debug(ex.message)
    return false
  end
  service.process_task(response.body)
end

#vms(force: false) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/fog/vcloud_director/models/compute/vapp.rb', line 34

def vms(force: false)
  # Return memorized Collection that we parsed based on vApp XML description. This way we prevent
  # additional API request to be made for each VM in a vApp.
  return @vms unless @vms.nil? || force

  requires :id
  service.vms(:vapp => self)
end