File: describe_load_balancers.rb

package info (click to toggle)
ruby-fog-aws 3.18.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,140 kB
  • sloc: ruby: 73,328; javascript: 14; makefile: 9; sh: 4
file content (88 lines) | stat: -rw-r--r-- 3,033 bytes parent folder | download | duplicates (3)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
module Fog
  module Parsers
    module AWS
      module ELBV2
        class DescribeLoadBalancers < Fog::Parsers::Base
          def reset
            reset_load_balancer
            reset_availability_zone
            @load_balancer_addresses = {}
            @state = {}
            @results = { 'LoadBalancers' => [] }
            @response = { 'DescribeLoadBalancersResult' => {}, 'ResponseMetadata' => {} }
          end

          def reset_load_balancer
            @load_balancer = { 'SecurityGroups' => [], 'AvailabilityZones' => [] }
          end

          def reset_availability_zone
            @availability_zone = { 'LoadBalancerAddresses' => [] }
          end

          def start_element(name, attrs = [])
            super
            case name
            when 'AvailabilityZones'
              @in_availability_zones = true
            when 'LoadBalancerAddresses'
              @in_load_balancer_addresses = true
            when 'SecurityGroups'
              @in_security_groups = true
            when 'State'
              @in_state = true
            end
          end

          def end_element(name)
            case name
            when 'member'
              if @in_availability_zones && @in_load_balancer_addresses
                @availability_zone['LoadBalancerAddresses'] << @load_balancer_addresses
              elsif @in_availability_zones
                @load_balancer['AvailabilityZones'] << @availability_zone
                reset_availability_zone
              elsif @in_security_groups
                @load_balancer['SecurityGroups'] << value
              else
                @results['LoadBalancers'] << @load_balancer
                reset_load_balancer
              end
            when 'SubnetId', 'ZoneName'
              @availability_zone[name] = value
            when 'IpAddress', 'AllocationId'
              @load_balancer_addresses[name] = value

            when 'CanonicalHostedZoneName', 'CanonicalHostedZoneNameID', 'LoadBalancerName', 'DNSName', 'Scheme', 'Type',
                 'LoadBalancerArn', 'IpAddressType', 'CanonicalHostedZoneId', 'VpcId'
              @load_balancer[name] = value
            when 'CreatedTime'
              @load_balancer[name] = Time.parse(value)

            when 'LoadBalancerAddresses'
              @in_load_balancer_addresses = false
            when 'AvailabilityZones'
              @in_availability_zones = false
            when 'SecurityGroups'
              @in_security_groups = false
            when 'State'
              @in_state = false
              @load_balancer[name] = @state
              @state = {}
            when 'Code'
              @state[name] = value

            when 'RequestId'
              @response['ResponseMetadata'][name] = value

            when 'NextMarker'
              @results['NextMarker'] = value
            when 'DescribeLoadBalancersResponse'
              @response['DescribeLoadBalancersResult'] = @results
            end
          end
        end
      end
    end
  end
end