piculet 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/bin/piculet +2 -0
- data/lib/piculet.rb +28 -2
- data/lib/piculet/client.rb +0 -7
- data/lib/piculet/dsl.rb +0 -4
- data/lib/piculet/dsl/converter.rb +9 -2
- data/lib/piculet/dsl/ec2.rb +0 -3
- data/lib/piculet/dsl/permission.rb +1 -3
- data/lib/piculet/dsl/permissions.rb +0 -3
- data/lib/piculet/dsl/security-group.rb +0 -3
- data/lib/piculet/exporter.rb +0 -2
- data/lib/piculet/ext/ec2-owner-id-ext.rb +0 -2
- data/lib/piculet/ext/ip-permission-collection-ext.rb +0 -4
- data/lib/piculet/ext/security-group.rb +28 -0
- data/lib/piculet/ext/string-ext.rb +3 -5
- data/lib/piculet/logger.rb +0 -4
- data/lib/piculet/version.rb +1 -3
- data/lib/piculet/wrapper/ec2-wrapper.rb +0 -2
- data/lib/piculet/wrapper/permission-collection.rb +21 -18
- data/lib/piculet/wrapper/permission.rb +7 -4
- data/lib/piculet/wrapper/security-group-collection.rb +0 -4
- data/lib/piculet/wrapper/security-group.rb +0 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5ddbcfcd3525e89ab78aac1a919fdfc3205ee08
|
4
|
+
data.tar.gz: 6d0dd75cd7d3c921c5612e2307c2f13845c1612d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8d86a9858bda0dd333e7a2770b2678186e173066d87d98215089f5475228b79023e283e584ed38969d04ab5ff5d720e0cf2a8bddeffa41e35e2685e90b83815
|
7
|
+
data.tar.gz: dc6104babf9ee3f6e4c7b32cf41457f3f58c4e5c0c94d0d0ebc847686157e450d4bbd5f69242554d665100af39f7dd83fc0f5ef9fbc1adec943eda9733e23f49
|
data/bin/piculet
CHANGED
data/lib/piculet.rb
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'forwardable'
|
2
|
+
require 'logger'
|
3
|
+
require 'ostruct'
|
4
|
+
require 'set'
|
5
|
+
require 'singleton'
|
6
|
+
require 'term/ansicolor'
|
7
|
+
|
8
|
+
require 'aws-sdk'
|
9
|
+
|
10
|
+
require 'piculet/ext/ec2-owner-id-ext'
|
11
|
+
require 'piculet/ext/security-group'
|
12
|
+
require 'piculet/ext/ip-permission-collection-ext'
|
13
|
+
require 'piculet/ext/string-ext'
|
14
|
+
|
3
15
|
require 'piculet/logger'
|
16
|
+
require 'piculet/client'
|
17
|
+
require 'piculet/dsl'
|
18
|
+
require 'piculet/dsl/converter'
|
19
|
+
require 'piculet/dsl/ec2'
|
20
|
+
require 'piculet/dsl/permission'
|
21
|
+
require 'piculet/dsl/permissions'
|
22
|
+
require 'piculet/dsl/security-group'
|
23
|
+
require 'piculet/exporter'
|
24
|
+
require 'piculet/version'
|
25
|
+
require 'piculet/wrapper/ec2-wrapper'
|
26
|
+
require 'piculet/wrapper/permission'
|
27
|
+
require 'piculet/wrapper/permission-collection'
|
28
|
+
require 'piculet/wrapper/security-group'
|
29
|
+
require 'piculet/wrapper/security-group-collection'
|
data/lib/piculet/client.rb
CHANGED
data/lib/piculet/dsl.rb
CHANGED
@@ -79,7 +79,7 @@ end
|
|
79
79
|
].select {|i| i }.join.strip
|
80
80
|
|
81
81
|
ip_ranges_groups.insert(0, "\n ") unless ip_ranges_groups.empty?
|
82
|
-
|
82
|
+
|
83
83
|
<<-EOS
|
84
84
|
permission #{args}do#{
|
85
85
|
ip_ranges_groups}
|
@@ -105,7 +105,14 @@ end
|
|
105
105
|
name_or_id = i[:name] || i[:id]
|
106
106
|
owner_id = i[:owner_id]
|
107
107
|
|
108
|
-
|
108
|
+
if AWS::EC2::SecurityGroup.elb?(owner_id)
|
109
|
+
arg = AWS::EC2::SecurityGroup.elb_sg
|
110
|
+
elsif @owner_id == owner_id
|
111
|
+
arg = name_or_id
|
112
|
+
else
|
113
|
+
arg = [owner_id, i[:id]]
|
114
|
+
end
|
115
|
+
|
109
116
|
arg.inspect
|
110
117
|
}.join(",\n ")
|
111
118
|
|
data/lib/piculet/dsl/ec2.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
1
|
module Piculet
|
4
2
|
class DSL
|
5
3
|
class EC2
|
@@ -42,7 +40,7 @@ module Piculet
|
|
42
40
|
|
43
41
|
@result.ip_ranges = values
|
44
42
|
end
|
45
|
-
|
43
|
+
|
46
44
|
def groups(*values)
|
47
45
|
if values.empty?
|
48
46
|
raise ArgumentError, "SecurityGroup `#{@security_group}`: #{@direction}: #{@protocol_prot_range}: `groups`: wrong number of arguments (0 for 1..)"
|
data/lib/piculet/exporter.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module AWS
|
2
|
+
class EC2
|
3
|
+
class SecurityGroup
|
4
|
+
ELB_OWNER = 'amazon-elb'
|
5
|
+
ELB_NAME = 'amazon-elb-sg'
|
6
|
+
|
7
|
+
def elb?
|
8
|
+
self.class.elb?(self.owner_id)
|
9
|
+
end
|
10
|
+
|
11
|
+
alias name_orig name
|
12
|
+
|
13
|
+
def name
|
14
|
+
self.elb? ? ELB_NAME : name_orig
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def elb_sg
|
19
|
+
"#{ELB_OWNER}/#{ELB_NAME}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def elb?(owner_or_name)
|
23
|
+
[ELB_OWNER, self.elb_sg].include?(owner_or_name)
|
24
|
+
end
|
25
|
+
end # of class methods
|
26
|
+
end # SecurityGroup
|
27
|
+
end # EC2
|
28
|
+
end # AWS
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'term/ansicolor'
|
2
|
-
|
3
1
|
class String
|
4
2
|
@@colorize = false
|
5
3
|
|
@@ -13,11 +11,11 @@ class String
|
|
13
11
|
end
|
14
12
|
end # of class methods
|
15
13
|
|
16
|
-
Term::ANSIColor::Attribute.named_attributes.map do |
|
14
|
+
Term::ANSIColor::Attribute.named_attributes.map do |attribute|
|
17
15
|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
18
|
-
def #{
|
16
|
+
def #{attribute.name}
|
19
17
|
if @@colorize
|
20
|
-
Term::ANSIColor.send(#{
|
18
|
+
Term::ANSIColor.send(#{attribute.name.inspect}, self)
|
21
19
|
else
|
22
20
|
self
|
23
21
|
end
|
data/lib/piculet/logger.rb
CHANGED
data/lib/piculet/version.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'piculet/logger'
|
2
|
-
require 'piculet/ext/ip-permission-collection-ext'
|
3
|
-
require 'piculet/wrapper/permission'
|
4
|
-
|
5
1
|
module Piculet
|
6
2
|
class EC2Wrapper
|
7
3
|
class SecurityGroupCollection
|
@@ -96,23 +92,30 @@ module Piculet
|
|
96
92
|
when Array
|
97
93
|
owner_id, group = src
|
98
94
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
95
|
+
if src.any? {|i| AWS::EC2::SecurityGroup.elb?(i) }
|
96
|
+
normalized << {
|
97
|
+
:user_id => AWS::EC2::SecurityGroup::ELB_OWNER,
|
98
|
+
:group_name => AWS::EC2::SecurityGroup::ELB_NAME
|
99
|
+
}
|
100
|
+
else
|
101
|
+
unless group =~ /\Asg-[0-9a-f]+\Z/
|
102
|
+
sg_coll = @options.ec2.security_groups.filter('group-name', group)
|
103
|
+
|
104
|
+
if @options.ec2.own?(owner_id)
|
105
|
+
sg_coll = sg_coll.filter('vpc-id', @security_group.vpc_id) if @security_group.vpc?
|
106
|
+
else
|
107
|
+
sg_coll = sg_coll.filter('owner-id', owner_id)
|
108
|
+
end
|
109
|
+
|
110
|
+
unless (sg = sg_coll.first)
|
111
|
+
raise "Can't find SecurityGroup: #{owner_id}/#{group} in #{@security_group.vpc_id || :classic}"
|
112
|
+
end
|
113
|
+
|
114
|
+
group = sg.id
|
106
115
|
end
|
107
116
|
|
108
|
-
|
109
|
-
raise "Can't find SecurityGroup: #{owner_id}/#{group} in #{@security_group.vpc_id || :classic}"
|
110
|
-
end
|
111
|
-
|
112
|
-
group = sg.id
|
117
|
+
normalized << {:user_id => owner_id, :group_id => group}
|
113
118
|
end
|
114
|
-
|
115
|
-
normalized << {:user_id => owner_id, :group_id => group}
|
116
119
|
end
|
117
120
|
end
|
118
121
|
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'forwardable'
|
2
|
-
require 'piculet/logger'
|
3
|
-
|
4
1
|
module Piculet
|
5
2
|
class EC2Wrapper
|
6
3
|
class SecurityGroupCollection
|
@@ -68,7 +65,13 @@ module Piculet
|
|
68
65
|
def normalize_attrs(dsl)
|
69
66
|
dsl_ip_ranges = (dsl.ip_ranges || []).sort
|
70
67
|
dsl_groups = (dsl.groups || []).map {|i|
|
71
|
-
i.kind_of?(Array)
|
68
|
+
if i.kind_of?(Array)
|
69
|
+
i
|
70
|
+
elsif AWS::EC2::SecurityGroup.elb?(i)
|
71
|
+
[AWS::EC2::SecurityGroup::ELB_OWNER, AWS::EC2::SecurityGroup::ELB_NAME]
|
72
|
+
else
|
73
|
+
[@options.ec2.owner_id, i]
|
74
|
+
end
|
72
75
|
}.sort
|
73
76
|
|
74
77
|
self_ip_ranges, self_groups = normalize_self_attrs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: piculet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- lib/piculet/exporter.rb
|
116
116
|
- lib/piculet/ext/ec2-owner-id-ext.rb
|
117
117
|
- lib/piculet/ext/ip-permission-collection-ext.rb
|
118
|
+
- lib/piculet/ext/security-group.rb
|
118
119
|
- lib/piculet/ext/string-ext.rb
|
119
120
|
- lib/piculet/logger.rb
|
120
121
|
- lib/piculet/version.rb
|