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

#api_for, #connect, #connection, #endpoint, included, #make_request, #update_request, #uri_escape

Methods inherited from Miasma::Models::AutoScale

#groups

Methods inherited from Types::Api

#api_for, #connect, #connection, #endpoint, #format_response, #initialize, #make_request, #provider, #request

Methods included from Utils::Memoization

#_memo, #clear_memoizations!, #memoize, #unmemoize

Methods included from Utils::Lazy

included

Constructor Details

This class inherits a constructor from Miasma::Types::Api

Instance Method Details

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

Return all auto scale groups

Parameters:

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

    filter

Returns:



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

def group_all(options={})
  load_group_data
end

#group_destroy(group) ⇒ TrueClass, FalseClass

Delete auto scale group

Parameters:

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:

Returns:



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:

Returns:

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:

Returns:



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
# 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(
      :path => '/',
      :params => 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