holepunch 1.1.0 → 1.2.0
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/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.
|