convection 1.0.0.pre.beta.1 → 1.0.0.pre.beta.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -0
  3. data/README.md +2 -0
  4. data/bin/convection +9 -4
  5. data/docs/getting-started.md +6 -2
  6. data/docs/index.md +2 -0
  7. data/lib/convection/model/template/resource/aws_certificate_manager_certificate.rb +34 -0
  8. data/lib/convection/model/template/resource/aws_elb.rb +1 -0
  9. data/lib/convection/model/template/resource/aws_elbv2_listener.rb +35 -0
  10. data/lib/convection/model/template/resource/aws_elbv2_listener_rule.rb +39 -0
  11. data/lib/convection/model/template/resource/aws_elbv2_load_balancer.rb +38 -0
  12. data/lib/convection/model/template/resource/aws_elbv2_target_group.rb +60 -0
  13. data/lib/convection/model/template/resource/aws_route53_recordset.rb +18 -4
  14. data/lib/convection/model/template/resource/aws_s3_bucket.rb +7 -0
  15. data/lib/convection/model/template/resource_property/aws_certificate_manager_certificate_domain_validation_option.rb +16 -0
  16. data/lib/convection/model/template/resource_property/aws_cloudfront_defaultcachebehavior.rb +1 -0
  17. data/lib/convection/model/template/resource_property/aws_elbv2_listener_certificates.rb +15 -0
  18. data/lib/convection/model/template/resource_property/aws_elbv2_listener_default_action.rb +17 -0
  19. data/lib/convection/model/template/resource_property/aws_elbv2_listener_rule_action.rb +17 -0
  20. data/lib/convection/model/template/resource_property/aws_elbv2_listener_rule_condition.rb +17 -0
  21. data/lib/convection/model/template/resource_property/aws_elbv2_load_balancer_attribute.rb +17 -0
  22. data/lib/convection/model/template/resource_property/aws_elbv2_target_group_attribute.rb +17 -0
  23. data/lib/convection/model/template/resource_property/aws_elbv2_target_group_matcher.rb +15 -0
  24. data/lib/convection/model/template/resource_property/aws_elbv2_target_group_target_description.rb +16 -0
  25. data/lib/convection/model/template/resource_property/aws_route53_alias_target.rb +17 -0
  26. data/lib/convection/model/template/resource_property/aws_route53_geolocation.rb +17 -0
  27. data/lib/convection/model/template/resource_property/aws_s3_website_configuration.rb +30 -0
  28. data/lib/convection/model/template/resource_property/aws_s3_website_configuration_redirect_all_requests_to.rb +16 -0
  29. data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule.rb +28 -0
  30. data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_redirect_rule.rb +19 -0
  31. data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_routing_rule_condition.rb +16 -0
  32. data/yard_extensions/type_handler.rb +5 -0
  33. metadata +23 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ad55266b8d4a5fd1a16d8b8c396a3c2ecc22b27
4
- data.tar.gz: 4c5ae734856b196c13f39fc42fd85fc69745a6bb
3
+ metadata.gz: 2907e41b969e077bc2ac2cee703ff8bef61d730b
4
+ data.tar.gz: 2909f0be3908981a8828c72ddee7b840471bc9f0
5
5
  SHA512:
6
- metadata.gz: 018341e258e456483c9f5ebde1116cd8a71196fb972b865c62f08f0f3b87dca8a0f010e6b9e9d995c36b39240b9cdc54b0dbb7abd9f58dd252951eed766c9447
7
- data.tar.gz: 8a9a17d9ee215c6b6c1c26340e99bae7a13518f7a24d62362d02aa3302916a7f8cea93b07840c003cfa8f4859c65ffdf4af4b6496b256fb1101a2de42943cf96
6
+ metadata.gz: fc91f97a7303f5c3bb7bca558568b933a8a2f514a6efe5d3a29a6e20d59eed3b27d14139ee574587aae3cc31ae95f30c068d31cd67d263323992a061493e49f2
7
+ data.tar.gz: fd7b48f9acc7b0be07f8fc3f2205d3dd42709d0bc40be0d310b4258174a69fe32bcdac404a61a92e6c985e18826c16d3c905580dd8c792f56c9755f1a07dd315
data/.gitignore CHANGED
@@ -17,3 +17,9 @@ mkmf.log
17
17
  keys
