Sha256: 4d3f4b3a395d429db9edfcefd4446de751f30c976c75f5a18e24a330b662956c

Contents?: true

Size: 2 KB

Versions: 5

Compression:

Stored size: 2 KB

Contents

module Fog
  module Parsers
    module Compute
      module AWS
        class DescribeVolumeStatus < Fog::Parsers::Base

          def new_volume
            @volume = { 'volumeStatus' => { 'details' => [] }, 'eventSet' => {}, 'actionSet' => {} }
          end

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

          def start_element(name, attrs=[])
            super
            case name
            when 'item'
              new_volume if @inside.nil?
            when 'volumeStatus'
              @inside = :volume_status
            when 'details'
              @inside = :details
            when 'eventSet'
              @inside = :event
            when 'actionSet'
              @inside = :action
            end
          end

          def end_element(name)
            case name
            #Simple closers
            when 'details'
              @inside = nil
            when 'volumeStatus'
              @inside = nil
            when 'eventSet'
              @inside = nil
            when 'actionSet'
              @inside = nil
            when 'item'
              @response['volumeStatusSet'] << @volume if @inside.nil?
            #Top level
            when 'nextToken', 'requestId'
              @response[name] = value
            # Volume Stuff
            when 'volumeId', 'availabilityZone'
              @volume[name] = value
            #The mess...
            when 'name', 'status'
              case @inside
              when :details
                @volume['volumeStatus']['details'] << {name => value }
              when :volume_status
                @volume['volumeStatus'][name] = value
              end
            when 'code', 'eventId', 'eventType', 'description'
              @volume["#{@inside}Set"][name] = value.strip
            when 'notAfter', 'notBefore'
              @volume["#{@inside}Set"][name] = Time.parse(value)
            end
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 3 rubygems

Version Path
michiels-fog-1.3.1 lib/fog/aws/parsers/compute/describe_volume_status.rb
ftl-0.2.0 vendor/bundle/gems/fog-1.3.1/lib/fog/aws/parsers/compute/describe_volume_status.rb
fog-1.3.1 lib/fog/aws/parsers/compute/describe_volume_status.rb
fog-1.3.0 lib/fog/aws/parsers/compute/describe_volume_status.rb
fog-1.2.0 lib/fog/aws/parsers/compute/describe_volume_status.rb