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.
- checksums.yaml +4 -4
- data/.gitignore +6 -0
- data/README.md +2 -0
- data/bin/convection +9 -4
- data/docs/getting-started.md +6 -2
- data/docs/index.md +2 -0
- data/lib/convection/model/template/resource/aws_certificate_manager_certificate.rb +34 -0
- data/lib/convection/model/template/resource/aws_elb.rb +1 -0
- data/lib/convection/model/template/resource/aws_elbv2_listener.rb +35 -0
- data/lib/convection/model/template/resource/aws_elbv2_listener_rule.rb +39 -0
- data/lib/convection/model/template/resource/aws_elbv2_load_balancer.rb +38 -0
- data/lib/convection/model/template/resource/aws_elbv2_target_group.rb +60 -0
- data/lib/convection/model/template/resource/aws_route53_recordset.rb +18 -4
- data/lib/convection/model/template/resource/aws_s3_bucket.rb +7 -0
- data/lib/convection/model/template/resource_property/aws_certificate_manager_certificate_domain_validation_option.rb +16 -0
- data/lib/convection/model/template/resource_property/aws_cloudfront_defaultcachebehavior.rb +1 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_listener_certificates.rb +15 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_listener_default_action.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_listener_rule_action.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_listener_rule_condition.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_load_balancer_attribute.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_target_group_attribute.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_target_group_matcher.rb +15 -0
- data/lib/convection/model/template/resource_property/aws_elbv2_target_group_target_description.rb +16 -0
- data/lib/convection/model/template/resource_property/aws_route53_alias_target.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_route53_geolocation.rb +17 -0
- data/lib/convection/model/template/resource_property/aws_s3_website_configuration.rb +30 -0
- data/lib/convection/model/template/resource_property/aws_s3_website_configuration_redirect_all_requests_to.rb +16 -0
- data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule.rb +28 -0
- data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_redirect_rule.rb +19 -0
- data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule_routing_rule_condition.rb +16 -0
- data/yard_extensions/type_handler.rb +5 -0
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2907e41b969e077bc2ac2cee703ff8bef61d730b
|
4
|
+
data.tar.gz: 2909f0be3908981a8828c72ddee7b840471bc9f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc91f97a7303f5c3bb7bca558568b933a8a2f514a6efe5d3a29a6e20d59eed3b27d14139ee574587aae3cc31ae95f30c068d31cd67d263323992a061493e49f2
|
7
|
+
data.tar.gz: fd7b48f9acc7b0be07f8fc3f2205d3dd42709d0bc40be0d310b4258174a69fe32bcdac404a61a92e6c985e18826c16d3c905580dd8c792f56c9755f1a07dd315
|
data/.gitignore
CHANGED
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
|
-
|
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
|
-
|
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
|
data/docs/getting-started.md
CHANGED
@@ -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-
|
595
|
-
name. The most recent one, from
|
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 :
|
12
|
+
property :alias_tgt, 'AliasTarget'
|
13
13
|
property :comment, 'Comment'
|
14
14
|
property :failover, 'Failover'
|
15
|
-
property :
|
15
|
+
property :geo_loc, 'GeoLocation'
|
16
16
|
property :health_check_id, 'HealthCheckId'
|
17
|
-
property :
|
18
|
-
|
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
|
data/lib/convection/model/template/resource_property/aws_elbv2_target_group_target_description.rb
ADDED
@@ -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
|
data/lib/convection/model/template/resource_property/aws_s3_website_configuration_routing_rule.rb
ADDED
@@ -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.
|
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-
|
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
|