18
18
  VERSION
19
19
  attic
20
+
21
+ .ruby-gemset
22
+
23
+ *.swp
24
+ *.swo
25
+ *.gem
data/README.md CHANGED
@@ -45,5 +45,7 @@ Or install it yourself as:
45
45
  ## Documentation
46
46
  We highly recommend consulting the [getting started guide](./docs/getting-started.md) for a in depth walk through on how to to set up your project and create and deploy a stack. Example stacks and resources are available in the [convection/example](https://github.com/rapid7/convection/tree/master/example) folder
47
47
 
48
+ Additionally you can generate the Ruby API documentation by executing `bundle exec rake yard`.
49
+
48
50
  ## License
49
51
  Convection is distributed under the MIT license - please refer to the [LICENSE](LICENSE.md) for more information.
data/bin/convection CHANGED
@@ -73,19 +73,19 @@ module Convection
73
73
  end
74
74
 
75
75
  desc 'describe-tasks [--stacks STACKS]', 'Describe tasks for a given stack'
76
+ option :cloudfile, :type => :string, :default => 'Cloudfile'
76
77
  option :stacks, :type => :array, :desc => 'A ordered space separated list of stacks to diff', default: []
77
78
  def describe_tasks
78
- @cloud = Control::Cloud.new
79
- @cloud.configure(File.absolute_path(options['cloudfile'], @cwd))
79
+ init_cloud
80
80
 
81
81
  describe_stack_tasks(options[:stacks])
82
82
  end
83
83
 
84
84
  desc 'run-tasks [--stack STACK]', 'Run tasks for a given stack'
85
+ option :cloudfile, :type => :string, :default => 'Cloudfile'
85
86
  option :stack, :desc => 'The stack to run tasks for', :required => true
86
87
  def run_tasks
87
- @cloud = Control::Cloud.new
88
- @cloud.configure(File.absolute_path(options['cloudfile'], @cwd))
88
+ init_cloud
89
89
 
90
90
  run_stack_tasks(options[:stack])
91
91
  end
@@ -219,6 +219,11 @@ module Convection
219
219
  end
220
220
 
221
221
  def init_cloud
222
+ if options['cloudfile'].nil?
223
+ warn 'ERROR: The you must specify the --cloudfile option.'
224
+ exit 1
225
+ end
226
+
222
227
  @cloud = Control::Cloud.new
223
228
  @cloud.configure(File.absolute_path(options['cloudfile'], @cwd))
224
229
  end
@@ -591,8 +591,11 @@ update_complete convection-demo-vpc: (AWS::CloudFormation::Stack)
591
591
  Now that we've got our security group, we need to set up an EC2 instance that
592
592
  will function as a NAT router. We'll be using one of [Amazon's pre-built NAT
593
593
  images][nat-instance] since we don't need anything custom. Open up the Amazon
594
- web console and search for AMIs with the string "amzn-ami-vpc-nat-pv" in their
595
- name. The most recent one, from March 2015, has ID ami-c02b04a8.
594
+ web console and search for AMIs with the string "amzn-ami-vpc-nat-hvm" in their
595
+ name. The most recent one, from September 2016, has ID ami-d2ee95c5.
596
+ Note that the default instance type is m1.small, which doesn't work with
597
+ hvm AMIs, so you'll need to choose a different instance type, such as
598
+ t2.small.
596
599
 
597
600
  The [AWS::EC2::Instance][cf-ec2] resource handles creating our
598
601
  router instance from the given AMI. Since our router provides internet access,
@@ -648,6 +651,7 @@ module Templates
648
651
  ec2_instance 'NATInstance' do
649
652
  tag 'Name', "#{stack.cloud}-#{stack.name}-nat"
650
653
  image_id 'ami-c02b04a8'
