opendelivery 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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