class Rackspace::AutoScale

Public Class Methods

new() click to toggle source
# File lib/capistrano/rackspace.rb, line 46
def initialize
  @config = Configuration.instantiate
  @autoscale_service = Fog::Rackspace::AutoScale.new(@config.common)
  @compute_service = Fog::Compute.new(@config.compute)
end

Public Instance Methods

addresses() click to toggle source
# File lib/capistrano/rackspace.rb, line 52
def addresses
  @server_addresses_public ||= addresses_by_type('public')
end
private_addresses() click to toggle source
# File lib/capistrano/rackspace.rb, line 56
def private_addresses
  @server_addresses_private ||= addresses_by_type('private')
end

Private Instance Methods

addresses_by_type(type) click to toggle source
# File lib/capistrano/rackspace.rb, line 62
def addresses_by_type(type)
  server_ids.map { |id| @compute_service.servers.get id }
            .flat_map { |h| h.addresses[type] } # only the type we want (private|public)
            .select { |iface| iface['version'] == 4 }
            .map { |iface| iface["addr"] }
end
server_ids() click to toggle source
# File lib/capistrano/rackspace.rb, line 69
def server_ids
  @autoscale_service.groups
                    .find { |g| g.group_config.name == @config.autoscale_group }
                    .state['active']
                    .map { |h| h['id'] }
end