convection 1.0.0.pre.beta.7 → 1.0.0.pre.beta.8
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b7875ecff60334cc075ced555536add48611bdc
|
4
|
+
data.tar.gz: d68e3d9ddf2eba5b8de1aaa64865a505858b1c5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f58400f4d15d98e6e02f727f18dade740f0f59a686d907e059adffd4cc0ecb57f6752b81b16e0923656544ad99696f140361930550ad52675865b95192faeb2
|
7
|
+
data.tar.gz: 21b9910869a9c12155a1f44d91a1a1f186b0f5ac43ac6a7b7f70ac0cc1d48c33bdced4f5dbf31281ad69bf121057b7e23b2123e4cf6999e14e7f46b97d8559a5
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative './mixin/colorize'
|
2
|
+
require_relative './replace_properties'
|
2
3
|
|
3
4
|
module Convection
|
4
5
|
module Model
|
@@ -12,16 +13,24 @@ module Convection
|
|
12
13
|
attr_reader :action
|
13
14
|
attr_reader :ours
|
14
15
|
attr_reader :theirs
|
15
|
-
colorize :action, :green => [:create], :yellow => [:update], :red => [:delete]
|
16
|
+
colorize :action, :green => [:create], :yellow => [:update], :red => [:delete, :replace]
|
16
17
|
|
17
18
|
def initialize(key, ours, theirs)
|
18
19
|
@key = key
|
19
20
|
@ours = ours
|
20
21
|
@theirs = theirs
|
21
22
|
|
22
|
-
@action = if ours && theirs
|
23
|
-
|
24
|
-
|
23
|
+
@action = if ours && theirs
|
24
|
+
property_name = key[/AWS::[A-Za-z0-9:]+\.[A-Za-z0-9]+/]
|
25
|
+
if REPLACE_PROPERTIES.include?(property_name)
|
26
|
+
:replace
|
27
|
+
else
|
28
|
+
:update
|
29
|
+
end
|
30
|
+
elsif ours
|
31
|
+
:create
|
32
|
+
else
|
33
|
+
:delete
|
25
34
|
end
|
26
35
|
end
|
27
36
|
|
@@ -29,6 +38,7 @@ module Convection
|
|
29
38
|
message = case action
|
30
39
|
when :create then "#{ key }: #{ ours }"
|
31
40
|
when :update then "#{ key }: #{ theirs } => #{ ours }"
|
41
|
+
when :replace then "#{ key }: #{ theirs } => #{ ours }"
|
32
42
|
when :delete then key
|
33
43
|
end
|
34
44
|
|
@@ -9,7 +9,7 @@ module Convection
|
|
9
9
|
when *options.fetch(:cyan, [:debug, :trace]) then :cyan
|
10
10
|
when *options.fetch(:green, [:info, :success, :create]) then :green
|
11
11
|
when *options.fetch(:yellow, [:warn, :update]) then :yellow
|
12
|
-
when *options.fetch(:red, [:error, :fail, :delete]) then :red
|
12
|
+
when *options.fetch(:red, [:error, :fail, :delete, :replace]) then :red
|
13
13
|
else options.fetch(:default, :green)
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,399 @@
|
|
1
|
+
module Convection
|
2
|
+
module Model
|
3
|
+
# Unfortunately, there are a lot of resources to include in this array,
|
4
|
+
# and rather than parsing out only the ones that we need right now
|
5
|
+
# and potentially missing it in the future, just disable rubocop whining
|
6
|
+
# about that particular error:
|
7
|
+
# rubocop:disable ClassLength
|
8
|
+
class Diff
|
9
|
+
# Properties for which a change requires a replacement
|
10
|
+
# (as opposed to an in-place update)
|
11
|
+
# Create/update this list with tmp/process_html.sh
|
12
|
+
REPLACE_PROPERTIES = [
|
13
|
+
'AWS::ApiGateway::ApiKey.Name',
|
14
|
+
'AWS::ApiGateway::Authorizer.RestApiId',
|
15
|
+
'AWS::ApiGateway::Deployment.RestApiId',
|
16
|
+
'AWS::ApiGateway::Model.ContentType',
|
17
|
+
'AWS::ApiGateway::Model.Name',
|
18
|
+
'AWS::ApiGateway::Model.RestApiId',
|
19
|
+
'AWS::ApiGateway::Resource.ParentId',
|
20
|
+
'AWS::ApiGateway::Resource.PathPart',
|
21
|
+
'AWS::ApiGateway::Resource.RestApiId',
|
22
|
+
'AWS::ApiGateway::Stage.RestApiId',
|
23
|
+
'AWS::ApiGateway::Stage.StageName',
|
24
|
+
'AWS::ApplicationAutoScaling::ScalableTarget.ResourceId',
|
25
|
+
'AWS::ApplicationAutoScaling::ScalableTarget.ScalableDimension',
|
26
|
+
'AWS::ApplicationAutoScaling::ScalableTarget.ServiceNamespace',
|
27
|
+
'AWS::ApplicationAutoScaling::ScalingPolicy.PolicyName',
|
28
|
+
'AWS::ApplicationAutoScaling::ScalingPolicy.ResourceId',
|
29
|
+
'AWS::ApplicationAutoScaling::ScalingPolicy.ScalableDimension',
|
30
|
+
'AWS::ApplicationAutoScaling::ScalingPolicy.ServiceNamespace',
|
31
|
+
'AWS::ApplicationAutoScaling::ScalingPolicy.ScalingTargetId',
|
32
|
+
'AWS::AutoScaling::AutoScalingGroup.InstanceId',
|
33
|
+
'AWS::AutoScaling::AutoScalingGroup.LoadBalancerNames',
|
34
|
+
'AWS::AutoScaling::LaunchConfiguration.AssociatePublicIpAddress',
|
35
|
+
'AWS::AutoScaling::LaunchConfiguration.BlockDeviceMappings',
|
36
|
+
'AWS::AutoScaling::LaunchConfiguration.ClassicLinkVPCId',
|
37
|
+
'AWS::AutoScaling::LaunchConfiguration.ClassicLinkVPCSecurityGroups',
|
38
|
+
'AWS::AutoScaling::LaunchConfiguration.EbsOptimized',
|
39
|
+
'AWS::AutoScaling::LaunchConfiguration.IamInstanceProfile',
|
40
|
+
'AWS::AutoScaling::LaunchConfiguration.ImageId',
|
41
|
+
'AWS::AutoScaling::LaunchConfiguration.InstanceId',
|
42
|
+
'AWS::AutoScaling::LaunchConfiguration.InstanceMonitoring',
|
43
|
+
'AWS::AutoScaling::LaunchConfiguration.InstanceType',
|
44
|
+
'AWS::AutoScaling::LaunchConfiguration.KernelId',
|
45
|
+
'AWS::AutoScaling::LaunchConfiguration.KeyName',
|
46
|
+
'AWS::AutoScaling::LaunchConfiguration.PlacementTenancy',
|
47
|
+
'AWS::AutoScaling::LaunchConfiguration.RamDiskId',
|
48
|
+
'AWS::AutoScaling::LaunchConfiguration.SecurityGroups',
|
49
|
+
'AWS::AutoScaling::LaunchConfiguration.SpotPrice',
|
50
|
+
'AWS::AutoScaling::LaunchConfiguration.UserData',
|
51
|
+
'AWS::AutoScaling::LifecycleHook.AutoScalingGroupName',
|
52
|
+
'AWS::AutoScaling::ScheduledAction.AutoScalingGroupName',
|
53
|
+
'AWS::CertificateManager::Certificate.DomainName',
|
54
|
+
'AWS::CertificateManager::Certificate.DomainValidationOptions',
|
55
|
+
'AWS::CertificateManager::Certificate.SubjectAlternativeNames',
|
56
|
+
'AWS::CloudWatch::Alarm.AlarmName',
|
57
|
+
'AWS::CodeDeploy::DeploymentConfig.DeploymentConfigName',
|
58
|
+
'AWS::CodeDeploy::DeploymentConfig.MinimumHealthyHosts',
|
59
|
+
'AWS::CodeDeploy::DeploymentGroup.ApplicationName',
|
60
|
+
'AWS::CodeDeploy::DeploymentGroup.DeploymentGroupName',
|
61
|
+
'AWS::CodePipeline::CustomActionType.Category',
|
62
|
+
'AWS::CodePipeline::CustomActionType.ConfigurationProperties',
|
63
|
+
'AWS::CodePipeline::CustomActionType.InputArtifactDetails',
|
64
|
+
'AWS::CodePipeline::CustomActionType.OutputArtifactDetails',
|
65
|
+
'AWS::CodePipeline::CustomActionType.Provider',
|
66
|
+
'AWS::CodePipeline::CustomActionType.Settings',
|
67
|
+
'AWS::CodePipeline::CustomActionType.Version',
|
68
|
+
'AWS::Config::ConfigRule.ConfigRuleName',
|
69
|
+
'AWS::DataPipeline::Pipeline.Description',
|
70
|
+
'AWS::DataPipeline::Pipeline.Name',
|
71
|
+
'AWS::DirectoryService::MicrosoftAD.CreateAlias',
|
72
|
+
'AWS::DirectoryService::MicrosoftAD.Name',
|
73
|
+
'AWS::DirectoryService::MicrosoftAD.Password',
|
74
|
+
'AWS::DirectoryService::MicrosoftAD.ShortName',
|
75
|
+
'AWS::DirectoryService::MicrosoftAD.VpcSettings',
|
76
|
+
'AWS::DirectoryService::SimpleAD.CreateAlias',
|
77
|
+
'AWS::DirectoryService::SimpleAD.Description',
|
78
|
+
'AWS::DirectoryService::SimpleAD.Name',
|
79
|
+
'AWS::DirectoryService::SimpleAD.Password',
|
80
|
+
'AWS::DirectoryService::SimpleAD.ShortName',
|
81
|
+
'AWS::DirectoryService::SimpleAD.Size',
|
82
|
+
'AWS::DirectoryService::SimpleAD.VpcSettings',
|
83
|
+
'AWS::DynamoDB::Table.AttributeDefinitions',
|
84
|
+
'AWS::DynamoDB::Table.KeySchema',
|
85
|
+
'AWS::DynamoDB::Table.LocalSecondaryIndexes',
|
86
|
+
'AWS::DynamoDB::Table.TableName',
|
87
|
+
'AWS::EC2::CustomerGateway.BgpAsn',
|
88
|
+
'AWS::EC2::CustomerGateway.IpAddress',
|
89
|
+
'AWS::EC2::CustomerGateway.Type',
|
90
|
+
'AWS::EC2::DHCPOptions.DomainName',
|
91
|
+
'AWS::EC2::DHCPOptions.DomainNameServers',
|
92
|
+
'AWS::EC2::DHCPOptions.NetbiosNameServers',
|
93
|
+
'AWS::EC2::DHCPOptions.NetbiosNodeType',
|
94
|
+
'AWS::EC2::DHCPOptions.NtpServers',
|
95
|
+
'AWS::EC2::EIP.Domain',
|
96
|
+
'AWS::EC2::EIPAssociation.AllocationId',
|
97
|
+
'AWS::EC2::EIPAssociation.EIP',
|
98
|
+
'AWS::EC2::EIPAssociation.InstanceId',
|
99
|
+
'AWS::EC2::EIPAssociation.NetworkInterfaceId',
|
100
|
+
'AWS::EC2::FlowLog.DeliverLogsPermissionArn',
|
101
|
+
'AWS::EC2::FlowLog.LogGroupName',
|
102
|
+
'AWS::EC2::FlowLog.ResourceId',
|
103
|
+
'AWS::EC2::FlowLog.ResourceType',
|
104
|
+
'AWS::EC2::FlowLog.TrafficType',
|
105
|
+
'AWS::EC2::Host.AvailabilityZone',
|
106
|
+
'AWS::EC2::Host.InstanceType',
|
107
|
+
'AWS::EC2::Instance.AvailabilityZone',
|
108
|
+
'AWS::EC2::Instance.BlockDeviceMappings',
|
109
|
+
'AWS::EC2::Instance.EbsOptimized',
|
110
|
+
'AWS::EC2::Instance.IamInstanceProfile',
|
111
|
+
'AWS::EC2::Instance.ImageId',
|
112
|
+
'AWS::EC2::Instance.InstanceType',
|
113
|
+
'AWS::EC2::Instance.KernelId',
|
114
|
+
'AWS::EC2::Instance.KeyName',
|
115
|
+
'AWS::EC2::Instance.NetworkInterfaces',
|
116
|
+
'AWS::EC2::Instance.PlacementGroupName',
|
117
|
+
'AWS::EC2::Instance.PrivateIpAddress',
|
118
|
+
'AWS::EC2::Instance.RamdiskId',
|
119
|
+
'AWS::EC2::Instance.SecurityGroupIds',
|
120
|
+
'AWS::EC2::Instance.SecurityGroups',
|
121
|
+
'AWS::EC2::Instance.SubnetId',
|
122
|
+
'AWS::EC2::Instance.Tenancy',
|
123
|
+
'AWS::EC2::Instance.UserData',
|
124
|
+
'AWS::EC2::Instance.AdditionalInfo',
|
125
|
+
'AWS::EC2::NatGateway.AllocationId',
|
126
|
+
'AWS::EC2::NatGateway.SubnetId',
|
127
|
+
'AWS::EC2::NetworkAcl.VpcId',
|
128
|
+
'AWS::EC2::NetworkAclEntry.Egress',
|
129
|
+
'AWS::EC2::NetworkAclEntry.NetworkAclId',
|
130
|
+
'AWS::EC2::NetworkAclEntry.RuleNumber',
|
131
|
+
'AWS::EC2::NetworkInterface.PrivateIpAddress',
|
132
|
+
'AWS::EC2::NetworkInterface.PrivateIpAddresses',
|
133
|
+
'AWS::EC2::NetworkInterface.SubnetId',
|
134
|
+
'AWS::EC2::PlacementGroup.Strategy',
|
135
|
+
'AWS::EC2::Route.DestinationCidrBlock',
|
136
|
+
'AWS::EC2::Route.RouteTableId',
|
137
|
+
'AWS::EC2::RouteTable.VpcId',
|
138
|
+
'AWS::EC2::SecurityGroup.GroupDescription',
|
139
|
+
'AWS::EC2::SecurityGroup.VpcId',
|
140
|
+
'AWS::EC2::SecurityGroupEgress.CidrIp',
|
141
|
+
'AWS::EC2::SecurityGroupEgress.DestinationPrefixListId',
|
142
|
+
'AWS::EC2::SecurityGroupEgress.DestinationSecurityGroupId',
|
143
|
+
'AWS::EC2::SecurityGroupEgress.FromPort',
|
144
|
+
'AWS::EC2::SecurityGroupEgress.GroupId',
|
145
|
+
'AWS::EC2::SecurityGroupEgress.IpProtocol',
|
146
|
+
'AWS::EC2::SecurityGroupEgress.ToPort',
|
147
|
+
'AWS::EC2::SecurityGroupIngress.CidrIp',
|
148
|
+
'AWS::EC2::SecurityGroupIngress.FromPort',
|
149
|
+
'AWS::EC2::SecurityGroupIngress.GroupId',
|
150
|
+
'AWS::EC2::SecurityGroupIngress.GroupName',
|
151
|
+
'AWS::EC2::SecurityGroupIngress.IpProtocol',
|
152
|
+
'AWS::EC2::SecurityGroupIngress.SourceSecurityGroupId',
|
153
|
+
'AWS::EC2::SecurityGroupIngress.SourceSecurityGroupName',
|
154
|
+
'AWS::EC2::SecurityGroupIngress.SourceSecurityGroupOwnerId',
|
155
|
+
'AWS::EC2::SecurityGroupIngress.ToPort',
|
156
|
+
'AWS::EC2::SpotFleet.SpotFleetRequestConfigData',
|
157
|
+
'AWS::EC2::Subnet.AvailabilityZone',
|
158
|
+
'AWS::EC2::Subnet.CidrBlock',
|
159
|
+
'AWS::EC2::Subnet.VpcId',
|
160
|
+
'AWS::EC2::SubnetNetworkAclAssociation.SubnetId',
|
161
|
+
'AWS::EC2::SubnetNetworkAclAssociation.NetworkAclId',
|
162
|
+
'AWS::EC2::SubnetRouteTableAssociation.SubnetId',
|
163
|
+
'AWS::EC2::VPC.CidrBlock',
|
164
|
+
'AWS::EC2::VPC.InstanceTenancy',
|
165
|
+
'AWS::EC2::VPCDHCPOptionsAssociation.VpcId',
|
166
|
+
'AWS::EC2::VPCEndpoint.ServiceName',
|
167
|
+
'AWS::EC2::VPCEndpoint.VpcId',
|
168
|
+
'AWS::EC2::VPCPeeringConnection.PeerVpcId',
|
169
|
+
'AWS::EC2::VPCPeeringConnection.VpcId',
|
170
|
+
'AWS::EC2::VPNConnection.Type',
|
171
|
+
'AWS::EC2::VPNConnection.CustomerGatewayId',
|
172
|
+
'AWS::EC2::VPNConnection.StaticRoutesOnly',
|
173
|
+
'AWS::EC2::VPNConnection.VpnGatewayId',
|
174
|
+
'AWS::EC2::VPNConnectionRoute.DestinationCidrBlock',
|
175
|
+
'AWS::EC2::VPNConnectionRoute.VpnConnectionId',
|
176
|
+
'AWS::EC2::VPNGateway.Type',
|
177
|
+
'AWS::ECR::Repository.RepositoryName',
|
178
|
+
'AWS::ECS::Cluster.ClusterName',
|
179
|
+
'AWS::ECS::Service.Cluster',
|
180
|
+
'AWS::ECS::Service.LoadBalancers',
|
181
|
+
'AWS::ECS::Service.Role',
|
182
|
+
'AWS::ECS::TaskDefinition.ContainerDefinitions',
|
183
|
+
'AWS::ECS::TaskDefinition.Family',
|
184
|
+
'AWS::ECS::TaskDefinition.TaskRoleArn',
|
185
|
+
'AWS::ECS::TaskDefinition.Volumes',
|
186
|
+
'AWS::EFS::FileSystem.PerformanceMode',
|
187
|
+
'AWS::EFS::MountTarget.FileSystemId',
|
188
|
+
'AWS::EFS::MountTarget.IpAddress',
|
189
|
+
'AWS::EFS::MountTarget.SubnetId',
|
190
|
+
'AWS::ElastiCache::CacheCluster.CacheSubnetGroupName',
|
191
|
+
'AWS::ElastiCache::CacheCluster.ClusterName',
|
192
|
+
'AWS::ElastiCache::CacheCluster.Engine',
|
193
|
+
'AWS::ElastiCache::CacheCluster.Port',
|
194
|
+
'AWS::ElastiCache::CacheCluster.PreferredAvailabilityZone',
|
195
|
+
'AWS::ElastiCache::CacheCluster.SnapshotArns',
|
196
|
+
'AWS::ElastiCache::CacheCluster.SnapshotName',
|
197
|
+
'AWS::ElastiCache::ReplicationGroup.CacheSubnetGroupName',
|
198
|
+
'AWS::ElastiCache::ReplicationGroup.NodeGroupConfiguration',
|
199
|
+
'AWS::ElastiCache::ReplicationGroup.NumNodeGroups',
|
200
|
+
'AWS::ElastiCache::ReplicationGroup.Port',
|
201
|
+
'AWS::ElastiCache::ReplicationGroup.PreferredCacheClusterAZs',
|
202
|
+
'AWS::ElastiCache::ReplicationGroup.ReplicasPerNodeGroup',
|
203
|
+
'AWS::ElastiCache::ReplicationGroup.ReplicationGroupId',
|
204
|
+
'AWS::ElastiCache::ReplicationGroup.SnapshotArns',
|
205
|
+
'AWS::ElastiCache::ReplicationGroup.SnapshotName',
|
206
|
+
'AWS::ElastiCache::SubnetGroup.CacheSubnetGroupName',
|
207
|
+
'AWS::ElasticBeanstalk::Application.ApplicationName',
|
208
|
+
'AWS::ElasticBeanstalk::ApplicationVersion.ApplicationName',
|
209
|
+
'AWS::ElasticBeanstalk::ApplicationVersion.SourceBundle',
|
210
|
+
'AWS::ElasticBeanstalk::ConfigurationTemplate.ApplicationName',
|
211
|
+
'AWS::ElasticBeanstalk::ConfigurationTemplate.EnvironmentId',
|
212
|
+
'AWS::ElasticBeanstalk::ConfigurationTemplate.SolutionStackName',
|
213
|
+
'AWS::ElasticBeanstalk::ConfigurationTemplate.SourceConfiguration',
|
214
|
+
'AWS::ElasticBeanstalk::Environment.ApplicationName',
|
215
|
+
'AWS::ElasticBeanstalk::Environment.CNAMEPrefix',
|
216
|
+
'AWS::ElasticBeanstalk::Environment.EnvironmentName',
|
217
|
+
'AWS::ElasticBeanstalk::Environment.SolutionStackName',
|
218
|
+
'AWS::ElasticLoadBalancing::LoadBalancer.AvailabilityZones',
|
219
|
+
'AWS::ElasticLoadBalancing::LoadBalancer.HealthCheck',
|
220
|
+
'AWS::ElasticLoadBalancing::LoadBalancer.LoadBalancerName',
|
221
|
+
'AWS::ElasticLoadBalancing::LoadBalancer.Scheme',
|
222
|
+
'AWS::ElasticLoadBalancing::LoadBalancer.Subnets',
|
223
|
+
'AWS::ElasticLoadBalancingV2::Listener.LoadBalancerArn',
|
224
|
+
'AWS::ElasticLoadBalancingV2::ListenerRule.ListenerArn',
|
225
|
+
'AWS::ElasticLoadBalancingV2::LoadBalancer.Name',
|
226
|
+
'AWS::ElasticLoadBalancingV2::LoadBalancer.Scheme',
|
227
|
+
'AWS::ElasticLoadBalancingV2::TargetGroup.Name',
|
228
|
+
'AWS::ElasticLoadBalancingV2::TargetGroup.Port',
|
229
|
+
'AWS::ElasticLoadBalancingV2::TargetGroup.Protocol',
|
230
|
+
'AWS::ElasticLoadBalancingV2::TargetGroup.VpcId',
|
231
|
+
'AWS::Elasticsearch::Domain.AdvancedOptions',
|
232
|
+
'AWS::Elasticsearch::Domain.DomainName',
|
233
|
+
'AWS::Elasticsearch::Domain.ElasticsearchVersion',
|
234
|
+
'AWS::EMR::Cluster.AdditionalInfo',
|
235
|
+
'AWS::EMR::Cluster.Applications',
|
236
|
+
'AWS::EMR::Cluster.BootstrapActions',
|
237
|
+
'AWS::EMR::Cluster.Configurations',
|
238
|
+
'AWS::EMR::Cluster.Instances',
|
239
|
+
'AWS::EMR::Cluster.JobFlowRole',
|
240
|
+
'AWS::EMR::Cluster.LogUri',
|
241
|
+
'AWS::EMR::Cluster.Name',
|
242
|
+
'AWS::EMR::Cluster.ReleaseLabel',
|
243
|
+
'AWS::EMR::Cluster.ServiceRole',
|
244
|
+
'AWS::EMR::InstanceGroupConfig.BidPrice',
|
245
|
+
'AWS::EMR::InstanceGroupConfig.Configurations',
|
246
|
+
'AWS::EMR::InstanceGroupConfig.EbsConfiguration',
|
247
|
+
'AWS::EMR::InstanceGroupConfig.InstanceRole',
|
248
|
+
'AWS::EMR::InstanceGroupConfig.InstanceType',
|
249
|
+
'AWS::EMR::InstanceGroupConfig.JobFlowId',
|
250
|
+
'AWS::EMR::InstanceGroupConfig.Market',
|
251
|
+
'AWS::EMR::InstanceGroupConfig.Name',
|
252
|
+
'AWS::EMR::Step.ActionOnFailure',
|
253
|
+
'AWS::EMR::Step.HadoopJarStep',
|
254
|
+
'AWS::EMR::Step.JobFlowId',
|
255
|
+
'AWS::EMR::Step.Name',
|
256
|
+
'AWS::Events::Rule.Name',
|
257
|
+
'AWS::GameLift::Build.StorageLocation',
|
258
|
+
'AWS::GameLift::Fleet.BuildId',
|
259
|
+
'AWS::GameLift::Fleet.EC2InstanceType',
|
260
|
+
'AWS::GameLift::Fleet.LogPaths',
|
261
|
+
'AWS::GameLift::Fleet.ServerLaunchParameters',
|
262
|
+
'AWS::GameLift::Fleet.ServerLaunchPath',
|
263
|
+
'AWS::IAM::AccessKey.Serial',
|
264
|
+
'AWS::IAM::AccessKey.UserName',
|
265
|
+
'AWS::IAM::Group.GroupName',
|
266
|
+
'AWS::IAM::InstanceProfile.Path',
|
267
|
+
'AWS::IAM::ManagedPolicy.Description',
|
268
|
+
'AWS::IAM::ManagedPolicy.Path',
|
269
|
+
'AWS::IAM::Role.Path',
|
270
|
+
'AWS::IAM::Role.RoleName',
|
271
|
+
'AWS::IAM::User.UserName',
|
272
|
+
'AWS::IoT::Certificate.CertificateSigningRequest',
|
273
|
+
'AWS::IoT::Policy.PolicyDocument',
|
274
|
+
'AWS::IoT::Policy.PolicyName',
|
275
|
+
'AWS::IoT::PolicyPrincipalAttachment.PolicyName',
|
276
|
+
'AWS::IoT::PolicyPrincipalAttachment.Principal',
|
277
|
+
'AWS::IoT::Thing.ThingName',
|
278
|
+
'AWS::IoT::ThingPrincipalAttachment.Principal',
|
279
|
+
'AWS::IoT::ThingPrincipalAttachment.ThingName',
|
280
|
+
'AWS::IoT::TopicRule.RuleName',
|
281
|
+
'AWS::Kinesis::Stream.Name',
|
282
|
+
'AWS::Kinesis::Stream.ShardCount',
|
283
|
+
'AWS::KinesisFirehose::DeliveryStream.DeliveryStreamName',
|
284
|
+
'AWS::KMS::Alias.AliasName',
|
285
|
+
'AWS::Lambda::EventSourceMapping.EventSourceArn',
|
286
|
+
'AWS::Lambda::EventSourceMapping.StartingPosition',
|
287
|
+
'AWS::Lambda::Alias.FunctionName',
|
288
|
+
'AWS::Lambda::Alias.Name',
|
289
|
+
'AWS::Lambda::Function.FunctionName',
|
290
|
+
'AWS::Lambda::Function.Runtime',
|
291
|
+
'AWS::Lambda::Permission.Action',
|
292
|
+
'AWS::Lambda::Permission.FunctionName',
|
293
|
+
'AWS::Lambda::Permission.Principal',
|
294
|
+
'AWS::Lambda::Permission.SourceAccount',
|
295
|
+
'AWS::Lambda::Permission.SourceArn',
|
296
|
+
'AWS::Lambda::Version.FunctionName',
|
297
|
+
'AWS::Logs::Destination.DestinationName',
|
298
|
+
'AWS::Logs::LogGroup.LogGroupName',
|
299
|
+
'AWS::Logs::LogStream.LogGroupName',
|
300
|
+
'AWS::Logs::LogStream.LogStreamName',
|
301
|
+
'AWS::Logs::MetricFilter.LogGroupName',
|
302
|
+
'AWS::Logs::SubscriptionFilter.DestinationArn',
|
303
|
+
'AWS::Logs::SubscriptionFilter.FilterPattern',
|
304
|
+
'AWS::Logs::SubscriptionFilter.LogGroupName',
|
305
|
+
'AWS::Logs::SubscriptionFilter.RoleArn',
|
306
|
+
'AWS::OpsWorks::App.Shortname',
|
307
|
+
'AWS::OpsWorks::App.StackId',
|
308
|
+
'AWS::OpsWorks::Instance.AutoScalingType',
|
309
|
+
'AWS::OpsWorks::Instance.AvailabilityZone',
|
310
|
+
'AWS::OpsWorks::Instance.EbsOptimized',
|
311
|
+
'AWS::OpsWorks::Instance.Os',
|
312
|
+
'AWS::OpsWorks::Instance.RootDeviceType',
|
313
|
+
'AWS::OpsWorks::Instance.StackId',
|
314
|
+
'AWS::OpsWorks::Instance.SubnetId',
|
315
|
+
'AWS::OpsWorks::Instance.TimeBasedAutoScaling',
|
316
|
+
'AWS::OpsWorks::Layer.StackId',
|
317
|
+
'AWS::OpsWorks::Layer.Type',
|
318
|
+
'AWS::OpsWorks::Layer.VolumeConfigurations',
|
319
|
+
'AWS::OpsWorks::Stack.ServiceRoleArn',
|
320
|
+
'AWS::OpsWorks::Stack.VpcId',
|
321
|
+
'AWS::RDS::DBCluster.AvailabilityZones',
|
322
|
+
'AWS::RDS::DBCluster.DatabaseName',
|
323
|
+
'AWS::RDS::DBCluster.DBSubnetGroupName',
|
324
|
+
'AWS::RDS::DBCluster.Engine',
|
325
|
+
'AWS::RDS::DBCluster.EngineVersion',
|
326
|
+
'AWS::RDS::DBCluster.KmsKeyId',
|
327
|
+
'AWS::RDS::DBCluster.MasterUsername',
|
328
|
+
'AWS::RDS::DBCluster.SnapshotIdentifier',
|
329
|
+
'AWS::RDS::DBCluster.StorageEncrypted',
|
330
|
+
'AWS::RDS::DBClusterParameterGroup.Description',
|
331
|
+
'AWS::RDS::DBClusterParameterGroup.Family',
|
332
|
+
'AWS::RDS::DBInstance.AvailabilityZone',
|
333
|
+
'AWS::RDS::DBInstance.CharacterSetName',
|
334
|
+
'AWS::RDS::DBInstance.DBClusterIdentifier',
|
335
|
+
'AWS::RDS::DBInstance.DBInstanceIdentifier',
|
336
|
+
'AWS::RDS::DBInstance.DBName',
|
337
|
+
'AWS::RDS::DBInstance.DBSnapshotIdentifier',
|
338
|
+
'AWS::RDS::DBInstance.DBSubnetGroupName',
|
339
|
+
'AWS::RDS::DBInstance.Engine',
|
340
|
+
'AWS::RDS::DBInstance.KmsKeyId',
|
341
|
+
'AWS::RDS::DBInstance.LicenseModel',
|
342
|
+
'AWS::RDS::DBInstance.MasterUsername',
|
343
|
+
'AWS::RDS::DBInstance.Port',
|
344
|
+
'AWS::RDS::DBInstance.PubliclyAccessible',
|
345
|
+
'AWS::RDS::DBInstance.SourceDBInstanceIdentifier',
|
346
|
+
'AWS::RDS::DBInstance.StorageEncrypted',
|
347
|
+
'AWS::RDS::DBInstance.VPCSecurityGroups',
|
348
|
+
'AWS::RDS::DBSecurityGroup.EC2VpcId',
|
349
|
+
'AWS::RDS::DBSecurityGroup.GroupDescription',
|
350
|
+
'AWS::RDS::EventSubscription.SnsTopicArn',
|
351
|
+
'AWS::RDS::EventSubscription.SourceType',
|
352
|
+
'AWS::RDS::OptionGroup.EngineName',
|
353
|
+
'AWS::RDS::OptionGroup.MajorEngineVersion',
|
354
|
+
'AWS::RDS::OptionGroup.OptionGroupDescription',
|
355
|
+
'AWS::RDS::OptionGroup.OptionConfigurations',
|
356
|
+
'AWS::Redshift::Cluster.AvailabilityZone',
|
357
|
+
'AWS::Redshift::Cluster.ClusterSubnetGroupName',
|
358
|
+
'AWS::Redshift::Cluster.DBName',
|
359
|
+
'AWS::Redshift::Cluster.ElasticIp',
|
360
|
+
'AWS::Redshift::Cluster.Encrypted',
|
361
|
+
'AWS::Redshift::Cluster.KmsKeyId',
|
362
|
+
'AWS::Redshift::Cluster.MasterUsername',
|
363
|
+
'AWS::Redshift::Cluster.OwnerAccount',
|
364
|
+
'AWS::Redshift::Cluster.Port',
|
365
|
+
'AWS::Redshift::Cluster.PubliclyAccessible',
|
366
|
+
'AWS::Redshift::Cluster.SnapshotClusterIdentifier',
|
367
|
+
'AWS::Redshift::Cluster.SnapshotIdentifier',
|
368
|
+
'AWS::Redshift::ClusterParameterGroup.Description',
|
369
|
+
'AWS::Redshift::ClusterParameterGroup.ParameterGroupFamily',
|
370
|
+
'AWS::Redshift::ClusterSecurityGroup.Description',
|
371
|
+
'AWS::Redshift::ClusterSecurityGroupIngress.ClusterSecurityGroupName',
|
372
|
+
'AWS::Redshift::ClusterSecurityGroupIngress.CIDRIP',
|
373
|
+
'AWS::Redshift::ClusterSecurityGroupIngress.EC2SecurityGroupName',
|
374
|
+
'AWS::Redshift::ClusterSecurityGroupIngress.EC2SecurityGroupOwnerId',
|
375
|
+
'AWS::Route53::HostedZone.Name',
|
376
|
+
'AWS::Route53::RecordSet.HostedZoneId',
|
377
|
+
'AWS::Route53::RecordSet.HostedZoneName',
|
378
|
+
'AWS::Route53::RecordSet.Name',
|
379
|
+
'AWS::Route53::RecordSetGroup.HostedZoneId',
|
380
|
+
'AWS::Route53::RecordSetGroup.HostedZoneName',
|
381
|
+
'AWS::S3::Bucket.BucketName',
|
382
|
+
'AWS::SNS::Topic.TopicName',
|
383
|
+
'AWS::SQS::Queue.QueueName',
|
384
|
+
'AWS::SSM::Document.Content',
|
385
|
+
'AWS::WAF::ByteMatchSet.Name',
|
386
|
+
'AWS::WAF::IPSet.Name',
|
387
|
+
'AWS::WAF::Rule.MetricName',
|
388
|
+
'AWS::WAF::Rule.Name',
|
389
|
+
'AWS::WAF::SizeConstraintSet.Name',
|
390
|
+
'AWS::WAF::SqlInjectionMatchSet.Name',
|
391
|
+
'AWS::WAF::WebACL.MetricName',
|
392
|
+
'AWS::WAF::WebACL.Name',
|
393
|
+
'AWS::WAF::XssMatchSet.Name',
|
394
|
+
'AWS::WorkSpaces::Workspace.DirectoryId',
|
395
|
+
'AWS::WorkSpaces::Workspace.UserName'
|
396
|
+
].freeze
|
397
|
+
end
|
398
|
+
end
|
399
|
+
end
|
@@ -184,7 +184,10 @@ module Convection
|
|
184
184
|
def properties(memo = {}, path = '')
|
185
185
|
keys.each do |key|
|
186
186
|
if self[key].is_a?(Hash) || self[key].is_a?(Array)
|
187
|
-
|
187
|
+
new_path = "#{path}#{path.empty? ? '' : '.'}#{key}"
|
188
|
+
resource_type = self['Type']
|
189
|
+
new_path = "#{new_path}.#{resource_type}" if resource_type
|
190
|
+
self[key].properties(memo, new_path)
|
188
191
|
else
|
189
192
|
memo["#{path}.#{key}"] = self[key]
|
190
193
|
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: 1.0.0.pre.beta.
|
4
|
+
version: 1.0.0.pre.beta.8
|
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-
|
11
|
+
date: 2016-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/convection/model/mixin/policy.rb
|
130
130
|
- lib/convection/model/mixin/protocol.rb
|
131
131
|
- lib/convection/model/mixin/taggable.rb
|
132
|
+
- lib/convection/model/replace_properties.rb
|
132
133
|
- lib/convection/model/template.rb
|
133
134
|
- lib/convection/model/template/condition.rb
|
134
135
|
- lib/convection/model/template/mapping.rb
|
@@ -294,6 +295,7 @@ files:
|
|
294
295
|
- spec/convection/model/template/validate_resources_spec.rb
|
295
296
|
- spec/ec2_client_context.rb
|
296
297
|
- spec/spec_helper.rb
|
298
|
+
- tmp/process_html.sh
|
297
299
|
- yard_extensions.rb
|
298
300
|
- yard_extensions/properties_handler.rb
|
299
301
|
- yard_extensions/type_handler.rb
|