lib/miam/client.rb in miam-0.2.2.beta3 vs lib/miam/client.rb in miam-0.2.2.beta4

- old
+ new

@@ -257,10 +257,12 @@ walk_policies(:role, role_name, expected_attrs[:policies], actual_attrs[:policies]) || updated end def walk_assume_role_policy(role_name, expected_assume_role_policy, actual_assume_role_policy) updated = false + expected_assume_role_policy = recursively_sort_arrays_and_hashes(expected_assume_role_policy) + actual_assume_role_policy = recursively_sort_arrays_and_hashes(actual_assume_role_policy) if expected_assume_role_policy != actual_assume_role_policy @driver.update_assume_role_policy(role_name, expected_assume_role_policy, actual_assume_role_policy) updated = true end @@ -467,10 +469,21 @@ format_proc = proc_by_format[@options[:format]] raise "Invalid format: #{@options[:format]}" unless format_proc format_proc.call end + def recursively_sort_arrays_and_hashes(obj) + case obj + when Array + obj.map!{|v| recursively_sort_arrays_and_hashes(v)}.sort_by!{|v| (v.to_s rescue nil) } + when Hash + obj = Hash[Hash[obj.map{|k,v| [recursively_sort_arrays_and_hashes(k),recursively_sort_arrays_and_hashes(v)]}].sort_by{|k,v| [(k.to_s rescue nil), (v.to_s rescue nil)]}] + else + obj + end + end + def load_json(json) json = JSON.load(json) normalized = {} json.each do |top_key, top_value| @@ -490,9 +503,10 @@ second_attrs[third_key] = third_value end end end + normalized end end