654
+ instance_type 't2.small'
651
655
  subnet fn_ref('PublicSubnet')
652
656
  security_group fn_ref('NATSecurityGroup')
653
657
  src_dst_checks false
data/docs/index.md CHANGED
@@ -45,5 +45,7 @@ Or install it yourself as:
45
45
  ## Documentation
46
46
  We highly recommend consulting the [getting started guide](./docs/getting-started.md) for a in depth walk through on how to to set up your project and create and deploy a stack. Example stacks and resources are available in the [convection/example](https://github.com/rapid7/convection/tree/master/example) folder
47
47
 
48
+ Additionally you can generate the Ruby API documentation by executing `bundle exec rake yard`.
49
+
48
50
  ## License
49
51
  Convection is distributed under the MIT license - please refer to the [LICENSE](LICENSE.md) for more information.
@@ -0,0 +1,34 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::CertificateManager::Certificate
9
+ ##
10
+ class CertificateManagerCertificate < Resource
11
+ include Model::Mixin::Taggable
12
+
13
+ type 'AWS::CertificateManager::Certificate', :certificate_manager_certificate
14
+ property :domain_name, 'DomainName'
15
+ property :domain_validation_options, 'DomainValidationOptions', :type => :list
16
+ property :subject_alternative_names, 'SubjectAlternativeNames', :type => :list
17
+
18
+ # Append a domain_validation_option to domain_validation_options
19
+ def domain_validation_option(&block)
20
+ option = ResourceProperty::CertificateManagerCertificateDomainValidationOption.new(self)
21
+ option.instance_exec(&block) if block
22
+ domain_validation_options << option
23
+ end
24
+
25
+ def render(*args)
26
+ super.tap do |resource|
27
+ render_tags(resource)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -25,6 +25,7 @@ module Convection
25
25
  property :policy, 'Policies', :type => :list
26
26
  property :scheme, 'Scheme'
27
27
  property :security_group, 'SecurityGroups', :type => :list
28
+ alias security_groups security_group
28
29
  property :subnet, 'Subnets', :type => :list
29
30
 
30
31
  def render(*args)
@@ -0,0 +1,35 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::ElasticLoadBalancingV2::Listener
9
+ ##
10
+ class ELBV2Listener < Resource
11
+ type 'AWS::ElasticLoadBalancingV2::Listener', :elbv2_listener
12
+ property :certificates, 'Certificates', :type => :list
13
+ property :default_actions, 'DefaultActions', :type => :list
14
+ property :load_balancer_arn, 'LoadBalancerArn'
15
+ property :port, 'Port'
16
+ property :protocol, 'Protocol'
17
+ property :ssl_policy, 'SslPolicy'
18
+
19
+ def certificate(&block)
20
+ cert = ResourceProperty::ELBV2ListenerCertificates.new(self)
21
+ cert.instance_exec(&block) if block
22
+ certificates << cert
23
+ end
24
+
25
+ # Append an action to default_actions
26
+ def default_action(&block)
27
+ action = ResourceProperty::ELBV2ListenerDefaultAction.new(self)
28
+ action.instance_exec(&block) if block
29
+ default_actions << action
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::ElasticLoadBalancingV2::ListenerRule
9
+ ##
10
+ class ELBV2ListenerRule < Resource
11
+ type 'AWS::ElasticLoadBalancingV2::ListenerRule', :elbv2_listener_rule
12
+ property :actions, 'Actions', :type => :list
13
+ # @note This name is used because "conditions" is a function already defined
14
+ # in {#Convection::Model::Template} and should not be overridden.
15
+ property :rule_conditions, 'Conditions', :type => :list
16
+ property :listener_arn, 'ListenerArn'
17
+ property :priority, 'Priority'
18
+
19
+ # Append an action
20
+ def action(&block)
21
+ action = ResourceProperty::ELBV2ListenerRuleAction.new(self)
22
+ action.instance_exec(&block) if block
23
+ actions << action
24
+ end
25
+
26
+ # Append a condition
27
+ #
28
+ # @note This name is used because "condition" is a function already defined
29
+ # in {#Convection::Model::Template} and should not be overridden.
30
+ def rule_condition(&block)
31
+ cond = ResourceProperty::ELBV2ListenerRuleCondition.new(self)
32
+ cond.instance_exec(&block) if block
33
+ rule_conditions << cond
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::ElasticLoadBalancingV2::LoadBalancer
9
+ ##
10
+ class ELBV2LoadBalancer < Resource
11
+ include Model::Mixin::Taggable
12
+
13
+ type 'AWS::ElasticLoadBalancingV2::LoadBalancer', :elbv2_load_balancer
14
+ property :load_balancer_attributes, 'LoadBalancerAttributes', :type => :list
15
+ property :name, 'Name'
16
+ property :scheme, 'Scheme'
17
+ property :security_group, 'SecurityGroups', :type => :list
18
+ alias security_groups security_group
19
+ property :subnet, 'Subnets', :type => :list
20
+ alias subnets subnet
21
+
22
+ # Append a load_balancer_attribute to load_balancer_attributes
23
+ def load_balancer_attribute(&block)
24
+ attribute = ResourceProperty::ELBV2LoadBalancerAttribute.new(self)
25
+ attribute.instance_exec(&block) if block
26
+ load_balancer_attributes << attribute
27
+ end
28
+
29
+ def render(*args)
30
+ super.tap do |resource|
31
+ render_tags(resource)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,60 @@
1
+ require_relative '../resource'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class Resource
7
+ ##
8
+ # AWS::ElasticLoadBalancingV2::TargetGroup
9
+ ##
10
+ class ELBV2TargetGroup < Resource
11
+ include Model::Mixin::Taggable
12
+
13
+ type 'AWS::ElasticLoadBalancingV2::TargetGroup', :elbv2_target_group
14
+ property :health_check_interval_seconds, 'HealthCheckIntervalSeconds'
15
+ property :health_check_path, 'HealthCheckPath'
16
+ property :health_check_port, 'HealthCheckPort'
17
+ property :health_check_protocol, 'HealthCheckProtocol'
18
+ property :health_check_timeout_seconds, 'HealthCheckTimeoutSeconds'
19
+ property :healthy_threshold_count, 'HealthyThresholdCount'
20
+ property :match, 'Matcher'
21
+ property :name, 'Name'
22
+ property :port, 'Port'
23
+ property :protocol, 'Protocol'
24
+ property :target_group_attributes, 'TargetGroupAttributes', :type => :list
25
+ property :targets, 'Targets', :type => :list
26
+ alias target_descriptions targets
27
+ property :unhealthy_threshold_count, 'UnhealthyThresholdCount'
28
+ property :vpc_id, 'VpcId'
29
+
30
+ # Append an attribute to target_group_attributes
31
+ def target_group_attribute(&block)
32
+ attribute = ResourceProperty::ELBV2TargetGroupAttribute.new(self)
33
+ attribute.instance_exec(&block) if block
34
+ target_group_attributes << attribute
35
+ end
36
+
37
+ # Append a target_description to targets
38
+ def target(&block)
39
+ target = ResourceProperty::ELBV2TargetGroupTargetDescription.new(self)
40
+ target.instance_exec(&block) if block
41
+ targets << target
42
+ end
43
+ alias target_description target
44
+
45
+ def matcher(&block)
46
+ m = ResourceProperty::ELBV2TargetGroupMatcher.new(self)
47
+ m.instance_exec(&block) if block
48
+ properties['Matcher'].set(m)
49
+ end
50
+
51
+ def render(*args)
52
+ super.tap do |resource|
53
+ render_tags(resource)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -9,13 +9,15 @@ module Convection
9
9
  ##
10
10
  class Route53RecordSet < Resource
11
11
  type 'AWS::Route53::RecordSet', :route53_recordset
12
- property :alias_target, 'AliasTarget'
12
+ property :alias_tgt, 'AliasTarget'
13
13
  property :comment, 'Comment'
14
14
  property :failover, 'Failover'
15
- property :geo_location, 'GeoLocation', :array
15
+ property :geo_loc, 'GeoLocation'
16
16
  property :health_check_id, 'HealthCheckId'
17
- property :zone, 'HostedZoneId'
18
- property :zone_name, 'HostedZoneName'
17
+ property :hosted_zone_id, 'HostedZoneId'
18
+ alias zone hosted_zone_id # for backward compatability
19
+ property :hosted_zone_name, 'HostedZoneName'
20
+ alias zone_name hosted_zone_name # for backward compatability
19
21
  property :record_name, 'Name'
20
22
  property :region, 'Region'
21
23
  property :record, 'ResourceRecords', :array
@@ -23,6 +25,18 @@ module Convection
23
25
  property :ttl, 'TTL'
24
26
  property :record_type, 'Type'
25
27
  property :weight, 'Weight'
28
+
29
+ def alias_target(&block)
30
+ a = ResourceProperty::Route53AliasTarget.new(self)
31
+ a.instance_exec(&block) if block
32
+ properties['AliasTarget'].set(a)
33
+ end
34
+
35
+ def geo_location(&block)
36
+ g = ResourceProperty::Route53GeoLocation.new(self)
37
+ g.instance_exec(&block) if block
38
+ properties['GeoLocation'].set(g)
39
+ end
26
40
  end
27
41
  end
28
42
  end
@@ -25,6 +25,7 @@ module Convection
25
25
  property :notification_configuration, 'NotificationConfiguration'
26
26
  property :replication_configuration, 'ReplicationConfiguration'
27
27
  property :versioning_configuration, 'VersioningConfiguration'
28
+ property :website_configuration, 'WebsiteConfiguration'
28
29
 
29
30
  def cors_configuration(&block)
30
31
  config = ResourceProperty::S3CorsConfiguration.new(self)
@@ -43,6 +44,12 @@ module Convection
43
44
  properties['ReplicationConfiguration'].set(config)
44
45
  end
45
46
 
47
+ def website_configuration(&block)
48
+ config = ResourceProperty::S3WebsiteConfiguration.new(self)
49
+ config.instance_exec(&block) if block
50
+ properties['WebsiteConfiguration'].set(config)
51
+ end
52
+
46
53
  def render(*args)
47
54
  super.tap do |resource|
48
55
  render_tags(resource)
@@ -0,0 +1,16 @@
1
+ require_relative '../resource_property'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class ResourceProperty
7
+ # Represents a {http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html
8
+ # Certificate Manager Certificate DomainValidationOption Type}
9
+ class CertificateManagerCertificateDomainValidationOption < ResourceProperty
10
+ property :domain_name, 'DomainName'
11
+ property :validation_domain, 'ValidationDomain'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -12,6 +12,7 @@ module Convection
12
12
  property :compress, 'Compress'
13
13
  property :default_ttl, 'DefaultTTL'
14
14
  property :forwarded_values, 'ForwardedValues'
15
+ property :max_ttl, 'MaxTTL'
15
16
  property :min_ttl, 'MinTTL'
16
17
  property :smooth_streaming, 'SmoothStreaming'
17
18
  property :target_origin, 'TargetOriginId'
@@ -0,0 +1,15 @@
1
+ require_relative '../resource_property'
2
+
3
+ module Convection
4
+ module Model
5
+ class Template
6
+ class ResourceProperty
7
+ # Represents a {http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
8
+ # Elastic Load Balancing Listener Certificates}
9
+ class ELBV2ListenerCertificates < ResourceProperty
10
+ property :certificate_arn, 'CertificateArn'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
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-elasticloadbalancingv2-listener-defaultactions.html
8
+ # ELBV2 Listener DefaultAction type}
9
+ class ELBV2ListenerDefaultAction < ResourceProperty
10
+ # http://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Action.html
11
+ property :target_group_arn, 'TargetGroupArn'
12
+ property :type, 'Type'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
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-elasticloadbalancingv2-listenerrule-actions.html
8
+ # ELBV2 ListenerRule Action Type}
9
+ class ELBV2ListenerRuleAction < ResourceProperty
10
+ # http://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Action.html
11
+ property :target_group_arn, 'TargetGroupArn'
12
+ property :type, 'Type'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
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-elasticloadbalancingv2-listenerrule-conditions.html
8
+ # ELBV2 ListenerRule Condition Type
9
+ class ELBV2ListenerRuleCondition < ResourceProperty
10
+ # http://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_RuleCondition.html
11
+ property :field, 'Field'
12
+ property :values, 'Values', :type => :list
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
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-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html
8
+ # Elastic Load Balancing LoadBalancer LoadBalancerAttributes Type}
9
+ class ELBV2LoadBalancerAttribute < ResourceProperty
10
+ # http://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_LoadBalancerAttribute.html
11
+ property :key, 'Key'
12
+ property :value, 'Value'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
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-elasticloadbalancingv2-targetgroup-targetgroupattributes.html
8
+ # ELBV2 TargetGroup TargetGroupAttribute Type}
9
+ class ELBV2TargetGroupAttribute < ResourceProperty
10
+ # http://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_TargetGroupAttribute.html
11
+ property :key, 'Key'
12
+ property :value, 'Value'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
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-elasticloadbalancingv2-targetgroup-matcher.html
8
+ # ELBV2 TargetGroup Matcher Type}
9
+ class ELBV2TargetGroupMatcher < ResourceProperty
10
+ property :http_code, 'HttpCode'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
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-elasticloadbalancingv2-targetgroup-targetdescription.html
8
+ # ELBV2 TargetGroup TargetDescription Type}
9
+ class ELBV2TargetGroupTargetDescription < ResourceProperty
10
+ property :id, 'Id'
11
+ property :port, 'Port'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
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-route53-aliastarget.html
8
+ # Route53 AliasTarget Property Type}
9
+ class Route53AliasTarget < ResourceProperty
10
+ property :dns_name, 'DNSName'
11
+ property :evaluate_target_health, 'EvaluateTargetHealth'
12
+ property :hosted_zone_id, 'HostedZoneId'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
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-route53-recordset-geolocation.html
8
+ # Route53 GeoLocation Property Type}
9
+ class Route53GeoLocation < ResourceProperty
10
+ property :continent_code, 'ContinentCode'
11
+ property :country_code, 'CountryCode'
12
+ property :subdivision_code, 'SubdivisionCode'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
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-s3-websiteconfiguration.html
8
+ # Amazon S3 Website Configuration}
9
+ class S3WebsiteConfiguration < ResourceProperty
10
+ property :error_document, 'ErrorDocument'
11
+ property :index_document, 'IndexDocument'
12
+ property :redirect_all_reqs_to, 'RedirectAllRequestsTo'
13
+ property :routing_rules, 'RoutingRules', :type => :list
14
+
15
+ def redirect_all_requests_to(&block)
16
+ redirect_to = ResourceProperty::S3WebsiteConfigurationRedirectAllRequestsTo.new(self)
17
+ redirect_to.instance_exec(&block) if block
18
+ properties['RedirectAllRequestsTo'].set(redirect_to)
19
+ end
20
+
21
+ def routing_rule(&block)
22
+ routing_rule = ResourceProperty::S3WebsiteConfigurationRoutingRule.new(self)
23
+ routing_rule.instance_exec(&block) if block
24
+ routing_rules << routing_rule
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
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-s3-websiteconfiguration-redirectallrequeststo.html
8
+ # Amazon S3 Website Configuration Redirect All Requests To}
9
+ class S3WebsiteConfigurationRedirectAllRequestsTo < ResourceProperty
10
+ property :host_name, 'HostName'
11
+ property :protocol, 'Protocol'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
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-s3-websiteconfiguration-routingrules.html
8
+ # Amazon S3 Website Configuration Routing Rule}
9
+ class S3WebsiteConfigurationRoutingRule < ResourceProperty
10
+ property :redirect_rul, 'RedirectRule'
11
+ property :routing_rule_cond, 'RoutingRuleCondition'
12
+
13
+ def redirect_rule(&block)
14
+ redr = ResourceProperty::S3WebsiteConfigurationRoutingRuleRedirectRule.new(self)
15
+ redr.instance_exec(&block) if block
16
+ properties['RedirectRule'].set(redr)
17
+ end
18
+
19
+ def routing_rule_condition(&block)
20
+ cond = ResourceProperty::S3WebsiteConfigurationRoutingRuleRoutingRuleCondition.new(self)
21
+ cond.instance_exec(&block) if block
22
+ properties['RoutingRuleCondition'].set(cond)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,19 @@
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-s3-websiteconfiguration-routingrules-redirectrule.html
8
+ # Amazon S3 Website Configuration Routing Rule Redirect Rule}
9
+ class S3WebsiteConfigurationRoutingRuleRedirectRule < ResourceProperty
10
+ property :host_name, 'HostName'
11
+ property :http_redirect_code, 'HttpRedirectCode'
12
+ property :protocol, 'Protocol'
13
+ property :replace_key_prefix_with, 'ReplaceKeyPrefixWith'
14
+ property :replace_key_with, 'ReplaceKeyWith'
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,16 @@
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-s3-websiteconfiguration-routingrules-routingrulecondition.html
8
+ # Amazon S3 Website Configuration Routing Rule Routing Rule Condition}
9
+ class S3WebsiteConfigurationRoutingRule < ResourceProperty
10
+ property :http_error_code_returned_equals, 'HttpErrorCodeReturnedEquals'
11
+ property :key_prefix_equals, 'KeyPrefixEquals'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -37,6 +37,7 @@ class TypeDslHandler < YARD::Handlers::Ruby::Base
37
37
  'AWS::AutoScaling::LifecycleHook' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html',
38
38
  'AWS::AutoScaling::ScalingPolicy' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html',
39
39
  'AWS::AutoScaling::ScheduledAction' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html',
40
+ 'AWS::CertificateManager::Certificate' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html',
40
41
  'AWS::CloudFormation::Authentication' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html',
41
42
  'AWS::CloudFormation::CustomResource' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html',
42
43
  'AWS::CloudFormation::Init' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html',
@@ -110,6 +111,10 @@ class TypeDslHandler < YARD::Handlers::Ruby::Base
110
111
  'AWS::ElasticBeanstalk::ConfigurationTemplate' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html',
111
112
  'AWS::ElasticBeanstalk::Environment' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html',
112
113
  'AWS::ElasticLoadBalancing::LoadBalancer' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html',
114
+ 'AWS::ElasticLoadBalancingV2::Listener' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html',
115
+ 'AWS::ElasticLoadBalancingV2::ListenerRule' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html',
116
+ 'AWS::ElasticLoadBalancingV2::LoadBalancer' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html',
117
+ 'AWS::ElasticLoadBalancingV2::TargetGroup' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html',
113
118
  'AWS::Elasticsearch::Domain' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html',
114
119
  'AWS::EMR::Cluster' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html',
115
120
  'AWS::EMR::InstanceGroupConfig' => 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html',
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: 1.0.0.pre.beta.1
4
+ version: 1.0.0.pre.beta.4
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-10-07 00:00:00.000000000 Z
11
+ date: 2016-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -139,6 +139,7 @@ files:
139
139
  - lib/convection/model/template/resource/aws_auto_scaling_auto_scaling_group.rb
140
140
  - lib/convection/model/template/resource/aws_auto_scaling_launch_configuration.rb
141
141
  - lib/convection/model/template/resource/aws_auto_scaling_scaling_policy.rb
142
+ - lib/convection/model/template/resource/aws_certificate_manager_certificate.rb
142
143
  - lib/convection/model/template/resource/aws_cloud_watch_alarm.rb
143
144
  - lib/convection/model/template/resource/aws_cloudfront_distribution.rb
144
145
  - lib/convection/model/template/resource/aws_directory_service_simple_ad.rb
@@ -178,6 +179,10 @@ files:
178
179
  - lib/convection/model/template/resource/aws_elasticbeanstalk_configurationtemplate.rb
179
180
  - lib/convection/model/template/resource/aws_elasticbeanstalk_environment.rb
180
181
  - lib/convection/model/template/resource/aws_elb.rb
182
+ - lib/convection/model/template/resource/aws_elbv2_listener.rb
183
+ - lib/convection/model/template/resource/aws_elbv2_listener_rule.rb
184
+ - lib/convection/model/template/resource/aws_elbv2_load_balancer.rb
185
+ - lib/convection/model/template/resource/aws_elbv2_target_group.rb
181
186
  - lib/convection/model/template/resource/aws_events_rule.rb
182
187
  - lib/convection/model/template/resource/aws_iam_access_key.rb
183
188
  - lib/convection/model/template/resource/aws_iam_group.rb
@@ -210,6 +215,7 @@ files:
210
215
  - lib/convection/model/template/resource_attribute/update_policy.rb
211
216
  - lib/convection/model/template/resource_collection.rb
212
217
  - lib/convection/model/template/resource_property.rb
218
+ - lib/convection/model/template/resource_property/aws_certificate_manager_certificate_domain_validation_option.rb
213
219
  - lib/convection/model/template/resource_property/aws_cloudfront_cachebehavior.rb
214
220
  - lib/convection/model/template/resource_property/aws_cloudfront_customerrorresponse.rb
215
221
  - lib/convection/model/template/resource_property/aws_cloudfront_customorigin.rb
@@ -226,14 +232,29 @@ files:
226
232
  - lib/convection/model/template/resource_property/aws_ec2_block_store_block_device.rb
227
233
  - lib/convection/model/template/resource_property/aws_ec2_mount_point.rb
228
234
  - lib/convection/model/template/resource_property/aws_ec2_network_interface.rb
235
+ - lib/convection/model/template/resource_property/aws_elbv2_listener_certificates.rb
236
+ - lib/convection/model/template/resource_property/aws_elbv2_listener_default_action.rb
237
+ - lib/convection/model/template/resource_property/aws_elbv2_listener_rule_action.rb
238
+ - lib/convection/model/template/resource_property/aws_elbv2_listener_rule_condition.rb
239
+ - lib/convection/model/template/resource_property/aws_elbv2_load_balancer_attribute.rb
240
+ - lib/convection/model/template/resource_property/aws_elbv2_target_group_attribute.rb
241
+ - lib/convection/model/template/resource_property/aws_elbv2_target_group_matcher.rb
242
+ - lib/convection/model/template/resource_property/aws_elbv2_target_group_target_description.rb
229
243
  - lib/convection/model/template/resource_property/aws_events_rule_target.rb
230
244
  - lib/convection/model/template/resource_property/aws_lambda_function_code.rb
231
245
  - lib/convection/model/template/resource_property/aws_lambda_vpc_config.rb
246
+ - lib/convection/model/template/resource_property/aws_route53_alias_target.rb
247
+ - lib/convection/model/template/resource_property/aws_route53_geolocation.rb
232
248
  - lib/convection/model/template/resource_property/aws_s3_cors_configuration.rb
233
249
  - lib/convection/model/template/resource_property/aws_s3_cors_configuration_rule.rb
234
250
  - lib/convection/model/template/resource_property/aws_s3_replication_configuration.rb
235
251
  - lib/convection/model/template/resource_property/aws_s3_replication_configuration_rule.rb
236
252
  - lib/convection/model/template/resource_property/aws_s3_replication_configuration_rule_destination.rb
253
+ - lib/convection/model/template/resource_property/aws_s3_website_configuration.rb
254
+ - lib/convection/model/template/resource_property/aws_s3_website_configuration_redirect_all_requests_to.rb
255
+ - lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule.rb
256
+ - lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_redirect_rule.rb
257
+ - lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_routing_rule_condition.rb
237
258
  - lib/convection/version.rb
238
259
  - spec/cf_client_context.rb
239
260
  - spec/collect_availability_zones_task_context.rb