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

Constant Summary collapse

API_SERVICE =

Service name of the API

'autoscaling'
API_VERSION =

Supported version of the AutoScaling API

'2011-01-01'

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, included, #load_aws_file, #load_instance_credentials!, #make_request, #perform_request_retry, #retryable_allowed?, #sts_assume_role!, #sts_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>)


80
81
82
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 80

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)


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

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)


28
29
30
31
32
33
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 28

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)


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

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>)


47
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
# File 'lib/miasma/contrib/aws/auto_scale.rb', line 47

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