1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/requests/compute/describe_instance_attribute.rb

87 lines
4.2 KiB
Ruby

module Fog
module Compute
class AWS
class Real
require 'fog/aws/parsers/compute/describe_instance_attribute'
# Describes an instance attribute value
#
# ==== Parameters
# * instance_id<~String> - The ID of the instance you want to describe an attribute of
# * attribute<~String> - The attribute to describe, must be one of the following:
# -'instanceType'
# -'kernel'
# -'ramdisk'
# -'userData'
# -'disableApiTermination'
# -'instanceInitiatedShutdownBehavior'
# -'rootDeviceName'
# -'blockDeviceMapping'
# -'productCodes'
# -'sourceDestCheck'
# -'groupSet'
# -'ebsOptimized'
# -'sriovNetSupport'
#
# === Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'requestId'<~String> - Id of request
# * 'instanceId'<~String> - The ID of the instance
# * 'instanceType'<~String> - Instance type
# * 'kernelId'<~String> - The kernel ID
# * 'ramdiskId'<~String> - The RAM disk ID
# * 'userData'<~String> - The Base64-encoded MIME user data
# * 'disableApiTermination'<~Boolean> - If the value is true , you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.
# * 'instanceInitiatedShutdownBehavior'<~String> - Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown)
# * 'rootDeviceName'<~String> - The name of the root device (for example, /dev/sda1 or /dev/xvda )
# * 'blockDeviceMapping'<~List> - The block device mapping of the instance
# * 'productCodes'<~List> - A list of product codes
# * 'ebsOptimized'<~Boolean> - Indicates whether the instance is optimized for EBS I/O
# * 'sriovNetSupport'<~String> - The value to use for a resource attribute
# * 'sourceDestCheck'<~Boolean> - Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT
# * 'groupSet'<~List> - The security groups associated with the instance
# (Amazon API Reference)[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceAttribute.html]
def describe_instance_attribute(instance_id, attribute)
request(
'Action' => 'DescribeInstanceAttribute',
'InstanceId' => instance_id,
'Attribute' => attribute,
:parser => Fog::Parsers::Compute::AWS::DescribeInstanceAttribute.new
)
end
end
class Mock
def describe_instance_attribute(instance_id, attribute)
response = Excon::Response.new
if instance = self.data[:instances].values.find{ |i| i['instanceId'] == instance_id }
response.status = 200
response.body = {
'requestId' => Fog::AWS::Mock.request_id,
'instanceId' => instance_id
}
case attribute
when 'kernel'
response.body[attribute] = instance["kernelId"]
when 'ramdisk'
response.body[attribute] = instance["ramdiskId"]
when 'disableApiTermination'
response.body[attribute] = false
when 'instanceInitiatedShutdownBehavior'
response.body['instanceInitiatedShutdownBehavior'] = 'stop'
when 'sourceDestCheck'
response.body[attribute] = true
when 'sriovNetSupport'
response.body[attribute] = 'simple'
else
response.body[attribute] = instance[attribute]
end
response
else
raise Fog::Compute::AWS::NotFound.new("The Instance '#{instance_id}' does not exist")
end
end
end
end
end
end