mirror of
				https://github.com/fog/fog.git
				synced 2022-11-09 13:51:43 -05:00 
			
		
		
		
	[aws|compute] Update API version and support new DescribeInstanceStatus format.
This commit is contained in:
		
							parent
							
								
									cbd2a4e1dd
								
							
						
					
					
						commit
						4f80cfe8d7
					
				
					 3 changed files with 79 additions and 32 deletions
				
			
		| 
						 | 
				
			
			@ -299,7 +299,7 @@ module Fog
 | 
			
		|||
              :host               => @host,
 | 
			
		||||
              :path               => @path,
 | 
			
		||||
              :port               => @port,
 | 
			
		||||
              :version            => '2011-11-01'
 | 
			
		||||
              :version            => '2011-12-15'
 | 
			
		||||
            }
 | 
			
		||||
          )
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,56 +5,89 @@ module Fog
 | 
			
		|||
        class DescribeInstanceStatus < Fog::Parsers::Base
 | 
			
		||||
 | 
			
		||||
          def new_instance
 | 
			
		||||
            @instance = { 'eventsSet' => [], 'instanceState' => {} }
 | 
			
		||||
            @instance = { 'instanceState' => {}, 'systemStatus' => { 'details' => [] }, 'instanceStatus' => { 'details' => [] }, 'event' => {} }
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          def new_event
 | 
			
		||||
            @event = {}
 | 
			
		||||
          def new_item
 | 
			
		||||
            @item = {}
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          def reset
 | 
			
		||||
            @instance_status = {}
 | 
			
		||||
            @response = { 'instanceStatusSet' => [] }
 | 
			
		||||
            @in_events_set = false
 | 
			
		||||
            new_event
 | 
			
		||||
            @in_system_status = false
 | 
			
		||||
            @in_details = false
 | 
			
		||||
            @in_event = false
 | 
			
		||||
            new_instance
 | 
			
		||||
            new_item
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          def start_element(name, attrs=[])
 | 
			
		||||
            super
 | 
			
		||||
            case name
 | 
			
		||||
            when 'eventsSet'
 | 
			
		||||
              @in_events_set = true
 | 
			
		||||
            when 'systemStatus'
 | 
			
		||||
              @in_system_status = true
 | 
			
		||||
            when 'instanceStatus'
 | 
			
		||||
              @in_instance_status = true
 | 
			
		||||
            when 'details'
 | 
			
		||||
              @in_details = true
 | 
			
		||||
            when 'event'
 | 
			
		||||
              @in_event = true
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          def end_element(name)
 | 
			
		||||
            if @in_events_set
 | 
			
		||||
              case name
 | 
			
		||||
              when 'code', 'description'
 | 
			
		||||
                @event[name] = value
 | 
			
		||||
              when 'notAfter', 'notBefore'
 | 
			
		||||
                @event[name] = Time.parse(value)
 | 
			
		||||
              when 'item'
 | 
			
		||||
                @instance['eventsSet'] << @event
 | 
			
		||||
                new_event
 | 
			
		||||
              when 'eventsSet'
 | 
			
		||||
                @in_events_set = false
 | 
			
		||||
              end
 | 
			
		||||
            else
 | 
			
		||||
              case name
 | 
			
		||||
              when 'instanceId', 'availabilityZone'
 | 
			
		||||
                @instance[name] = value
 | 
			
		||||
              when 'name', 'code'
 | 
			
		||||
            case name
 | 
			
		||||
            when 'name'
 | 
			
		||||
              if @in_details
 | 
			
		||||
                @item[name] = value
 | 
			
		||||
              else
 | 
			
		||||
                @instance['instanceState'][name] = value
 | 
			
		||||
              when 'item'
 | 
			
		||||
              end
 | 
			
		||||
            when 'status'
 | 
			
		||||
              if @in_details
 | 
			
		||||
                @item[name] = value
 | 
			
		||||
              elsif @in_system_status
 | 
			
		||||
                @instance['systemStatus'][name] = value
 | 
			
		||||
              elsif @in_instance_status
 | 
			
		||||
                @instance['instanceStatus'][name] = value
 | 
			
		||||
              end
 | 
			
		||||
            when 'details'
 | 
			
		||||
              @in_details = false
 | 
			
		||||
            when 'item'
 | 
			
		||||
              if @in_system_status
 | 
			
		||||
                @instance['systemStatus']['details'] << @item
 | 
			
		||||
              elsif @in_instance_status
 | 
			
		||||
                @instance['instanceStatus']['details'] << @item
 | 
			
		||||
              else
 | 
			
		||||
                @response['instanceStatusSet'] << @instance
 | 
			
		||||
                new_instance
 | 
			
		||||
              when 'requestId'
 | 
			
		||||
                @response[name] = value
 | 
			
		||||
 | 
			
		||||
              end
 | 
			
		||||
              new_item
 | 
			
		||||
            when 'instanceStatus'
 | 
			
		||||
              @in_instance_status = false
 | 
			
		||||
            when 'systemStatus'
 | 
			
		||||
              @in_system_status = false
 | 
			
		||||
            when 'code'
 | 
			
		||||
              if @in_event
 | 
			
		||||
                @instance['event'][name] = value.strip
 | 
			
		||||
              else
 | 
			
		||||
                @instance['instanceState'][name] = value
 | 
			
		||||
              end
 | 
			
		||||
            when 'description'
 | 
			
		||||
              if @in_event
 | 
			
		||||
                @instance['event'][name] = value.strip
 | 
			
		||||
              end
 | 
			
		||||
            when 'notAfter', 'notBefore'
 | 
			
		||||
              if @in_event
 | 
			
		||||
                @instance['event'][name] = Time.parse(value)
 | 
			
		||||
              end
 | 
			
		||||
            when 'event'
 | 
			
		||||
              @in_event = false
 | 
			
		||||
            when 'instanceId', 'availabilityZone'
 | 
			
		||||
              @instance[name] = value
 | 
			
		||||
            when 'requestId'
 | 
			
		||||
              @response[name] = value
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,12 +131,26 @@ Shindo.tests('Fog::Compute[:aws] | instance requests', ['aws']) do
 | 
			
		|||
                                'code' => Integer,
 | 
			
		||||
                                'name' => String
 | 
			
		||||
                              },
 | 
			
		||||
                              'eventsSet' => [{
 | 
			
		||||
                              'systemStatus' => {
 | 
			
		||||
                                'status' => String,
 | 
			
		||||
                                'details' => [{
 | 
			
		||||
                                  'name' => String,
 | 
			
		||||
                                  'status' => String
 | 
			
		||||
                                }]
 | 
			
		||||
                              },
 | 
			
		||||
                              'instanceStatus' => {
 | 
			
		||||
                                'status' => String,
 | 
			
		||||
                                'details' => [{
 | 
			
		||||
                                  'name' => String,
 | 
			
		||||
                                  'status' => String
 | 
			
		||||
                                }]
 | 
			
		||||
                              },
 | 
			
		||||
                              'event' => {
 | 
			
		||||
                                                'code' => String,
 | 
			
		||||
                                                'description' => String,
 | 
			
		||||
                                                'notBefore' => Time,
 | 
			
		||||
                                                'notAfter' => Time
 | 
			
		||||
                                              }]
 | 
			
		||||
                                              }
 | 
			
		||||
                            }]
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue