class Miasma::Models::AutoScale::Aws
AWS autoscaling API
Constants
- API_SERVICE
Service name of the API
- API_VERSION
Supported version of the AutoScaling API
Public Instance Methods
group_all(options = {})
click to toggle source
Return all auto scale groups
@param options [Hash] filter @return [Array<Models::AutoScale::Group>]
# File lib/miasma/contrib/aws/auto_scale.rb, line 84 def group_all(options = {}) load_group_data end
group_destroy(group)
click to toggle source
Delete auto scale group
@param group [Models::AutoScale::Group] @return [TrueClass, FalseClass]
# File lib/miasma/contrib/aws/auto_scale.rb, line 40 def group_destroy(group) raise NotImplemented end
group_reload(group)
click to toggle source
Reload the group data from the API
@param group [Models::AutoScale::Group] @return [Models::AutoScale::Group]
# File lib/miasma/contrib/aws/auto_scale.rb, line 29 def group_reload(group) if group.id || group.name load_group_data(group) end group end
group_save(group)
click to toggle source
Save auto scale group
@param group [Models::AutoScale::Group] @return [Models::AutoScale::Group]
# File lib/miasma/contrib/aws/auto_scale.rb, line 21 def group_save(group) raise NotImplementedError end
load_group_data(group = nil)
click to toggle source
Fetch groups or update provided group data
@param group [Models::AutoScale::Group] @return [Array<Models::AutoScale::Group>]
# File lib/miasma/contrib/aws/auto_scale.rb, line 48 def load_group_data(group = nil) params = Smash.new("Action" => "DescribeAutoScalingGroups") if group params.merge("AutoScalingGroupNames.member.1" => group.id || group.name) end result = all_result_pages(nil, :body, "DescribeAutoScalingGroupsResponse", "DescribeAutoScalingGroupsResult", "AutoScalingGroups", "member") do |options| request( :method => :post, :path => "/", :form => options.merge(params), ) end.map do |grp| (group || Group.new(self)).load_data( :id => grp["AutoScalingGroupName"], :name => grp["AutoScalingGroupName"], :servers => [grp.get("Instances", "member")].flatten(1).compact.map { |i| Group::Server.new(self, :id => i["InstanceId"]) }, :minimum_size => grp["MinSize"], :maximum_size => grp["MaxSize"], :status => grp["Status"], :load_balancers => [ grp.get("LoadBalancerNames", "member"), ].flatten(1).compact.map { |i| Group::Balancer.new(self, :id => i, :name => i) }, ).valid_state end end