From 7a8bed4764490e879bdba1954d92a0cb56c3134d Mon Sep 17 00:00:00 2001 From: Bronagh Sorota Date: Tue, 28 Feb 2017 14:35:31 -0500 Subject: [PATCH] Gather AWS labels and create CustomAttributes --- .../amazon/cloud_manager/refresh_parser.rb | 19 ++++++++++++++++++- .../amazon/aws_refresher_spec_common.rb | 9 +++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/models/manageiq/providers/amazon/cloud_manager/refresh_parser.rb b/app/models/manageiq/providers/amazon/cloud_manager/refresh_parser.rb index 66716d510..bb546ba62 100644 --- a/app/models/manageiq/providers/amazon/cloud_manager/refresh_parser.rb +++ b/app/models/manageiq/providers/amazon/cloud_manager/refresh_parser.rb @@ -185,6 +185,7 @@ def parse_image(image, is_public) :vendor => "amazon", :raw_power_state => "never", :template => true, + :labels => parse_labels(image.tags), # the is_public flag here avoids having to make an additional API call # per image, since we already know whether it's a public image :publicly_available => is_public, @@ -231,7 +232,7 @@ def parse_instance(instance) :vendor => "amazon", :raw_power_state => status, :boot_time => instance.launch_time, - + :labels => parse_labels(instance.tags), :hardware => { :bitness => architecture_to_bitness(instance.architecture), :virtualization_type => instance.virtualization_type, @@ -387,4 +388,20 @@ def parse_stack_resource(resource) } return uid, new_result end + + def parse_labels(tags) + result = [] + return result if tags.empty? + tags.each do |tag| + custom_attr = { + :section => 'labels', + :name => tag[:key], + :value => tag[:value], + :source => 'amazon' + } + result << custom_attr + end + + result + end end diff --git a/spec/models/manageiq/providers/amazon/aws_refresher_spec_common.rb b/spec/models/manageiq/providers/amazon/aws_refresher_spec_common.rb index ce149f188..72c6f0365 100644 --- a/spec/models/manageiq/providers/amazon/aws_refresher_spec_common.rb +++ b/spec/models/manageiq/providers/amazon/aws_refresher_spec_common.rb @@ -31,7 +31,7 @@ def expected_table_counts :availability_zone => 5, :cloud_network => 5, :cloud_subnet => 10, - :custom_attribute => 0, + :custom_attribute => 43, :disk => 44, :ext_management_system => 4, :firewall_rule => 119, @@ -336,7 +336,7 @@ def assert_specific_vm_powered_on :cpu_reserve_expand => nil, :cpu_limit => nil, :cpu_shares => nil, - :cpu_shares_level => nil + :cpu_shares_level => nil, ) expect(v.ext_management_system).to eq(@ems) @@ -358,7 +358,7 @@ def assert_specific_vm_powered_on .to match_array [sg_2, @sg] expect(v.operating_system).to be_nil # TODO: This should probably not be nil - expect(v.custom_attributes.size).to eq(0) + expect(v.custom_attributes.size).to eq(1) expect(v.snapshots.size).to eq(0) expect(v.hardware).to have_attributes( @@ -403,6 +403,7 @@ def assert_specific_vm_powered_on v.with_relationship_type("genealogy") do expect(v.parent).to eq(@template) end + expect(v.custom_attributes.find_by(:name => "Name").value).to eq("EmsRefreshSpec-PoweredOn-Basic3") end def assert_specific_vm_powered_off @@ -443,7 +444,7 @@ def assert_specific_vm_powered_off expect(v.cloud_subnet).to be_nil expect(v.security_groups).to match_array([@sg]) expect(v.operating_system).to be_nil # TODO: This should probably not be nil - expect(v.custom_attributes.size).to eq(0) + expect(v.custom_attributes.size).to eq(1) expect(v.snapshots.size).to eq(0) expect(v.hardware).to have_attributes(