convection 0.2.20 → 0.2.21

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: f87de219d4fc032f2a8572a29e659c04e0b8d0bf
4
- data.tar.gz: 8a41f0823d8b246c7a2b4f899150462b10ba788a
3
+ metadata.gz: 074ce594bd457dfa3a9174a47b5a9813f7a1d740
4
+ data.tar.gz: 589968f7d3487cb35d9d0166ab09b3bff11ffdc6
5
5
  SHA512:
6
- metadata.gz: 6f0b4bb4091881c0d9168c2794e2dc03248cf0581ab4320cc88f46387ce24a48b5a36c5d149dea463c9fc9f97683aff85a38d14af5b68bee527fce5da6e62791
7
- data.tar.gz: 15e53fcd02858735b88d9da7b8368b524de8028c147a687e42f719b70505ca2076c921e09e769980d557cafeca55566f275d818b59d179ea69c6b84ba8e77b3e
6
+ metadata.gz: 094c835c822791ea64c117a8c61e11d42a27d2aa32eecf70525ab26d33384612af68ee20a8c5422a78f3948fd94fa21091a4e9fe894038fb08a8207c23954d36
7
+ data.tar.gz: eab4ff96aa467afb8113a65cc20cbcbdfe537718041efaa56609d9e0c4b3ad01cb450b0aeaeeb16aceb26717b2ac79d2eff9b96eefc8b264b4cb5a85e7939496
@@ -0,0 +1,30 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::Events::Rule
9
+ ##
10
+ class EventsRule < Resource
11
+ type 'AWS::Events::Rule'
12
+ property :description, 'Description'
13
+ property :domain, 'Domain'
14
+ property :event_pattern, 'EventPattern', :type => :hash
15
+ property :name, 'Name'
16
+ property :role_arn, 'RoleArn'
17
+ property :schedule_expression, 'ScheduleExpression'
18
+ property :state, 'State'
19
+ property :targets, 'Targets', :type => :array
20
+
21
+ def target(&block)
22
+ target = ResourceProperty::EventsRuleTarget.new(self)
23
+ target.instance_exec(&block) if block
24
+ targets << target
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -24,6 +24,16 @@ module Convection
24
24
  @template.resources[profile.name] = profile
25
25
  end
26
26
 
27
+ ## Add a canned trust policy for any AWS service
28
+ def trust_service(name, &block)
29
+ @trust_relationship = Model::Mixin::Policy.new(:name => "trust-#{name}-service", :template => @template)
30
+ trust_relationship.allow do
31
+ action 'sts:AssumeRole'
32
+ principal :Service => "#{name}.amazonaws.com"
33
+ end
34
+ trust_relationship.instance_exec(&block) if block
35
+ end
36
+
27
37
  ## Add a canned trust policy for EC2 instances
28
38
  def trust_ec2_instances(&block)
29
39
  @trust_relationship = Model::Mixin::Policy.new(:name => 'trust-ec2-instances', :template => @template)
