Class: Miasma::Models::AutoScale::Rackspace

Inherits:
Miasma::Models::AutoScale show all
Includes:
Contrib::RackspaceApiCore::ApiCommon
Defined in:
lib/miasma/contrib/rackspace/auto_scale.rb

Instance Method Summary collapse

Methods included from Contrib::RackspaceApiCore::ApiCommon

included, #open_stack_api

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:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/miasma/contrib/rackspace/auto_scale.rb', line 64

def group_all(options={})
  result = request(
    :method => :get,
    :path => '/groups',
    :expects => 200
  )
  result.fetch(:body, 'groups', []).map do |lb|
    Group.new(
      self,
      :id => lb[:id],
      :name => lb.get(:state, :name),
      :current_size => lb.get(:state, 'activeCapacity'),
      :desired_size => lb.get(:state, 'desiredCapacity')
    ).valid_state
  end
end

#group_destroy(group) ⇒ TrueClass, FalseClass

Delete auto scale group

Parameters:

Returns:

  • (TrueClass, FalseClass)


47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/miasma/contrib/rackspace/auto_scale.rb', line 47

def group_destroy(group)
  if(group.persisted?)
    request(
      :path => "/groups/#{group.id}",
      :method => :delete,
      :expects => 204
    )
    true
  else
    false
  end
end

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

Reload the group data from the API

Parameters:

Returns:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/miasma/contrib/rackspace/auto_scale.rb', line 22

def group_reload(group)
  if(group.persisted?)
    result = request(
      :method => :get,
      :path => "/groups/#{group.id}",
      :expects => 200
    )
    grp = result.get(:body, :group)
    group.load_data(
      :name => grp.get('groupConfiguration', :name),
      :minimum_size => grp.get('groupConfiguration', 'minEntities'),
      :maximum_size => grp.get('groupConfiguration', 'maxEntities'),
      :desired_size => grp.get(:state, 'desiredCapacity'),
      :current_size => grp.get(:state, 'activeCapacity'),
      :servers => grp.get(:state, :active).map{|s| AutoScale::Group::Server.new(self, :id => s[:id])}
    ).valid_state
  else
    group
  end
end

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

Save auto scale group

Parameters:

Returns:

Raises:

  • (NotImplementedError)


14
15
16
# File 'lib/miasma/contrib/rackspace/auto_scale.rb', line 14

def group_save(group)
  raise NotImplementedError
end