opendelivery 0.3.0 → 0.3.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9562a9c0e627bb45347a5fbfe5b0aaba410cbc91
4
+ data.tar.gz: 42c260add6ebf8ee5e07955126940ea8b31c95ca
5
+ SHA512:
6
+ metadata.gz: 4b34afebb55cdbf69342de9263e4bafe669e4c0665fa4b9cd31cb0f2debbe94d641c2093040c5bf44137f19c5197624af66024b117cd50894b8d4459dc793186
7
+ data.tar.gz: d62bb83d8cdd73f05993efc90b02170a9e0cd602bc70c5c16286e16724e4c1365835d65681dea0d3885035a70f1d1715ebc37c24fad48ea96bbe4aa603af19cc
data/lib/opendelivery.rb CHANGED
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  require 'opendelivery/source_control.rb'
2
24
  require 'opendelivery/domain.rb'
3
25
  require 'opendelivery/machine_image.rb'
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  require 'aws-sdk'
2
24
  require 'encrypto_signo'
3
25
 
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  require 'aws-sdk'
2
24
 
3
25
  module OpenDelivery
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  module OpenDelivery
2
24
  class SourceControl
3
25
  def initialize(dir)
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  require 'aws-sdk'
2
24
 
3
25
  module OpenDelivery
@@ -48,7 +70,7 @@ module OpenDelivery
48
70
 
49
71
 
50
72
  def create(stack_name, template, parameters = {}, wait=false, domain=nil)
