opendelivery 0.3.2 → 0.4.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/opsworks.rb +38 -1
  3. metadata +40 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1358ade78b831cacf9c17ce039183064e64203e5
4
- data.tar.gz: 86c956e80a49e98d4560e12f73738d8a01929ffb
3
+ metadata.gz: 12c5b2a2c1a61c9a0ea3fb271717796469e5407f
4
+ data.tar.gz: 360133cdbdada5f134240233f68425aee93a433a
5
5
  SHA512:
6
- metadata.gz: 964cbcdab444dfe8baf3789c0df8211ae3ba0ea5753b39219d7d17a7b007f2de833202e2c8ade5bb554d95c7153030557f8ca92f8c9d6cd20e707db2c41b2449
7
- data.tar.gz: ce6602bd8c9dfbb8228ec856cd49565f1864b878338f8470a132617c4c96ec6a7599915efbc4e7a9346f19d3006569851dcf3cfe3b89260e8c57ab362b7604e1
6
+ metadata.gz: fcf3a40b1e1d796d4ca30ce5595e518429801a284bc3355436993469a923f5992a947ff7502390e08e13e1c289d8215269c8be1787a5f6cb885e2120a6ece831
7
+ data.tar.gz: 6b110b76f05843a760a4e7b77410849800c4c797619ceaccdb9932b331874180e253b9349e7abfbb97993e5d11620cf5482cce803201d557f1306fc2971f688f
data/lib/opsworks.rb CHANGED
@@ -44,16 +44,40 @@ module OpsWorks
44
44
  response = opsworks_client.create_stack(stack_description.stack_description)
45
45
  stack_id = response[:stack_id]
46
46
 
47
- stack_description.layer_descriptions.each do |layer_description|
47
+ wait_on_opsworks_sg_creation(stack_description.stack_description[:vpc_id]) if stack_description.stack_description[:vpc_id]
48
+
49
+ layer_descriptions = stack_description.layer_descriptions
50
+ layer_descriptions.each do |layer_description|
48
51
  layer_description[:layer][:stack_id] = stack_id
49
52
 
50
53
  response = opsworks_client.create_layer(layer_description[:layer])
51
54
  layer_id = response[:layer_id]
55
+ layer_description[:layer][:layer_id] = layer_id
52
56
 
53
57
  layer_description[:instances].each do |instance_description|
54
58
  instance_description[:stack_id] = stack_id
55
59
  instance_description[:layer_ids] = [layer_id]
60
+
61
+ save_off = instance_description[:extra_layers]
62
+ instance_description.delete :extra_layers
56
63
  response = opsworks_client.create_instance(instance_description)
64
+ instance_description[:instance_id] = response[:instance_id]
65
+ instance_description[:extra_layers] = save_off
66
+ end
67
+ end
68
+
69
+ layer_descriptions.each do |layer_description|
70
+ layer_description[:instances].each do |instance_description|
71
+ if instance_description[:extra_layers]
72
+ instance_description[:extra_layers].each do |extra_layer_name|
73
+ found_extra_layer = layer_descriptions.find { |desc| desc[:layer][:name] == extra_layer_name }
74
+
75
+ raise "missing extra layer: #{extra_layer_name}" unless found_extra_layer
76
+ instance_description[:layer_ids] << found_extra_layer[:layer][:layer_id]
77
+ response = opsworks_client.update_instance(:instance_id => instance_description[:instance_id],
78
+ :layer_ids => instance_description[:layer_ids])
79
+ end
80
+ end
57
81
  end
58
82
  end
59
83
 
@@ -165,6 +189,19 @@ module OpsWorks
165
189
 
166
190
  private
167
191
 
192
+ def wait_on_opsworks_sg_creation(vpc_id)
193
+ opsworks_security_group_names.each do |sg_name|
194
+ while AWS.ec2.security_groups.filter('vpc-id', vpc_id).filter('group-name', sg_name).count == 0
195
+ puts "Waiting on #{sg_name}, #{a = a ? a+1 : 1}"
196
+ sleep 1
197
+ end
198
+ end
199
+ end
200
+
201
+ def opsworks_security_group_names
202
+ %w{AWS-OpsWorks-Default-Server AWS-OpsWorks-Blank-Server AWS-OpsWorks-Custom-Server AWS-OpsWorks-Rails-App-Server}
203
+ end
204
+
168
205
  def deployment_args_factory(app)
169
206
  if app[:type] == 'rails'
170
207
  {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opendelivery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Jakovich
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-04-18 00:00:00.000000000 Z
13
+ date: 2014-06-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdoc
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: '4.1'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ~>
27
27
  - !ruby/object:Gem::Version
28
- version: '0'
28
+ version: '4.1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rspec
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -68,6 +68,20 @@ dependencies:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.3.6
71
+ - !ruby/object:Gem::Dependency
72
+ name: net-ssh
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 2.9.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '='
83
+ - !ruby/object:Gem::Version
84
+ version: 2.9.0
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: encrypto_signo
73
87
  requirement: !ruby/object:Gem::Requirement
@@ -96,20 +110,34 @@ dependencies:
96
110
  - - '='
97
111
  - !ruby/object:Gem::Version
98
112
  version: 1.35.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: aws-sdk-core
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '='
118
+ - !ruby/object:Gem::Version
119
+ version: 2.0.0.rc2
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - '='
125
+ - !ruby/object:Gem::Version
126
+ version: 2.0.0.rc2
99
127
  - !ruby/object:Gem::Dependency
100
128
  name: json
101
129
  requirement: !ruby/object:Gem::Requirement
102
130
  requirements:
103
- - - '>='
131
+ - - ~>
104
132
  - !ruby/object:Gem::Version
105
- version: '0'
133
+ version: '1.8'
106
134
  type: :runtime
107
135
  prerelease: false
108
136
  version_requirements: !ruby/object:Gem::Requirement
109
137
  requirements:
110
- - - '>='
138
+ - - ~>
111
139
  - !ruby/object:Gem::Version
112
- version: '0'
140
+ version: '1.8'
113
141
  description: A collection of tools that are used in the Open Delivery platform.
114
142
  email: brian.jakovich@stelligent.com
115
143
  executables: []
@@ -117,12 +145,12 @@ extensions: []
117
145
  extra_rdoc_files: []
118
146
  files:
119
147
  - lib/opendelivery.rb
120
- - lib/opsworks.rb
121
148
  - lib/opendelivery/domain.rb
122
149
  - lib/opendelivery/machine_image.rb
123
150
  - lib/opendelivery/source_control.rb
124
151
  - lib/opendelivery/stack.rb
125
152
  - lib/opendelivery/storage.rb
153
+ - lib/opsworks.rb
126
154
  homepage: http://stelligent.com
127
155
  licenses:
128
156
  - MIT
@@ -144,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
172
  version: '0'
145
173
  requirements: []
146
174
  rubyforge_project:
147
- rubygems_version: 2.0.3
175
+ rubygems_version: 2.2.2
148
176
  signing_key:
149
177
  specification_version: 4
150
178
  summary: Open Delivery tools and utilities