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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35c298f7269b6ac63e128e3eb6fc20d21ab354f2
4
- data.tar.gz: bfcaa543bba0f3169d1bc356c33298d77b6d042e
3
+ metadata.gz: e5ddbcfcd3525e89ab78aac1a919fdfc3205ee08
4
+ data.tar.gz: 6d0dd75cd7d3c921c5612e2307c2f13845c1612d
5
5
  SHA512:
6
- metadata.gz: c37cb0e2c593006952085d12e4cb9f9a7c1e934c1076a6c17b617c5c71411c1f8961dd5357a9317b0d24321ba2d92185537acbf604afbbf335bb18c1a9189edc
7
- data.tar.gz: 77ee7caa9d2942021b6ff0639e72121ec85615d35fca63a306fd24c0159e10fa9cc2104aa171de61ae00921971bbd535acdf6a29de406b2edac1bb999ac9cab7
6
+ metadata.gz: d8d86a9858bda0dd333e7a2770b2678186e173066d87d98215089f5475228b79023e283e584ed38969d04ab5ff5d720e0cf2a8bddeffa41e35e2685e90b83815
7
+ data.tar.gz: dc6104babf9ee3f6e4c7b32cf41457f3f58c4e5c0c94d0d0ebc847686157e450d4bbd5f69242554d665100af39f7dd83fc0f5ef9fbc1adec943eda9733e23f49
data/bin/piculet CHANGED
@@ -4,6 +4,8 @@ require 'rubygems'
4
4
  require 'piculet'
5
5
  require 'optparse'
6
6
 
7
+ Version = Piculet::VERSION
8
+
7
9
  mode = nil
8
10
  file = 'Groupfile'
9
11
  output_file = '-'
data/lib/piculet.rb CHANGED
@@ -1,3 +1,29 @@
1
- require 'piculet/version'
2
- require 'piculet/client'
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'
@@ -1,10 +1,3 @@
1
- require 'aws-sdk'
2
- require 'piculet/dsl'
3
- require 'piculet/exporter'
4
- require 'piculet/ext/ec2-owner-id-ext'
5
- require 'piculet/wrapper/ec2-wrapper'
6
- require 'piculet/logger'
7
-
8
1
  module Piculet
9
2
  class Client
10
3
  include Logger::ClientHelper
data/lib/piculet/dsl.rb CHANGED
@@ -1,7 +1,3 @@
1
- require 'ostruct'
2
- require 'piculet/dsl/ec2'
3
- require 'piculet/dsl/converter'
4
-
5
1
  module Piculet
6
2
  class DSL
7
3
  class << self
@@ -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
- arg = @owner_id == owner_id ? name_or_id : [owner_id, i[:id]]
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
 
@@ -1,6 +1,3 @@
1
- require 'set'
2
- require 'piculet/dsl/security-group'
3
-
4
1
  module Piculet
5
2
  class DSL
6
3
  class EC2
@@ -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..)"
@@ -1,6 +1,3 @@
1
- require 'ostruct'
2
- require 'piculet/dsl/permission'
3
-
4
1
  module Piculet
5
2
  class DSL
6
3
  class EC2
@@ -1,6 +1,3 @@
1
- require 'ostruct'
2
- require 'piculet/dsl/permissions'
3
-
4
1
  module Piculet
5
2
  class DSL
6
3
  class EC2
@@ -1,5 +1,3 @@
1
- require 'piculet/ext/ip-permission-collection-ext'
2
-
3
1
  module Piculet
4
2
  class Exporter
5
3
  class << self
@@ -1,5 +1,3 @@
1
- require 'aws-sdk'
2
-
3
1
  module AWS
4
2
  class EC2
5
3
  DESC_OWNER_ID_RETRY_TIMES = 3
@@ -1,6 +1,3 @@
1
- require 'aws-sdk'
2
- require 'ostruct'
3
-
4
1
  module AWS
5
2
  class EC2
6
3
  class SecurityGroup
@@ -28,7 +25,6 @@ module AWS
28
25
  sleep DESC_SECURITY_GROUP_RETRY_WAIT
29
26
  end
30
27
  end
31
-
32
28
 
33
29
  aggregated.map do |key, attrs|
34
30
  protocol, port_range = key
@@ -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 |attr|
14
+ Term::ANSIColor::Attribute.named_attributes.map do |attribute|
17
15
  class_eval(<<-EOS, __FILE__, __LINE__ + 1)
18
- def #{attr.name}
16
+ def #{attribute.name}
19
17
  if @@colorize
20
- Term::ANSIColor.send(#{attr.name.inspect}, self)
18
+ Term::ANSIColor.send(#{attribute.name.inspect}, self)
21
19
  else
22
20
  self
23
21
  end
@@ -1,7 +1,3 @@
1
- require 'logger'
2
- require 'singleton'
3
- require 'piculet/ext/string-ext'
4
-
5
1
  module Piculet
6
2
  class Logger < ::Logger
7
3
  include Singleton
@@ -1,5 +1,3 @@
1
1
  module Piculet
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
4
-
5
- Version = Piculet::VERSION
@@ -1,5 +1,3 @@
1
- require 'piculet/wrapper/security-group-collection'
2
-
3
1
  module Piculet
4
2
  class EC2Wrapper
5
3
  def initialize(ec2, options)
@@ -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
- unless group =~ /\Asg-[0-9a-f]+\Z/
100
- sg_coll = @options.ec2.security_groups.filter('group-name', group)
101
-
102
- if @options.ec2.own?(owner_id)
103
- sg_coll = sg_coll.filter('vpc-id', @security_group.vpc_id) if @security_group.vpc?
104
- else
105
- sg_coll = sg_coll.filter('owner-id', owner_id)
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
- unless (sg = sg_coll.first)
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) ? i : [@options.ec2.owner_id, i]
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
@@ -1,7 +1,3 @@
1
- require 'ostruct'
2
- require 'piculet/logger'
3
- require 'piculet/wrapper/security-group'
4
-
5
1
  module Piculet
6
2
  class EC2Wrapper
7
3
  class SecurityGroupCollection
@@ -1,7 +1,3 @@
1
- require 'forwardable'
2
- require 'piculet/logger'
3
- require 'piculet/wrapper/permission-collection'
4
-
5
1
  module Piculet
6
2
  class EC2Wrapper
7
3
  class SecurityGroupCollection
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.1
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-07-26 00:00:00.000000000 Z
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