Class: Fog::Parsers::Terremark::Shared::Vapp

Inherits:
Base
  • Object
show all
Defined in:
lib/fog/terremark/parsers/shared/vapp.rb

Instance Attribute Summary

Attributes inherited from Base

#response

Instance Method Summary collapse

Methods inherited from Base

#attr_value, #characters, #initialize, #value

Constructor Details

This class inherits a constructor from Fog::Parsers::Base

Instance Method Details

#end_element(name) ⇒ Object

[View source]

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/fog/terremark/parsers/shared/vapp.rb', line 39

def end_element(name)
  case name
  when 'IpAddress'
    @response['IpAddress'] = value
  when 'Description'
    if @in_operating_system
      @response['OperatingSystem'][name] = value
      @in_operating_system = false
    end
  when 'ResourceType'
    @resource_type = value
    case value
    when '3'
      @get_cpu = true # cpu
    when '4'  # memory
      @get_ram = true
    when '17' # disks
      @get_disks = true
    end
  when 'VirtualQuantity'
    case @resource_type
    when '3'
      @response['VirtualHardware']['cpu'] = value
    when '4'
      @response['VirtualHardware']['ram'] = value
    when '17'
      @response['VirtualHardware']['disks'] ||= []
      @response['VirtualHardware']['disks'] << value
    end
  end
end

#resetObject

[View source]

8
9
10
11
12
# File 'lib/fog/terremark/parsers/shared/vapp.rb', line 8

def reset
  @response = { 'Links' => [], 'VirtualHardware' => {}, 'OperatingSystem' => {} }
  @in_operating_system = false
  @resource_type = nil
end

#start_element(name, attributes) ⇒ Object

[View source]

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fog/terremark/parsers/shared/vapp.rb', line 14

def start_element(name, attributes)
  super
  case name
    when 'Link'
      link = {}
      until attributes.empty?
        link[attributes.shift] = attributes.shift
      end
      @response['Links'] << link
    when 'OperatingSystemSection'
      @in_operating_system = true
   when 'VApp'
      vapp = {}
      until attributes.empty?
        if attributes.first.is_a?(Array)
          attribute = attributes.shift
          vapp[attribute.first] = attribute.last
        else
          vapp[attributes.shift] = attributes.shift
        end
      end
      @response.merge!(vapp.reject {|key,value| !['href', 'name', 'size', 'status', 'type'].include?(key)})
   end
end