@@ -0,0 +1,21 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::Lambda::Permission
9
+ ##
10
+ class LambdaPermission < Resource
11
+ type 'AWS::Lambda::Permission'
12
+ property :action, 'Action'
13
+ property :function_name, 'FunctionName'
14
+ property :principal, 'Principal'
15
+ property :source_account, 'SourceAccount'
16
+ property :source_arn, 'SourceArn'
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../resource_property'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class ResourceProperty
7
+ # Represents an {http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
8
+ # CloudWatch Events Rule Target}
9
+ class EventsRuleTarget < ResourceProperty
10
+ property :arn, 'Arn'
11
+ property :id, 'Id'
12
+ property :input, 'Input'
13
+ property :input_path, 'InputPath'
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+ require 'json'
3
+
4
+ class TestLambdaPermission < Minitest::Test
5
+ def setup
6
+ @template = ::Convection.template do
7
+ description 'Lambda Permission Test Template'
8
+
9
+ lambda_permission 'LambdaInvokePermission' do
10
+ action 'lambda:InvokeFunction'
11
+ function_name get_att('MyLambdaFunction', 'Arn')
12
+ principal 's3.amazonaws.com'
13
+ source_account fn_ref('AWS::AccountId')
14
+ end
15
+ end
16
+ end
17
+
18
+ def from_json
19
+ JSON.parse(@template.to_json)
20
+ end
21
+
22
+ def test_lambda_permission
23
+ # Expected JSON:
24
+ json = from_json['Resources']['LambdaInvokePermission']
25
+ properties = json['Properties']
26
+
27
+ assert_equal properties['Action'], 'lambda:InvokeFunction'
28
+ assert_equal properties['FunctionName'], 'Fn::GetAtt' => %w(MyLambdaFunction Arn)
29
+ assert_equal properties['SourceAccount'], 'Ref' => 'AWS::AccountId'
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+ require 'json'
3
+
4
+ class TestTrust < Minitest::Test
5
+ def setup
6
+ @template = ::Convection.template do
7
+ description 'Trust Test Template'
8
+
9
+ iam_role 'FooRole' do
10
+ trust_service 'bar'
11
+ end
12
+ end
13
+ end
14
+
15
+ def from_json
16
+ JSON.parse(@template.to_json)
17
+ end
18
+
19
+ def test_trust
20
+ json = from_json['Resources']['FooRole']['Properties']
21
+ doc = json['AssumeRolePolicyDocument']
22
+ refute doc.nil?, 'No policy document present in JSON'
23
+ stmt = doc['Statement']
24
+
25
+ trust_bar = stmt.any? { |s| s['Principal']['Service'] == 'bar.amazonaws.com' }
26
+ assert_equal true, trust_bar, 'Expected to find [bar.amazonaws.com] in document'
27
+ end
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convection
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.20
4
+ version: 0.2.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Manero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-14 00:00:00.000000000 Z
11
+ date: 2016-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -161,6 +161,7 @@ files:
161
161
  - lib/convection/model/template/resource/aws_elasticbeanstalk_configurationtemplate.rb
162
162
  - lib/convection/model/template/resource/aws_elasticbeanstalk_environment.rb
163
163
  - lib/convection/model/template/resource/aws_elb.rb
164
+ - lib/convection/model/template/resource/aws_events_rule.rb
164
165
  - lib/convection/model/template/resource/aws_iam_access_key.rb
165
166
  - lib/convection/model/template/resource/aws_iam_group.rb
166
167
  - lib/convection/model/template/resource/aws_iam_instance_profile.rb
@@ -170,6 +171,7 @@ files:
170
171
  - lib/convection/model/template/resource/aws_iam_user.rb
171
172
  - lib/convection/model/template/resource/aws_kms_key.rb
172
173
  - lib/convection/model/template/resource/aws_lambda_function.rb
174
+ - lib/convection/model/template/resource/aws_lambda_permission.rb
173
175
  - lib/convection/model/template/resource/aws_logs_loggroup.rb
174
176
  - lib/convection/model/template/resource/aws_rds_db_instance.rb
175
177
  - lib/convection/model/template/resource/aws_rds_db_parameter_group.rb
@@ -200,6 +202,7 @@ files:
200
202
  - lib/convection/model/template/resource_property/aws_ec2_block_store_block_device.rb
201
203
  - lib/convection/model/template/resource_property/aws_ec2_mount_point.rb
202
204
  - lib/convection/model/template/resource_property/aws_ec2_network_interface.rb
205
+ - lib/convection/model/template/resource_property/aws_events_rule_target.rb
203
206
  - lib/convection/model/template/resource_property/aws_lambda_function_code.rb
204
207
  - lib/convection/model/template/resource_property/aws_lambda_vpc_config.rb
205
208
  - lib/convection/version.rb
@@ -207,8 +210,10 @@ files:
207
210
  - test/convection/model/test_elasticache.rb
208
211
  - test/convection/model/test_lambdas.rb
209
212
  - test/convection/model/test_loggroups.rb
213
+ - test/convection/model/test_permission.rb
210
214
  - test/convection/model/test_rds.rb
211
215
  - test/convection/model/test_template.rb
216
+ - test/convection/model/test_trust.rb
212
217
  - test/convection/model/test_validation.rb
213
218
  - test/convection/model/test_vpc_endpoint.rb
214
219
  - test/test_helper.rb
@@ -241,8 +246,10 @@ test_files:
241
246
  - test/convection/model/test_elasticache.rb
242
247
  - test/convection/model/test_lambdas.rb
243
248
  - test/convection/model/test_loggroups.rb
249
+ - test/convection/model/test_permission.rb
244
250
  - test/convection/model/test_rds.rb
245
251
  - test/convection/model/test_template.rb
252
+ - test/convection/model/test_trust.rb
246
253
  - test/convection/model/test_validation.rb
247
254
  - test/convection/model/test_vpc_endpoint.rb
248
255
  - test/test_helper.rb