stem 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/stem/group.rb +31 -2
  2. metadata +2 -2
@@ -22,7 +22,7 @@ module Stem
22
22
  nil
23
23
  end
24
24
 
25
- def create(name, rules = nil, description = "")
25
+ def create(name, rules = nil, description = nil)
26
26
  create!(name, rules, description)
27
27
  true
28
28
  rescue Swirl::InvalidRequest => e
@@ -30,7 +30,8 @@ module Stem
30
30
  false
31
31
  end
32
32
 
33
- def create!(name, rules = nil, description = "")
33
+ def create!(name, rules = nil, description = nil)
34
+ description ||= name
34
35
  swirl.call "CreateSecurityGroup", "GroupName" => name, "GroupDescription" => description
35
36
  auth(name, rules) if rules
36
37
  end
@@ -69,6 +70,24 @@ module Stem
69
70
  swirl.call "RevokeSecurityGroupIngress", args
70
71
  end
71
72
 
73
+ def rules(name)
74
+ group = get(name)
75
+ return unless group
76
+ perms = group["ipPermissions"] || []
77
+ list = []
78
+ perms.map do |h|
79
+ h['ipRanges'].each do |ipr|
80
+ rule = "#{h['ipProtocol']}://#{ipr['cidrIp']}"
81
+ list << [ rule, parse_rule_ports(h) ].join
82
+ end if h['ipRanges']
83
+ h['groups'].each do |group|
84
+ rule = "#{h['ipProtocol']}://#{group['groupName']}@#{group['userId']}"
85
+ list << [ rule, parse_rule_ports(h) ].join
86
+ end if h['groups']
87
+ end
88
+ list
89
+ end
90
+
72
91
  def gen_authorize_target(index, target)
73
92
  if target =~ /^\d+\.\d+\.\d+.\d+\/\d+$/
74
93
  { "IpPermissions.#{index}.IpRanges.1.CidrIp" => target }
@@ -108,6 +127,16 @@ module Stem
108
127
  raise "bad rule: #{rule}"
109
128
  end
110
129
  end
130
+
131
+ def parse_rule_ports(rule)
132
+ if rule['ipProtocol'] == 'icmp'
133
+ ""
134
+ elsif rule['fromPort'] == '0' && rule['toPort'] == '65535'
135
+ ":"
136
+ else
137
+ ":#{[ rule['fromPort'], rule['toPort']].uniq.join('-')}"
138
+ end
139
+ end
111
140
  end
112
141
  end
113
142
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: stem
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.8.0
5
+ version: 0.8.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Peter van Hardenberg
@@ -12,7 +12,7 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2011-04-23 00:00:00 -07:00
15
+ date: 2011-05-02 00:00:00 -07:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency