Class: Miasma::Models::AutoScale::Aws

Inherits:
Miasma::Models::AutoScale show all
Includes:
Contrib::AwsApiCore::ApiCommon, Contrib::AwsApiCore::RequestUtils
Defined in:
lib/miasma/contrib/aws/auto_scale.rb

Overview

AWS autoscaling API

Constant Summary collapse

API_SERVICE =

Service name of the API

"autoscaling".freeze
API_VERSION =

Supported version of the AutoScaling API

"2011-01-01".freeze

Instance Method Summary collapse

Methods included from Contrib::AwsApiCore::RequestUtils

#all_result_pages

Methods included from Contrib::AwsApiCore::ApiCommon

#after_setup, #api_for, #connect, #connection, #custom_setup, #endpoint, #extract_creds, #get_credential, #get_region, included, #load_aws_file, #load_ecs_credentials!, #load_instance_credentials!, #make_request, #perform_request_retry, #retryable_allowed?, #signer, #sts_assume_role!, #sts_assume_role_update_required?, #sts_attribute_update_required?, #sts_mfa_session!, #sts_mfa_session_update_required?, #update_request, #uri_escape

Instance Method Details

#group_all(options = {}) ⇒ Array<Models::AutoScale::Group>

Return all auto scale groups

Parameters:

  • options (Hash) (defaults to: {})

    filter

Returns:

  • (Array<Models::AutoScale::Group>)


84
85
86
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 84

def group_all(options = {})
  load_group_data
end

#group_destroy(group) ⇒ TrueClass, FalseClass

Delete auto scale group

Parameters:

  • group (Models::AutoScale::Group)

Returns:

  • (TrueClass, FalseClass)

Raises:

  • (NotImplemented)


40
41
42
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 40

def group_destroy(group)
  raise NotImplemented
end

#group_reload(group) ⇒ Models::AutoScale::Group

Reload the group data from the API

Parameters:

  • group (Models::AutoScale::Group)

Returns:

  • (Models::AutoScale::Group)


29
30
31
32
33
34
# 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) ⇒ Models::AutoScale::Group

Save auto scale group

Parameters:

  • group (Models::AutoScale::Group)

Returns:

  • (Models::AutoScale::Group)

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 21

def group_save(group)
  raise NotImplementedError
end

#load_group_data(group = nil) ⇒ Array<Models::AutoScale::Group>

Fetch groups or update provided group data

Parameters:

  • group (Models::AutoScale::Group) (defaults to: nil)

Returns:

  • (Array<Models::AutoScale::Group>)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 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