build-cloud 1.1.2 → 1.1.3
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/CHANGELOG.md +3 -1
- data/build-cloud.gemspec +1 -1
- data/lib/build-cloud/asgroup.rb +36 -4
- data/lib/build-cloud/instance.rb +19 -4
- data/lib/build-cloud/vpc.rb +6 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad8c7b556fc7107ea38511b167401391c61b05f7b41b7c690ebf5cb49401c1d3
|
4
|
+
data.tar.gz: 0baf22d231dcab8c8e41312cce20fb616a4e7d50115f30f250e8ea13f2715887
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 833765e82f0b1314bbc8e9a076c1fe9095269d81fa81d465bcb51483304e5a42197c8b8c34117cbfe127707139777bef1acff6cdb4160f7894a046cb733ce554
|
7
|
+
data.tar.gz: e242267e725571e67db99de3a9949871126c09a3a81a1ee1acec0ad279abbe6c102604d4343521dee1ce3f8c5bc4c7a12ad91956237888d150d5906a77ed2733
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
2018-04-12 - version 1.1.3 - EC2 instances and ASG now add missing tags.
|
4
|
+
|
3
5
|
2018-04-12 - version 1.1.2 - version bump.
|
4
6
|
|
5
|
-
2018-04-12 - version 1.0.1 - VPC's now
|
7
|
+
2018-04-12 - version 1.0.1 - VPC's now add missing tags.
|
6
8
|
|
7
9
|
2017-11-13 - version 0.0.24 - Fix a bug which prevented working with IAM roles in AWS accounts with more than 100 roles. Thank you @markchalloner!
|
8
10
|
|
data/build-cloud.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "build-cloud"
|
7
|
-
spec.version = "1.1.
|
7
|
+
spec.version = "1.1.3"
|
8
8
|
spec.authors = ["The Scale Factory"]
|
9
9
|
spec.email = ["info@scalefactory.com"]
|
10
10
|
spec.summary = %q{Tools for building resources in AWS}
|
data/lib/build-cloud/asgroup.rb
CHANGED
@@ -19,13 +19,19 @@ class BuildCloud::ASGroup
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def create
|
22
|
-
|
23
|
-
return if exists?
|
24
|
-
|
25
|
-
@log.info( "Creating AS Group #{@options[:id]}" )
|
26
22
|
|
27
23
|
options = @options.dup
|
28
24
|
|
25
|
+
if exists?
|
26
|
+
# If exists update tags
|
27
|
+
if options[:tags]
|
28
|
+
create_tags(options[:tags])
|
29
|
+
end
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
@log.info( "Creating AS Group #{options[:id]}" )
|
34
|
+
|
29
35
|
unless options[:vpc_zone_identifier]
|
30
36
|
|
31
37
|
subnet_ids = []
|
@@ -69,4 +75,30 @@ class BuildCloud::ASGroup
|
|
69
75
|
|
70
76
|
end
|
71
77
|
|
78
|
+
def create_tags(tags)
|
79
|
+
@log.debug("Tags passed in: #{tags.inspect}")
|
80
|
+
@log.debug("Current tags: #{fog_object.tags.inspect}")
|
81
|
+
tag_array = fog_object.tags.dup
|
82
|
+
tags.each do |k,v|
|
83
|
+
if tag_array.find {|t| t['Key'] == k }
|
84
|
+
unless tag_array.find {|t| t['Value'] == v }
|
85
|
+
tag_array.find {|t| t['Value'] = v }
|
86
|
+
end
|
87
|
+
else
|
88
|
+
tag_array << {
|
89
|
+
"ResourceId" => fog_object.id,
|
90
|
+
"PropagateAtLaunch" => true,
|
91
|
+
"Key" => k,
|
92
|
+
"Value" => v,
|
93
|
+
"ResourceType" => "auto-scaling-group"
|
94
|
+
}
|
95
|
+
end
|
96
|
+
end
|
97
|
+
@log.debug("Tags to act on: #{tag_array.inspect}")
|
98
|
+
if tag_array != fog_object.tags
|
99
|
+
@log.info("Updating tags for ASG #{fog_object.id}")
|
100
|
+
@as.create_or_update_tags( tag_array )
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
72
104
|
end
|
data/lib/build-cloud/instance.rb
CHANGED
@@ -47,13 +47,19 @@ class BuildCloud::Instance
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def create
|
50
|
-
|
51
|
-
return if exists?
|
52
|
-
|
53
|
-
@log.info( "Creating instance #{@options[:name]}" )
|
54
50
|
|
55
51
|
options = @options.dup
|
56
52
|
|
53
|
+
if exists?
|
54
|
+
# If exists update tags
|
55
|
+
if options[:tags]
|
56
|
+
create_tags(options[:tags])
|
57
|
+
end
|
58
|
+
return
|
59
|
+
end
|
60
|
+
|
61
|
+
@log.info( "Creating instance #{options[:name]}" )
|
62
|
+
|
57
63
|
if options[:security_group_names] or options[:security_group_ids]
|
58
64
|
unless options[:security_group_ids]
|
59
65
|
|
@@ -223,4 +229,13 @@ class BuildCloud::Instance
|
|
223
229
|
|
224
230
|
end
|
225
231
|
|
232
|
+
def create_tags(tags)
|
233
|
+
# force symbols to strings in yaml tags
|
234
|
+
resolved_tags = fog_object.tags.dup.merge(tags.collect{|k,v| [k.to_s, v]}.to_h)
|
235
|
+
if resolved_tags != fog_object.tags
|
236
|
+
@log.info("Updating tags for EC2 instance #{fog_object.id}")
|
237
|
+
@ec2.create_tags( fog_object.id, tags )
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
226
241
|
end
|
data/lib/build-cloud/vpc.rb
CHANGED
@@ -50,7 +50,7 @@ class BuildCloud::VPC
|
|
50
50
|
end
|
51
51
|
|
52
52
|
|
53
|
-
@log.info( "Creating new VPC for #{
|
53
|
+
@log.info( "Creating new VPC for #{options[:cidr_block]}" )
|
54
54
|
|
55
55
|
vpc = @compute.vpcs.new( options )
|
56
56
|
vpc.save
|
@@ -93,9 +93,11 @@ class BuildCloud::VPC
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def create_tags(tags)
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
# force symbols to strings in yaml tags
|
97
|
+
resolved_tags = fog_object.tags.dup.merge(tags.collect{|k,v| [k.to_s, v]}.to_h)
|
98
|
+
if resolved_tags != fog_object.tags
|
99
|
+
@log.info("Updating tags for VPC #{fog_object.id}")
|
100
|
+
@ec2.create_tags( fog_object.id, tags )
|
99
101
|
end
|
100
102
|
end
|
101
103
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Scale Factory
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
149
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.7.
|
150
|
+
rubygems_version: 2.7.7
|
151
151
|
signing_key:
|
152
152
|
specification_version: 4
|
153
153
|
summary: Tools for building resources in AWS
|