Sha256: 981d0bd16cb174ecea525ecc9ac77b6461a0cef6db163b832932112f8239ba32
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
module Awsrm class AutoscallingGroup < Awsrm::Resource FILTER_MAP = { name: ->(value) { [value] }, tags: ->(value) { AutoscallingGroup.tags2names(value) } }.freeze class << self def one(params) res = autoscaling_client.describe_auto_scaling_groups( auto_scaling_group_names: filters(params) ) AutoscallingGroupReader.new(res.auto_scaling_groups.first) if check_one(res.auto_scaling_groups) end def all(params) res = autoscaling_client.describe_auto_scaling_groups( auto_scaling_group_names: filters(params) ) res.auto_scaling_groups.map do |as| AutoscallingGroupReader.new(as) end end def filters(params) params.map do |key, value| raise UndefinedFilterParamError, key unless self::FILTER_MAP.key?(key) next self::FILTER_MAP[key].call(value) if self::FILTER_MAP[key].is_a?(Proc) end.flatten.uniq end def tags2names(tag_hash) tags = autoscaling_client.describe_tags.tags.flatten maps = tag_hash.map do |key, value| tags.map do |tag| tag.resource_id if tag.key == key.to_s && tag.value == value.to_s end.compact end maps.reduce do |memo, item| memo & item end end end class AutoscallingGroupReader < Awsrm::ResourceReader def id @resource.auto_scaling_group_name end def arn @resource.auto_scaling_group_arn end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
awsrm-0.0.1 | lib/awsrm/autoscaling_group.rb |