stackit 0.3.7 → 0.3.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: adce33d2a5ecead93eae89893531c47e182a84a3
4
- data.tar.gz: 4ee05a5601797cb3295088cd6cb8baaf42a8c9b7
3
+ metadata.gz: 64a90ba15bf97b7a8212b76b81b84018fb5d406a
4
+ data.tar.gz: 32c5c71e84a560f59028d8ef96f13a1ed522dac8
5
5
  SHA512:
6
- metadata.gz: 5107099dbd1473014f413162c3a9af3ab72fc4109bfbdd25312c19914d171dae755805b6c883c575b8ada07f409aeb54478a4d1544ce8c42625ab05ce4a748d6
7
- data.tar.gz: 2246c6937dcf7c5f9e5c25c489bcde5274ad3761a8a51ab2e6d1f02323f60af0857948e72ff7413f010ff03063e31aaecba176d040e68c65ea120edde06d6da9
6
+ metadata.gz: 3672ea775e88199023a66c0b424f054291d896aec9e925fbb1c429b87b2121dbe3d6c410d2d61754571b66de46ffb39145614668baaac518897a4ec32607b0f2
7
+ data.tar.gz: dc882c7bd34b0d04000eab172152ff6a26fc8a24d86a06e0fa4916d1c47b6c1a8e68a16e02ac2393bbd177f5b751f7c8026eb41b4b57d4e2456744859816eccf
@@ -1,5 +1,9 @@
1
1
  module Stackit::Mixin::OpsWorks
2
2
 
3
+ include Stackit::Wait
4
+
5
+ attr_accessor :opsworks
6
+
3
7
  def opsworks_service_role_arn(key = :OpsWorksServiceRole)
4
8
  "arn:aws:iam::#{Stackit.aws.account_id}:role/#{resolve_parameter(key)}"
5
9
  end
@@ -8,5 +12,70 @@ module Stackit::Mixin::OpsWorks
8
12
  "https://s3.amazonaws.com/#{resolve_parameter(key)}/#{cookbook_archive}"
9
13
  end
10
14
 
11
- end
15
+ def opsworks_stack_id(key = :OpsWorksStack)
16
+ Stackit::ParameterResolver.new(stack).resolve(key)
17
+ end
12
18
 
19
+ def opsworks_layer_id(key = :OpsWorksLayer)
20
+ Stackit::ParameterResolver.new(stack).resolve(key)
21
+ end
22
+
23
+ def opsworks_layers(stack_id)
24
+ opsworks.describe_layers(
25
+ stack_id: stack_id
26
+ ).layers
27
+ end
28
+
29
+ def opsworks_instance(key = :OpsWorksInstance)
30
+ opsworks.describe_instances({
31
+ instance_ids: [
32
+ Stackit::ParameterResolver.new(stack).resolve(key)
33
+ ]
34
+ })[:instances][0]
35
+ end
36
+
37
+ def opsworks_update_custom_cookbooks(stack_id, layer_id)
38
+ opsworks.create_deployment({
39
+ stack_id: stack_id,
40
+ layer_ids: [layer_id],
41
+ command: {
42
+ name: "update_custom_cookbooks"
43
+ }
44
+ })[:deployment_id]
45
+ end
46
+
47
+ def opsworks_execute_recipe(stack_id, layer_ids, recipes, attributes = nil)
48
+ recipes = recipes.is_a?(Array) ? recipes : [recipes]
49
+ layer_ids = layer_ids.is_a?(Array) ? layer_ids : [layer_ids]
50
+ opsworks.create_deployment({
51
+ stack_id: stack_id,
52
+ layer_ids: layer_ids,
53
+ command: {
54
+ name: "execute_recipes",
55
+ args: {
56
+ "recipes" => recipes,
57
+ },
58
+ },
59
+ custom_json: attributes
60
+ })[:deployment_id]
61
+ end
62
+
63
+ def opsworks_wait_for_deployment(deployment_id, status_pattern = /successful/)
64
+ Stackit.logger.info "Waiting for deployment #{deployment_id} to complete..."
65
+ wait_for(timeout: 15.minutes) do
66
+ deployment = Stackit.aws.opsworks.describe_deployments({
67
+ deployment_ids: [deployment_id]
68
+ })[:deployments][0]
69
+ case deployment.status
70
+ when /failed/
71
+ raise Stackit::WaitError, "Deployment failed during wait: #{deployment_id}"
72
+ when status_pattern
73
+ yield stack if block_given?
74
+ true
75
+ else
76
+ false
77
+ end
78
+ end
79
+ end
80
+
81
+ end
@@ -21,8 +21,6 @@ module Stackit
21
21
  final_stack.delete!
22
22
  end
23
23
 
24
- protected
25
-
26
24
  def stack_name
27
25
  options[:stack_name] || "#{Stackit.environment}-#{options[:stack_name]}"
28
26
  end
@@ -1,3 +1,3 @@
1
1
  module Stackit
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
data/lib/stackit/wait.rb CHANGED
@@ -4,7 +4,7 @@ module Stackit
4
4
 
5
5
  module Wait
6
6
 
7
- def wait_until_stack_info_has_key(key)
7
+ def wait_until_stack_has_key(key)
8
8
  Stackit.logger.debug "Waiting until stack #{stack_name} has key #{key}..."
9
9
  wait_for(timeout: 15.minutes) do
10
10
  stack = Stack.new(stack_name: stack_name).hydrate!
@@ -51,7 +51,7 @@ module Stackit
51
51
  end
52
52
  end
53
53
 
54
- private
54
+ protected
55
55
 
56
56
  def wait_for(opts={})
57
57
  raise ArgumentError, 'block expected' unless block_given?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Hahn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-11 00:00:00.000000000 Z
11
+ date: 2016-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler