cloud_former 0.1.10 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b941a1757b8d7d073fd7374ac33fc4514052d04
4
- data.tar.gz: b9ca8a84c09a05e2a85c827a28a3f646f4183b18
3
+ metadata.gz: 5225f1b0df08b5385c209bc5032d76fc856df8b1
4
+ data.tar.gz: 95decca9be819bd3941c375ee9673a47a6a80158
5
5
  SHA512:
6
- metadata.gz: 13c1a10b00f8b7cb3553fd925f3cacc91aa6df087b92d13df1d630f91f659736df4c51e7c1f63e6bfa561e539fdb3833ad8ab6100284c0c96decff371d6e795e
7
- data.tar.gz: 0e45ff11c6c9036658578f8483624bd7be53041c03383d031ce06cfe0590be7967f786a9cbbb4c5c92c77166698685c0317c014eaf6b00e00720ae311dcc0fb3
6
+ metadata.gz: 056bfdf611c6475bd393088aebe3b53d2b13288e1d4e0f7720e5cee671f0847a23252afe410f8b4918b54c8086ea5278491408dc4762df9befbfde8152e74e02
7
+ data.tar.gz: 04a703ffe216488376bcd790aa57957fee35aa845bbc66fed415d66614d7978ee92e8c3c4b993fdd4edc89ec9e55ca88440aeec2fd62f59a773c6839ef18136c
@@ -19,6 +19,10 @@ module CloudFormer
19
19
  make_aws_accessor(name, options)
20
20
  end
21
21
 
22
+ def aws_attribute_wrapper(name)
23
+ @aws_attribute_wrapper = name
24
+ end
25
+
22
26
  def check_type_of_aws_value(val, options)
23
27
  if !val.is_a?(options[:type])
24
28
  failed = true
@@ -99,6 +103,14 @@ module CloudFormer
99
103
  end
100
104
  answer
101
105
  end
106
+
107
+ def get_aws_attribute_wrapper
108
+ if defined?(@aws_attribute_wrapper)
109
+ @aws_attribute_wrapper
110
+ else
111
+ nil
112
+ end
113
+ end
102
114
  end
103
115
  end
104
116
  end
@@ -29,15 +29,24 @@ module CloudFormer
29
29
  end
30
30
  end
31
31
 
32
+ attribute_fill = res
33
+ if self.class.get_aws_attribute_wrapper
34
+ attribute_fill = {}
35
+ end
36
+
32
37
  self.class.aws_attributes.try(:each) do |attribute|
33
38
  val = attribute.as_json_for(self)
34
39
  if val
35
40
  use_name = attribute.options[:name]
36
41
  use_name ||= ActiveSupport::Inflector.camelize(attribute.name)
37
- res[use_name] = val
42
+ attribute_fill[use_name] = val
38
43
  end
39
44
  end
40
45
 
46
+ if self.class.get_aws_attribute_wrapper
47
+ res[self.class.get_aws_attribute_wrapper] = attribute_fill
48
+ end
49
+
41
50
  if properties.any?
42
51
  res['Properties'] = properties
43
52
  end
@@ -0,0 +1,12 @@
1
+ # http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html
2
+ module CloudFormer
3
+ module AutoScaling
4
+ class UpdatePolicy < ResourceProperty
5
+ aws_attribute_wrapper 'AutoScalingRollingUpdate'
6
+
7
+ aws_attribute :max_batch_size, type: String
8
+ aws_attribute :min_instances_in_service, type: String
9
+ aws_attribute :pause_time, type: String
10
+ end
11
+ end
12
+ end
@@ -26,6 +26,8 @@ module CloudFormer
26
26
  name: 'VPCZoneIdentifier',
27
27
  list: true,
28
28
  type: String
29
+
30
+ aws_attribute :update_policy, embed: true, type: AutoScaling::UpdatePolicy
29
31
  end
30
32
  end
31
33
  end
@@ -1,3 +1,3 @@
1
1
  module CloudFormer
2
- VERSION = '0.1.10'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/cloud_former.rb CHANGED
@@ -33,6 +33,7 @@ module CloudFormer
33
33
  autoload :ScalingPolicy, 'cloud_former/resources/auto_scaling/scaling_policy'
34
34
  autoload :ScheduledAction, 'cloud_former/resources/auto_scaling/scheduled_action'
35
35
  autoload :Tag, 'cloud_former/resource_properties/auto_scaling/tag'
36
+ autoload :UpdatePolicy, 'cloud_former/resource_properties/auto_scaling/update_policy'
36
37
  end
37
38
 
38
39
  module CloudFormation
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe CloudFormer::AutoScaling::AutoScalingGroup do
4
4
 
5
- let(:config) do
5
+ let(:group) do
6
6
  notification_config = CloudFormer::AutoScaling::NotificationConfiguration.new do
7
7
  topic_arn 'abc'
8
8
  notification_types [
@@ -18,7 +18,7 @@ describe CloudFormer::AutoScaling::AutoScalingGroup do
18
18
  end
19
19
 
20
20
  it 'should make some awesome json' do
21
- expect(config.dump_json).to eq({
21
+ expect(group.dump_json).to eq({
22
22
  "Type" => "AWS::AutoScaling::AutoScalingGroup",
23
23
  "Properties" => {
24
24
  "NotificationConfiguration" => {
@@ -30,4 +30,40 @@ describe CloudFormer::AutoScaling::AutoScalingGroup do
30
30
  }
31
31
  })
32
32
  end
33
+
34
+ describe 'with an update policy' do
35
+
36
+ let(:policy) do
37
+ CloudFormer::AutoScaling::UpdatePolicy.new do
38
+ max_batch_size 10
39
+ min_instances_in_service 1
40
+ pause_time 'PT12M5S'
41
+ end
42
+ end
43
+
44
+ before do
45
+ group.update_policy(policy)
46
+ end
47
+
48
+ it 'should make awesome json' do
49
+ expect(group.dump_json).to eq({
50
+ "Type" => "AWS::AutoScaling::AutoScalingGroup",
51
+ "Properties" => {
52
+ "NotificationConfiguration" => {
53
+ "NotificationTypes" => ["autoscaling:EC2_INSTANCE_LAUNCH_ERROR"],
54
+ "TopicARN" => "abc",
55
+ },
56
+ "Cooldown" => 30,
57
+ "AvailabilityZones" => { "Fn::GetAZs" => "" }
58
+ },
59
+ "UpdatePolicy" => {
60
+ "AutoScalingRollingUpdate" => {
61
+ "MaxBatchSize"=>10,
62
+ "MinInstancesInService"=>1,
63
+ "PauseTime"=>"PT12M5S"
64
+ }
65
+ }
66
+ })
67
+ end
68
+ end
33
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud_former
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aubrey Holland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-18 00:00:00.000000000 Z
11
+ date: 2014-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -120,6 +120,7 @@ files:
120
120
  - lib/cloud_former/resource_properties/auto_scaling/metrics_collection.rb
121
121
  - lib/cloud_former/resource_properties/auto_scaling/notification_configuration.rb
122
122
  - lib/cloud_former/resource_properties/auto_scaling/tag.rb
123
+ - lib/cloud_former/resource_properties/auto_scaling/update_policy.rb
123
124
  - lib/cloud_former/resource_properties/cloud_formation/resource_tag.rb
124
125
  - lib/cloud_former/resource_properties/cloud_front/cache_behavior.rb
125
126
  - lib/cloud_former/resource_properties/cloud_front/custom_error_response.rb