class Elasticsnap::SecurityGroup

Attributes

name[RW]

Public Class Methods

new(name: nil) click to toggle source
# File lib/elasticsnap/security_group.rb, line 7
def initialize(name: nil)
  raise ArgumentError, 'name required' if name.nil?

  @name = name
end

Public Instance Methods

fog_group() click to toggle source
# File lib/elasticsnap/security_group.rb, line 33
def fog_group
  @fog_group ||= connection.security_groups.all('group-name' => name).first
end
hosts() click to toggle source
# File lib/elasticsnap/security_group.rb, line 13
def hosts
  @hosts ||= connection.servers.all('group-id' => id)
end
id() click to toggle source
# File lib/elasticsnap/security_group.rb, line 37
def id
  @id ||= fog_group.group_id
end
reload() click to toggle source
# File lib/elasticsnap/security_group.rb, line 41
def reload
  @hosts = @id = nil
end
ssh_hosts(ssh_user: nil) click to toggle source
# File lib/elasticsnap/security_group.rb, line 17
def ssh_hosts(ssh_user: nil)
  hosts.map do |host|
    if ssh_user
      "#{ssh_user}@#{host.dns_name}"
    else
      host.dns_name
    end
  end
end
volumes(cluster_name: nil) click to toggle source
# File lib/elasticsnap/security_group.rb, line 27
def volumes(cluster_name: nil)
  filters = { 'attachment.instance-id' => hosts.map(&:id) }
  filters.merge!('tag:ClusterName' => cluster_name) if cluster_name
  connection.volumes.all(filters)
end

Private Instance Methods

connection() click to toggle source
# File lib/elasticsnap/security_group.rb, line 46
def connection
  Config.fog_connection
end