File: describe_instance_status.rb

package info (click to toggle)
ruby-fog-aws 3.3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,816 kB
  • sloc: ruby: 68,587; makefile: 6
file content (73 lines) | stat: -rw-r--r-- 2,215 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
70
71
72
73
module Fog
  module Parsers
    module AWS
      module Compute
        class DescribeInstanceStatus < Fog::Parsers::Base
          def new_instance!
            @instance = { 'instanceState' => {}, 'systemStatus' => { 'details' => [] }, 'instanceStatus' => { 'details' => [] }, 'eventsSet' => [] }
          end

          def new_item!
            @item = {}
          end

          def reset
            @response = { 'instanceStatusSet' => [] }
            @inside = nil
          end

          def start_element(name, attrs=[])
            super
            case name
            when 'item'
              if @inside
                new_item!
              else
                new_instance!
              end
            when 'systemStatus'
              @inside = :systemStatus
            when 'instanceState'
              @inside = :instanceState
            when 'instanceStatus'
              @inside = :instanceStatus
            when 'eventsSet'
              @inside = :eventsSet
            end
          end

          def end_element(name)
            case name
            #Simple closers
            when 'instanceId', 'availabilityZone'
              @instance[name] = value
            when 'nextToken', 'requestId'
              @response[name] = value
            when 'systemStatus', 'instanceState', 'instanceStatus', 'eventsSet'
              @inside = nil
            when 'item'
              case @inside
              when :eventsSet
                @instance['eventsSet'] << @item
              when :systemStatus, :instanceStatus
                @instance[@inside.to_s]['details'] << @item
              when nil
                @response['instanceStatusSet'] << @instance
              end
              @item = nil
            when 'code'
              case @inside
              when :eventsSet
                @item[name] = value
              when :instanceState
                @instance[@inside.to_s][name] = value.to_i
              end
            when 'description', 'notBefore', 'notAfter', 'name', 'status'
              @item.nil? ? (@instance[@inside.to_s][name] = value) : (@item[name] = value)
            end
          end
        end
      end
    end
  end
end