Class: Rudy::AWS::EC2::Group

Inherits:
Storable
  • Object
show all
Defined in:
lib/rudy/aws/ec2/group.rb,
lib/rudy/aws/ec2/group.rb

Defined Under Namespace

Classes: Rule

Instance Method Summary collapse

Instance Method Details

#add_address(ipaddress, rule) ⇒ Object

  • ipaddress is a String, ipaddress/mask/protocol

  • rule is a Rule object



67
68
69
70
71
72
# File 'lib/rudy/aws/ec2/group.rb', line 67

def add_address(ipaddress, rule)
  return false unless rule.is_a?(Rule)
  @addresses ||= {}
  (@addresses[ipaddress] ||= []) << rule
  rule
end

#add_group(group, rule) ⇒ Object

  • group is a String, accountnum:group

  • rule is a Rule object



76
77
78
79
80
# File 'lib/rudy/aws/ec2/group.rb', line 76

def add_group(group, rule)
  return false unless rule.is_a?(Rule)
  @groups ||= {}
  (@groups[group] ||= []) << rule
end

#inspectObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/rudy/aws/ec2/group.rb', line 45

def inspect
  lines = [@name.bright]
  field_names.each do |key|
    next unless self.respond_to?(key)
    next if [:addresses, :groups].member?(key)
    val = self.send(key)
    lines << sprintf(" %12s: %s", key, (val.is_a?(Array) ? val.join(', ') : val))
  end
  @addresses.each_pair do |a,r|
    rules = r.collect { |r| r.to_s }.join(', ') if r
    lines << sprintf(" %12s: %s (%s)", 'address', a.to_s, rules)
  end
  @groups.each_pair do |g,r|
    rules = r.collect { |r| r.to_s }.join(', ')
    lines << sprintf(" %12s: %s (%s)", 'group', g.to_s, rules)
  end
  lines.join($/)
end

#liner_noteObject



27
28
29
30
31
# File 'lib/rudy/aws/ec2/group.rb', line 27

def liner_note
  info = "(authorized accounts: #{@groups.keys.join(', ')})" 
  info = '' if @groups.empty?
  "%s %s" % [@name.bright, info]
end

#to_s(with_title = false) ⇒ Object

Print info about a security group

  • group is a Rudy::AWS::EC2::Group object



37
38
39
40
41
42
43
# File 'lib/rudy/aws/ec2/group.rb', line 37

def to_s(with_title=false)
  lines = [liner_note]
  (self.addresses || {}).each_pair do |address,rules|
    lines << "%18s -> %s" % [address.to_s, rules.collect { |p| p.to_s}.join(', ')]
  end
  lines.join($/)
end