Sha256: 0741af40da2a117102146317cda2ce530d305008036050e35b723d823588db8e

Contents?: true

Size: 1.64 KB

Versions: 6

Compression:

Stored size: 1.64 KB

Contents

require 'fog/core/collection'
require 'fog/aws/models/compute/spot_request'

module Fog
  module Compute
    class AWS
      class SpotRequests < Fog::Collection
      
        attribute :filters
        
        model Fog::Compute::AWS::SpotRequest

        def initialize(attributes)
          self.filters ||= {}
          super
        end

        def all(filters = self.filters)
          unless filters.is_a?(Hash)
            Fog::Logger.warning("all with #{filters.class} param is deprecated, use all('spot-instance-request-id' => []) instead [light_black](#{caller.first})[/]")
            filters = {'spot-instance-request-id' => [*filters]}
          end
          self.filters = filters
          data = connection.describe_spot_instance_requests(filters).body
          load(
            data['spotInstanceRequestSet'].map do |spot_instance_request|
              spot_instance_request['LaunchSpecification.Placement.AvailabilityZone'] = spot_instance_request['launchedAvailabilityZone']
              spot_instance_request['launchSpecification'].each do |name,value|
                spot_instance_request['LaunchSpecification.' + name[0,1].upcase + name[1..-1]] = value
              end
              spot_instance_request.merge(:groups => spot_instance_request['LaunchSpecification.GroupSet'])
              spot_instance_request 
            end.flatten
          )
        end

        def get(spot_request_id)
          if spot_request_id
            self.class.new(:connection => connection).all('spot-instance-request-id' => spot_request_id).first
          end
        rescue Fog::Errors::NotFound
          nil
        end

      end
    end
  end
end

Version data entries

6 entries across 6 versions & 3 rubygems

Version Path
brightbox-cli-0.16.0 lib/brightbox-cli/vendor/fog/lib/fog/aws/models/compute/spot_requests.rb
brightbox-cli-0.15.0 lib/brightbox-cli/vendor/fog/lib/fog/aws/models/compute/spot_requests.rb
tag-fog-1.0.1 lib/fog/aws/models/compute/spot_requests.rb
brightbox-cli-0.14.1 lib/brightbox-cli/vendor/fog/lib/fog/aws/models/compute/spot_requests.rb
brightbox-cli-0.14.0 lib/brightbox-cli/vendor/fog/lib/fog/aws/models/compute/spot_requests.rb
fog-1.0.0 lib/fog/aws/models/compute/spot_requests.rb