51
- stack = @cfn.stacks.create(stack_name,
73
+ @cfn.stacks.create(stack_name,
52
74
  File.open(template, "r").read,
53
75
  :parameters => parameters,
54
76
  :capabilities => ["CAPABILITY_IAM"],
@@ -142,7 +164,7 @@ module OpenDelivery
142
164
  rescue AWS::CloudFormation::Errors::Throttling
143
165
  status = "Rate limit exceeded, retrying..."
144
166
  print_status(status, silent)
145
- sleep (sleep_time * 0.1)
167
+ sleep(sleep_time * 0.1)
146
168
  end
147
169
  if keep_watching
148
170
  sleep(sleep_time)
@@ -1,3 +1,25 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
1
23
  require 'aws-sdk'
2
24
 
3
25
  module OpenDelivery
data/lib/opsworks.rb ADDED
@@ -0,0 +1,280 @@
1
+ #Copyright (c) 2014 Stelligent Systems LLC
2
+ #
3
+ #MIT LICENSE
4
+ #
5
+ #Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ #of this software and associated documentation files (the "Software"), to deal
7
+ #in the Software without restriction, including without limitation the rights
8
+ #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ #copies of the Software, and to permit persons to whom the Software is
10
+ #furnished to do so, subject to the following conditions:
11
+ #
12
+ #The above copyright notice and this permission notice shall be included in
13
+ #all copies or substantial portions of the Software.
14
+ #
15
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ #THE SOFTWARE.
22
+
23
+ require 'aws-sdk'
24
+
25
+ module OpsWorks
26
+
27
+ def create_and_launch_stack(stack_description)
28
+ stack_id = create_stack(stack_description)
29
+ launch_stack(stack_id)
30
+ deploy_apps(stack_id)
31
+ stack_id
32
+ end
33
+
34
+ def create_and_launch_stack_in_order(stack_description, layers_by_order)
35
+ stack_id = create_stack(stack_description)
36
+ launch_stack_in_order(stack_id, layers_by_order)
37
+ deploy_apps(stack_id)
38
+ stack_id
39
+ end
40
+
41
+ def create_stack(stack_description)
42
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
43
+
44
+ response = opsworks_client.create_stack(stack_description.stack_description)
45
+ stack_id = response[:stack_id]
46
+
47
+ stack_description.layer_descriptions.each do |layer_description|
48
+ layer_description[:layer][:stack_id] = stack_id
49
+
50
+ response = opsworks_client.create_layer(layer_description[:layer])
51
+ layer_id = response[:layer_id]
52
+
53
+ layer_description[:instances].each do |instance_description|
54
+ instance_description[:stack_id] = stack_id
55
+ instance_description[:layer_ids] = [layer_id]
56
+ response = opsworks_client.create_instance(instance_description)
57
+ end
58
+ end
59
+
60
+ stack_description.app_descriptions.each do |app_description|
61
+ app_description[:stack_id] = stack_id
62
+ response = opsworks_client.create_app(app_description)
63
+ end
64
+
65
+ stack_id
66
+ end
67
+
68
+ def launch_stack(stack_id)
69
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
70
+
71
+ opsworks_client.start_stack(:stack_id => stack_id)
72
+
73
+ wait_on_setup(stack_id)
74
+
75
+ wait_on_all_configures(stack_id)
76
+ end
77
+
78
+
79
+ def launch_stack_in_order(stack_id, layers_by_order)
80
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
81
+
82
+ layers_by_order.each do |layer_names|
83
+ layer_names.each do |layer_name|
84
+
85
+ response = opsworks_client.describe_layers( :stack_id => stack_id)
86
+ layer = response[:layers].find { |layer| layer[:shortname] == layer_name }
87
+ raise "layer #{layer_name} not found in stack: #{stack_id}" if layer.nil?
88
+
89
+ response = opsworks_client.describe_instances( :layer_id => layer[:layer_id])
90
+ response[:instances].each do |instance|
91
+ opsworks_client.start_instance( :instance_id => instance[:instance_id])
92
+ end
93
+ end
94
+
95
+ layer_names.each do |layer_name|
96
+ response = opsworks_client.describe_layers( :stack_id => stack_id)
97
+ layer = response[:layers].find { |layer| layer[:shortname] == layer_name }
98
+ raise "layer #{layer_name} not found in stack: #{stack_id}" if layer.nil?
99
+
100
+ wait_on_layer_setup(layer[:layer_id])
101
+ wait_on_layer_configures(layer[:layer_id])
102
+ end
103
+ end
104
+ end
105
+
106
+ def deploy_apps(stack_id)
107
+ deployment_ids = []
108
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
109
+ response = opsworks_client.describe_apps(:stack_id => stack_id)
110
+ response[:apps].each do |app|
111
+
112
+ puts "DEPLOYING THE APP: #{app}"
113
+ response = opsworks_client.create_deployment(:stack_id => stack_id,
114
+ :app_id => app[:app_id],
115
+ :command => {
116
+ :name => 'deploy',
117
+ :args => deployment_args_factory(app)
118
+ })
119
+ deployment_ids << response[:deployment_id]
120
+ end
121
+
122
+ max_attempts = 250
123
+ num_attempts = 0
124
+
125
+ deployments_complete = false
126
+ until deployments_complete
127
+ response = opsworks_client.describe_deployments(:deployment_ids => deployment_ids)
128
+ deployments_complete = response[:deployments].inject(true) do |status, deployment|
129
+ puts "Deployment status: #{deployment[:status]}"
130
+
131
+ if deployment[:status] == 'failed'
132
+ raise 'deployment failed'
133
+ end
134
+
135
+ status and (deployment[:status] == 'successful')
136
+ end
137
+ num_attempts += 1
138
+ if num_attempts >= max_attempts
139
+ raise 'stuck waiting on configure command max attempts'
140
+ end
141
+ sleep 10
142
+ end
143
+ deployment_ids
144
+ end
145
+
146
+ def discover_private_ips(stack_id, layer_name)
147
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
148
+ response = opsworks_client.describe_layers( :stack_id => stack_id)
149
+ layer = response[:layers].find { |layer| layer[:name] == layer_name }
150
+ raise "layer #{layer_name} not found in stack: #{stack_id}" if layer.nil?
151
+
152
+ response = opsworks_client.describe_instances( :layer_id => layer[:layer_id] )
153
+ response[:instances].collect { |instance| instance[:private_ip] }
154
+ end
155
+
156
+ def discover_public_ips(stack_id, layer_name)
157
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
158
+ response = opsworks_client.describe_layers( :stack_id => stack_id)
159
+ layer = response[:layers].find { |layer| layer[:name] == layer_name }
160
+ raise "layer #{layer_name} not found in stack: #{stack_id}" if layer.nil?
161
+
162
+ response = opsworks_client.describe_instances( :layer_id => layer[:layer_id] )
163
+ response[:instances].collect { |instance| instance[:public_ip] }
164
+ end
165
+
166
+ private
167
+
168
+ def deployment_args_factory(app)
169
+ if app[:type] == 'rails'
170
+ {
171
+ 'migrate' => %w{true}
172
+ }
173
+ else
174
+ {}
175
+ end
176
+ end
177
+
178
+ def complete(status)
179
+ failure(status) or success(status)
180
+ end
181
+
182
+ def failure(status)
183
+ %w{setup_failed start_failed terminated connection_lost}.include? status
184
+ end
185
+
186
+ def success(status)
187
+ %w{online}.include? status
188
+ end
189
+
190
+ def wait_on_setup(stack_id)
191
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
192
+
193
+ setup_complete = false
194
+ until setup_complete
195
+ response = opsworks_client.describe_instances(:stack_id => stack_id)
196
+ setup_complete = response[:instances].inject(true) do |status, instance|
197
+ if failure(instance[:status])
198
+ raise 'setup failed'
199
+ end
200
+
201
+ instance_status(instance)
202
+
203
+ status and complete(instance[:status])
204
+ end
205
+ sleep 10
206
+ end
207
+ end
208
+
209
+ def wait_on_layer_setup(layer_id)
210
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
211
+
212
+ setup_complete = false
213
+ until setup_complete
214
+ response = opsworks_client.describe_instances(:layer_id => layer_id)
215
+ setup_complete = response[:instances].inject(true) do |status, instance|
216
+ if failure(instance[:status])
217
+ raise 'setup failed'
218
+ end
219
+
220
+ instance_status(instance)
221
+
222
+ status and complete(instance[:status])
223
+ end
224
+ sleep 10
225
+ end
226
+ end
227
+
228
+ def instance_status(instance)
229
+ puts "Instance: #{instance[:instance_id]} has status #{instance[:status]}"
230
+ end
231
+
232
+ def configure_status(configure_command)
233
+ puts "Configure command: #{configure_command}"
234
+ end
235
+
236
+ def wait_on_all_configures(stack_id)
237
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
238
+ response = opsworks_client.describe_instances(:stack_id => stack_id)
239
+ response[:instances].each do |instance|
240
+ wait_on_configure(instance[:instance_id])
241
+ end
242
+ end
243
+
244
+ def wait_on_layer_configures(layer_id)
245
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
246
+ response = opsworks_client.describe_instances(:layer_id => layer_id)
247
+ response[:instances].each do |instance|
248
+ wait_on_configure(instance[:instance_id])
249
+ end
250
+ end
251
+
252
+ def wait_on_configure(instance_id)
253
+ opsworks_client = AWS::OpsWorks::Client::V20130218.new
254
+
255
+ max_attempts = 250
256
+ num_attempts = 0
257
+
258
+ while true
259
+ response = opsworks_client.describe_commands(:instance_id => instance_id)
260
+ configure_command = response[:commands].find { |command| command[:type] == 'configure' }
261
+
262
+ configure_status(configure_command)
263
+
264
+ unless configure_command.nil?
265
+ #i guess just bail if superseded, waiting on configure events is somewhat dubious after seeing more complex stacks in action anyway!
266
+ if %w{successful superseded}.include? configure_command[:status]
267
+ return
268
+ elsif configure_command[:status] == 'failed'
269
+ raise 'configure failed'
270
+ end
271
+ end
272
+ num_attempts += 1
273
+ if num_attempts >= max_attempts
274
+ raise 'stuck waiting on configure command max attempts'
275
+ end
276
+ sleep 10
277
+ end
278
+ end
279
+
280
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opendelivery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.3.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Jakovich
@@ -11,28 +10,25 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2014-01-18 00:00:00.000000000 Z
13
+ date: 2014-04-18 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: rdoc
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - '>='
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :development
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - '>='
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: rspec
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
33
  - - '='
38
34
  - !ruby/object:Gem::Version
@@ -40,7 +36,6 @@ dependencies:
40
36
  type: :development
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
40
  - - '='
46
41
  - !ruby/object:Gem::Version
@@ -48,7 +43,6 @@ dependencies:
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: simplecov
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
47
  - - '='
54
48
  - !ruby/object:Gem::Version
@@ -56,7 +50,6 @@ dependencies:
56
50
  type: :development
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
54
  - - '='
62
55
  - !ruby/object:Gem::Version
@@ -64,7 +57,6 @@ dependencies:
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: cucumber
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
61
  - - '='
70
62
  - !ruby/object:Gem::Version
@@ -72,47 +64,13 @@ dependencies:
72
64
  type: :development
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
68
  - - '='
78
69
  - !ruby/object:Gem::Version
79
70
  version: 1.3.6
80
- - !ruby/object:Gem::Dependency
81
- name: aws-sdk
82
- requirement: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - '='
86
- - !ruby/object:Gem::Version
87
- version: 1.16.0
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
93
- - - '='
94
- - !ruby/object:Gem::Version
95
- version: 1.16.0
96
- - !ruby/object:Gem::Dependency
97
- name: encrypto_signo
98
- requirement: !ruby/object:Gem::Requirement
99
- none: false
100
- requirements:
101
- - - '='
102
- - !ruby/object:Gem::Version
103
- version: 1.0.0
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - '='
110
- - !ruby/object:Gem::Version
111
- version: 1.0.0
112
71
  - !ruby/object:Gem::Dependency
113
72
  name: encrypto_signo
114
73
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
74
  requirements:
117
75
  - - '='
118
76
  - !ruby/object:Gem::Version
@@ -120,7 +78,6 @@ dependencies:
120
78
  type: :runtime
121
79
  prerelease: false
122
80
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
81
  requirements:
125
82
  - - '='
126
83
  - !ruby/object:Gem::Version
@@ -128,33 +85,29 @@ dependencies:
128
85
  - !ruby/object:Gem::Dependency
129
86
  name: aws-sdk
130
87
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
88
  requirements:
133
89
  - - '='
134
90
  - !ruby/object:Gem::Version
135
- version: 1.16.0
91
+ version: 1.35.0
136
92
  type: :runtime
137
93
  prerelease: false
138
94
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
95
  requirements:
141
96
  - - '='
142
97
  - !ruby/object:Gem::Version
143
- version: 1.16.0
98
+ version: 1.35.0
144
99
  - !ruby/object:Gem::Dependency
145
100
  name: json
146
101
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
102
  requirements:
149
- - - ! '>='
103
+ - - '>='
150
104
  - !ruby/object:Gem::Version
151
105
  version: '0'
152
106
  type: :runtime
153
107
  prerelease: false
154
108
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
109
  requirements:
157
- - - ! '>='
110
+ - - '>='
158
111
  - !ruby/object:Gem::Version
159
112
  version: '0'
160
113
  description: A collection of tools that are used in the Open Delivery platform.
@@ -169,30 +122,30 @@ files:
169
122
  - lib/opendelivery/source_control.rb
170
123
  - lib/opendelivery/stack.rb
171
124
  - lib/opendelivery/storage.rb
125
+ - lib/opsworks.rb
172
126
  homepage: http://stelligent.com
173
127
  licenses:
174
128
  - MIT
129
+ metadata: {}
175
130
  post_install_message:
176
131
  rdoc_options: []
177
132
  require_paths:
178
133
  - lib
179
134
  - lib
180
135
  required_ruby_version: !ruby/object:Gem::Requirement
181
- none: false
182
136
  requirements:
183
- - - ! '>='
137
+ - - '>='
184
138
  - !ruby/object:Gem::Version
185
139
  version: 1.9.3
186
140
  required_rubygems_version: !ruby/object:Gem::Requirement
187
- none: false
188
141
  requirements:
189
- - - ! '>='
142
+ - - '>='
190
143
  - !ruby/object:Gem::Version
191
144
  version: '0'
192
145
  requirements: []
193
146
  rubyforge_project:
194
- rubygems_version: 1.8.23
147
+ rubygems_version: 2.2.2
195
148
  signing_key:
196
- specification_version: 3
149
+ specification_version: 4
197
150
  summary: Open Delivery tools and utilities
198
151
  test_files: []