holepunch 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/holepunch.rb +43 -0
- data/lib/holepunch/cli.rb +4 -7
- data/lib/holepunch/ec2.rb +9 -11
- data/lib/holepunch/version.rb +1 -1
- 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: 835de8629ab48100eb2c3d3dd5e0ecb36b2df16a
|
4
|
+
data.tar.gz: b237f089c115c345dccb9fd76cd27c6cdc1b0608
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f46ed832177b63432c5c977be97fe14430f1b5f5bee5e795b8167de6f95397bd3ae45f044ddfa18066e016b19903b925c79161f351ddbf5bf160ef06fb848926
|
7
|
+
data.tar.gz: 537fb43dc6c40dc3b733ed5b8213031d4c9791c2e74c3897902d992aba074eead37c0a2d23a6b7b08d650ba52c63ec87c42196a9ef55cc5e5edad1f6be84828d
|
data/lib/holepunch.rb
CHANGED
@@ -36,6 +36,47 @@ module HolePunch
|
|
36
36
|
class ServiceDoesNotExistError < HolePunchError; end
|
37
37
|
|
38
38
|
class << self
|
39
|
+
# Applies the given SecurityGroups file to EC2.
|
40
|
+
#
|
41
|
+
# @param filename [String] the path to the SecurityGroups file
|
42
|
+
# @param env [String, nil] the environment
|
43
|
+
# @param opts [Hash] additional options
|
44
|
+
#
|
45
|
+
# @option opts [String] :aws_access_key_id the AWS access key id
|
46
|
+
# @option opts [String] :aws_secret_access_key the AWS secret access key
|
47
|
+
# @option opts [String] :aws_region the AWS region
|
48
|
+
def apply(filename, env, opts = {})
|
49
|
+
definition = Definition.build(filename, env)
|
50
|
+
ec2 = EC2.new(opts)
|
51
|
+
ec2.apply(definition)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Tests if a list of security groups are all defined in the SecurityGroups
|
55
|
+
# file.
|
56
|
+
#
|
57
|
+
# @param filename [String] the path to the SecurityGroups file
|
58
|
+
# @param env [String, nil] the environment
|
59
|
+
# @param groups [Array<String>] the list of security groups to check
|
60
|
+
def defined?(filename, env, groups)
|
61
|
+
definition = Definition.build(filename, env)
|
62
|
+
groups.all? do |group_id|
|
63
|
+
definition.groups.include?(group_id)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Checks a list of security groups against the SecurityGroups file and
|
68
|
+
# returns an array of the groups that are undefined.
|
69
|
+
#
|
70
|
+
# @param filename [String] the path to the SecurityGroups file
|
71
|
+
# @param env [String, nil] the environment
|
72
|
+
# @param groups [Array<String>] the list of security groups to check
|
73
|
+
def select_undefined(filename, env, groups)
|
74
|
+
definition = Definition.build(filename, env)
|
75
|
+
groups.reject do |group_id|
|
76
|
+
definition.groups.include?(group_id)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
39
80
|
# Examines the given SecurityGroups file for the given service and returns
|
40
81
|
# a list of the security groups that make up that service.
|
41
82
|
#
|
@@ -55,10 +96,12 @@ module HolePunch
|
|
55
96
|
# private helpers
|
56
97
|
#
|
57
98
|
|
99
|
+
# @private
|
58
100
|
def cidr?(value)
|
59
101
|
value.to_s =~ /\d+\.\d+\.\d+\.\d+\/\d+/
|
60
102
|
end
|
61
103
|
|
104
|
+
# @private
|
62
105
|
def read_file(file)
|
63
106
|
content = File.open(file, 'rb') do |io|
|
64
107
|
io.read
|
data/lib/holepunch/cli.rb
CHANGED
@@ -49,14 +49,11 @@ module HolePunch
|
|
49
49
|
Logger.fatal("AWS Region not defined. Use --aws-region or AWS_REGION") if options[:'aws-region'].nil?
|
50
50
|
Logger.verbose = options[:verbose]
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
region: options[:'aws-region'],
|
52
|
+
HolePunch.apply(options[:file], options[:env], {
|
53
|
+
aws_access_key_id: options[:'aws-access-key'],
|
54
|
+
aws_secret_access_key: options[:'aws-secret-access-key'],
|
55
|
+
aws_region: options[:'aws-region'],
|
57
56
|
})
|
58
|
-
ec2.apply(definition)
|
59
|
-
|
60
57
|
rescue EnvNotDefinedError => e
|
61
58
|
Logger.fatal('You have security groups that use an environment, but you did not specify one. See --help')
|
62
59
|
rescue HolePunchError => e
|
data/lib/holepunch/ec2.rb
CHANGED
@@ -27,24 +27,22 @@ module HolePunch
|
|
27
27
|
|
28
28
|
def initialize(opts = {})
|
29
29
|
opts = {
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
31
|
+
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
|
32
|
+
aws_region: ENV['AWS_REGION'],
|
33
33
|
}.merge(opts)
|
34
34
|
|
35
|
-
AWS.config(
|
35
|
+
AWS.config({
|
36
|
+
access_key_id: opts[:aws_access_key_id],
|
37
|
+
secret_access_key: opts[:aws_secret_access_key],
|
38
|
+
region: opts[:aws_region],
|
39
|
+
})
|
36
40
|
|
37
41
|
@ec2 = AWS::EC2.new
|
38
|
-
@region = @ec2.regions[opts[:
|
42
|
+
@region = @ec2.regions[opts[:aws_region]]
|
39
43
|
end
|
40
44
|
|
41
45
|
def apply(definition)
|
42
|
-
if definition.env.nil?
|
43
|
-
Logger.log("Creating security groups in '#{@region.name}' region")
|
44
|
-
else
|
45
|
-
Logger.log("Creating security groups for '#{definition.env}' environment in '#{@region.name}' region")
|
46
|
-
end
|
47
|
-
|
48
46
|
# get the security group data from the AWS servers
|
49
47
|
fetch!
|
50
48
|
|
data/lib/holepunch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: holepunch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Scott
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07-
|
12
|
+
date: 2014-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -163,6 +163,7 @@ description: |
|
|
163
163
|
group 'my-service' do
|
164
164
|
ping '10.0.0.0/16'
|
165
165
|
end
|
166
|
+
```
|
166
167
|
|
167
168
|
It can be useful to describe groups of security groups you plan to launch
|
168
169
|
instances with by using the `service` declaration.
|