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/parsers/auto_scaling/describe_launch_configurations.rb
Wesley Beary 5d14fc9ae2 Merge pull request #29 from benpillet/master
Add PlacementTenancy to launch configuration parser and test case
2015-01-25 18:07:21 -06:00

102 lines
3.6 KiB
Ruby

module Fog
module Parsers
module AWS
module AutoScaling
class DescribeLaunchConfigurations < Fog::Parsers::Base
def reset
reset_launch_configuration
reset_block_device_mapping
reset_ebs
@results = { 'LaunchConfigurations' => [] }
@response = { 'DescribeLaunchConfigurationsResult' => {}, 'ResponseMetadata' => {} }
end
def reset_launch_configuration
@launch_configuration = { 'BlockDeviceMappings' => [], 'InstanceMonitoring' => {}, 'SecurityGroups' => [], 'ClassicLinkVPCSecurityGroups' => []}
end
def reset_block_device_mapping
@block_device_mapping = {}
end
def reset_ebs
@ebs = {}
end
def start_element(name, attrs = [])
super
case name
when 'BlockDeviceMappings'
@in_block_device_mappings = true
when 'SecurityGroups'
@in_security_groups = true
when 'ClassicLinkVPCSecurityGroups'
@in_classic_link_security_groups = true
end
end
def end_element(name)
case name
when 'member'
if @in_block_device_mappings
@launch_configuration['BlockDeviceMappings'] << @block_device_mapping
reset_block_device_mapping
elsif @in_security_groups
@launch_configuration['SecurityGroups'] << value
elsif @in_classic_link_security_groups
@launch_configuration['ClassicLinkVPCSecurityGroups'] << value
else
@results['LaunchConfigurations'] << @launch_configuration
reset_launch_configuration
end
when 'DeviceName', 'VirtualName'
@block_device_mapping[name] = value
when 'SnapshotId', 'VolumeSize', 'VolumeType', 'Iops'
@ebs[name] = value
when 'Ebs'
@block_device_mapping[name] = @ebs
reset_ebs
when 'Enabled'
@launch_configuration['InstanceMonitoring'][name] = (value == 'true')
when 'CreatedTime'
@launch_configuration[name] = Time.parse(value)
when 'ImageId', 'InstanceType', 'KeyName'
@launch_configuration[name] = value
when 'LaunchConfigurationARN', 'LaunchConfigurationName', 'ClassicLinkVPCId'
@launch_configuration[name] = value
when 'KernelId', 'RamdiskId', 'UserData'
@launch_configuration[name] = value
when 'IamInstanceProfile', 'PlacementTenancy'
@launch_configuration[name] = value
when 'SpotPrice'
@launch_configuration[name] = value.to_f
when 'AssociatePublicIpAddress'
@in_associate_public_ip = false
when 'BlockDeviceMappings'
@in_block_device_mappings = false
when 'LaunchConfigurations'
@in_launch_configurations = false
when 'SecurityGroups'
@in_security_groups = false
when 'ClassicLinkVPCSecurityGroups'
@in_classic_link_security_groups = false
when 'NextToken'
@results[name] = value
when 'RequestId'
@response['ResponseMetadata'][name] = value
when 'DescribeLaunchConfigurationsResponse'
@response['DescribeLaunchConfigurationsResult'] = @results
end
end
end
end
end
end
end