skywriter 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +8 -0
  5. data/CHANGES.md +5 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.md +22 -0
  8. data/README.md +139 -0
  9. data/Rakefile +7 -0
  10. data/lib/skywriter/function.rb +133 -0
  11. data/lib/skywriter/resource/auto_scaling/auto_scaling_group.rb +28 -0
  12. data/lib/skywriter/resource/auto_scaling/launch_configuration.rb +28 -0
  13. data/lib/skywriter/resource/auto_scaling/scaling_policy.rb +18 -0
  14. data/lib/skywriter/resource/auto_scaling/scheduled_action.rb +21 -0
  15. data/lib/skywriter/resource/auto_scaling/trigger.rb +26 -0
  16. data/lib/skywriter/resource/cloud_formation/authentication.rb +46 -0
  17. data/lib/skywriter/resource/cloud_formation/custom_resource.rb +17 -0
  18. data/lib/skywriter/resource/cloud_formation/stack.rb +15 -0
  19. data/lib/skywriter/resource/cloud_formation/wait_condition.rb +15 -0
  20. data/lib/skywriter/resource/cloud_formation/wait_condition_handle.rb +12 -0
  21. data/lib/skywriter/resource/cloud_front/distribution.rb +13 -0
  22. data/lib/skywriter/resource/cloud_watch/alarm.rb +27 -0
  23. data/lib/skywriter/resource/dynamo_db/table.rb +18 -0
  24. data/lib/skywriter/resource/ec2/customer_gateway.rb +16 -0
  25. data/lib/skywriter/resource/ec2/dhcp_options.rb +18 -0
  26. data/lib/skywriter/resource/ec2/eip.rb +14 -0
  27. data/lib/skywriter/resource/ec2/eip_association.rb +17 -0
  28. data/lib/skywriter/resource/ec2/instance.rb +34 -0
  29. data/lib/skywriter/resource/ec2/internet_gateway.rb +13 -0
  30. data/lib/skywriter/resource/ec2/network_acl.rb +14 -0
  31. data/lib/skywriter/resource/ec2/network_acl_entry.rb +20 -0
  32. data/lib/skywriter/resource/ec2/network_interface.rb +20 -0
  33. data/lib/skywriter/resource/ec2/network_interface_attachment.rb +16 -0
  34. data/lib/skywriter/resource/ec2/route.rb +17 -0
  35. data/lib/skywriter/resource/ec2/route_table.rb +14 -0
  36. data/lib/skywriter/resource/ec2/security_group.rb +17 -0
  37. data/lib/skywriter/resource/ec2/security_group_egress.rb +23 -0
  38. data/lib/skywriter/resource/ec2/security_group_ingress.rb +26 -0
  39. data/lib/skywriter/resource/ec2/subnet.rb +16 -0
  40. data/lib/skywriter/resource/ec2/subnet_network_acl_association.rb +14 -0
  41. data/lib/skywriter/resource/ec2/subnet_route_table_association.rb +14 -0
  42. data/lib/skywriter/resource/ec2/volume.rb +18 -0
  43. data/lib/skywriter/resource/ec2/volume_attachment.rb +15 -0
  44. data/lib/skywriter/resource/ec2/vpc.rb +17 -0
  45. data/lib/skywriter/resource/ec2/vpc_dhcp_options_association.rb +14 -0
  46. data/lib/skywriter/resource/ec2/vpc_gateway_attachment.rb +15 -0
  47. data/lib/skywriter/resource/ec2/vpn_connection.rb +17 -0
  48. data/lib/skywriter/resource/ec2/vpn_connection_route.rb +14 -0
  49. data/lib/skywriter/resource/ec2/vpn_gateway.rb +14 -0
  50. data/lib/skywriter/resource/ec2/vpn_gateway_route_propagation.rb +14 -0
  51. data/lib/skywriter/resource/elasti_cache/cache_cluster.rb +27 -0
  52. data/lib/skywriter/resource/elastic_beanstalk/application.rb +14 -0
  53. data/lib/skywriter/resource/elastic_beanstalk/application_version.rb +15 -0
  54. data/lib/skywriter/resource/elastic_beanstalk/configuration_template.rb +18 -0
  55. data/lib/skywriter/resource/elastic_beanstalk/environment.rb +21 -0
  56. data/lib/skywriter/resource/elastic_load_balancing/load_balancer.rb +25 -0
  57. data/lib/skywriter/resource/elasticache/parameter_group.rb +15 -0
  58. data/lib/skywriter/resource/elasticache/security_group.rb +13 -0
  59. data/lib/skywriter/resource/elasticache/security_group_ingress.rb +15 -0
  60. data/lib/skywriter/resource/elasticache/subnet_group.rb +14 -0
  61. data/lib/skywriter/resource/iam/access_key.rb +16 -0
  62. data/lib/skywriter/resource/iam/group.rb +15 -0
  63. data/lib/skywriter/resource/iam/instance_profile.rb +15 -0
  64. data/lib/skywriter/resource/iam/policy.rb +18 -0
  65. data/lib/skywriter/resource/iam/role.rb +13 -0
  66. data/lib/skywriter/resource/iam/user.rb +17 -0
  67. data/lib/skywriter/resource/iam/user_to_group_addition.rb +15 -0
  68. data/lib/skywriter/resource/logical_name_pointer.rb +11 -0
  69. data/lib/skywriter/resource/pointer.rb +23 -0
  70. data/lib/skywriter/resource/rds/db_instance.rb +37 -0
  71. data/lib/skywriter/resource/rds/db_parameter_group.rb +17 -0
  72. data/lib/skywriter/resource/rds/db_security_group.rb +17 -0
  73. data/lib/skywriter/resource/rds/db_security_group_ingress.rb +18 -0
  74. data/lib/skywriter/resource/rds/db_subnet_group.rb +16 -0
  75. data/lib/skywriter/resource/redshift/cluster.rb +37 -0
  76. data/lib/skywriter/resource/redshift/cluster_parameter_group.rb +16 -0
  77. data/lib/skywriter/resource/redshift/cluster_security_group.rb +14 -0
  78. data/lib/skywriter/resource/redshift/cluster_security_group_ingress.rb +17 -0
  79. data/lib/skywriter/resource/redshift/cluster_subnet_group.rb +15 -0
  80. data/lib/skywriter/resource/ref_pointer.rb +11 -0
  81. data/lib/skywriter/resource/route_53/record_set.rb +24 -0
  82. data/lib/skywriter/resource/route_53/record_set_group.rb +17 -0
  83. data/lib/skywriter/resource/s3/bucket.rb +17 -0
  84. data/lib/skywriter/resource/s3/bucket_policy.rb +15 -0
  85. data/lib/skywriter/resource/sdb/domain.rb +13 -0
  86. data/lib/skywriter/resource/sns/topic.rb +16 -0
  87. data/lib/skywriter/resource/sns/topic_policy.rb +15 -0
  88. data/lib/skywriter/resource/sqs/queue.rb +18 -0
  89. data/lib/skywriter/resource/sqs/queue_policy.rb +15 -0
  90. data/lib/skywriter/resource.rb +165 -0
  91. data/lib/skywriter/resource_property/README.md +64 -0
  92. data/lib/skywriter/resource_property/auto_scaling/block_device_mapping.rb +12 -0
  93. data/lib/skywriter/resource_property/auto_scaling/ebs_block_device.rb +17 -0
  94. data/lib/skywriter/resource_property/auto_scaling/notification_configuration.rb +11 -0
  95. data/lib/skywriter/resource_property/auto_scaling/tag.rb +15 -0
  96. data/lib/skywriter/resource_property/cloud_formation/resource_tag.rb +12 -0
  97. data/lib/skywriter/resource_property/cloud_front/cache_behavior.rb +14 -0
  98. data/lib/skywriter/resource_property/cloud_front/custom_origin.rb +11 -0
  99. data/lib/skywriter/resource_property/cloud_front/default_cache_behavior.rb +13 -0
  100. data/lib/skywriter/resource_property/cloud_front/distribution_config.rb +16 -0
  101. data/lib/skywriter/resource_property/cloud_front/forwarded_value.rb +13 -0
  102. data/lib/skywriter/resource_property/cloud_front/logging.rb +10 -0
  103. data/lib/skywriter/resource_property/cloud_front/origin.rb +12 -0
  104. data/lib/skywriter/resource_property/cloud_front/s3_origin.rb +9 -0
  105. data/lib/skywriter/resource_property/cloud_watch/metric_dimension.rb +10 -0
  106. data/lib/skywriter/resource_property/dynamo_db/attribute_definition.rb +12 -0
  107. data/lib/skywriter/resource_property/dynamo_db/global_secondary_index.rb +14 -0
  108. data/lib/skywriter/resource_property/dynamo_db/key_schema.rb +10 -0
  109. data/lib/skywriter/resource_property/dynamo_db/local_secondary_index.rb +13 -0
  110. data/lib/skywriter/resource_property/dynamo_db/projection.rb +12 -0
  111. data/lib/skywriter/resource_property/dynamo_db/provisioned_throughput.rb +10 -0
  112. data/lib/skywriter/resource_property/ec2/block_device_mapping.rb +12 -0
  113. data/lib/skywriter/resource_property/ec2/ebs_block_device.rb +15 -0
  114. data/lib/skywriter/resource_property/ec2/icmp.rb +10 -0
  115. data/lib/skywriter/resource_property/ec2/mount_point.rb +10 -0
  116. data/lib/skywriter/resource_property/ec2/network_interface.rb +18 -0
  117. data/lib/skywriter/resource_property/ec2/network_interface_association.rb +12 -0
  118. data/lib/skywriter/resource_property/ec2/network_interface_attachment.rb +10 -0
  119. data/lib/skywriter/resource_property/ec2/network_interface_group_item.rb +10 -0
  120. data/lib/skywriter/resource_property/ec2/network_interface_private_ip_specification.rb +10 -0
  121. data/lib/skywriter/resource_property/ec2/port_range.rb +10 -0
  122. data/lib/skywriter/resource_property/ec2/security_group_rule.rb +12 -0
  123. data/lib/skywriter/resource_property/ec2/tag.rb +10 -0
  124. data/lib/skywriter/resource_property/elastic_beanstalk/environment_tier.rb +11 -0
  125. data/lib/skywriter/resource_property/elastic_beanstalk/option_setting.rb +13 -0
  126. data/lib/skywriter/resource_property/elastic_beanstalk/source_bundle.rb +10 -0
  127. data/lib/skywriter/resource_property/elastic_beanstalk/source_configuration.rb +10 -0
  128. data/lib/skywriter/resource_property/elastic_load_balancing/app_cookie_stickiness_policy.rb +10 -0
  129. data/lib/skywriter/resource_property/elastic_load_balancing/health_check.rb +13 -0
  130. data/lib/skywriter/resource_property/elastic_load_balancing/lb_cookie_stickiness_policy.rb +10 -0
  131. data/lib/skywriter/resource_property/elastic_load_balancing/listener.rb +14 -0
  132. data/lib/skywriter/resource_property/elastic_load_balancing/policy.rb +13 -0
  133. data/lib/skywriter/resource_property/rds/security_group_rule.rb +12 -0
  134. data/lib/skywriter/resource_property/redshift/parameter.rb +10 -0
  135. data/lib/skywriter/resource_property/route53/alias_target.rb +10 -0
  136. data/lib/skywriter/resource_property/s3/website_configuration_policy.rb +16 -0
  137. data/lib/skywriter/resource_property/sns/subscription.rb +10 -0
  138. data/lib/skywriter/resource_property/sqs/redrive_policy.rb +10 -0
  139. data/lib/skywriter/resource_property.rb +57 -0
  140. data/lib/skywriter/template.rb +143 -0
  141. data/lib/skywriter/version.rb +3 -0
  142. data/lib/skywriter.rb +8 -0
  143. data/skywriter.gemspec +29 -0
  144. data/spec/skywriter/function_spec.rb +99 -0
  145. data/spec/skywriter/resource/cloud_formation/authentication_spec.rb +36 -0
  146. data/spec/skywriter/resource/cloud_formation/custom_resource_spec.rb +30 -0
  147. data/spec/skywriter/resource/logical_name_pointer_spec.rb +15 -0
  148. data/spec/skywriter/resource/ref_pointer_spec.rb +15 -0
  149. data/spec/skywriter/resource_property/ec2/security_group_rule_spec.rb +7 -0
  150. data/spec/skywriter/resource_property_spec.rb +153 -0
  151. data/spec/skywriter/resource_spec.rb +236 -0
  152. data/spec/skywriter/template_spec.rb +246 -0
  153. data/spec/spec_helper.rb +29 -0
  154. metadata +306 -0
@@ -0,0 +1,165 @@
1
+ module Skywriter
2
+ module Resource
3
+ module DSL
4
+ # Declare a Resource property
5
+ #
6
+ # @param name [Symbol] The property name as it exists in the AWS documentation
7
+ def property(name)
8
+ property_definitions << PropertyDefinition.new(name)
9
+ end
10
+
11
+ # A list of PropertyDefinition instances defined for this Resource
12
+ #
13
+ def property_definitions
14
+ @property_definitions ||= []
15
+ end
16
+
17
+ private
18
+
19
+ def self.extended(base)
20
+ type_name = base.name.gsub("Skywriter::Resource", "AWS")
21
+
22
+ base.send(:define_method, :type) do
23
+ type_name
24
+ end
25
+ end
26
+
27
+ class PropertyDefinition
28
+ attr_reader :name, :key
29
+
30
+ def initialize(name)
31
+ @name = name.to_s
32
+ @key = name.to_s.underscore.to_sym
33
+ end
34
+ end
35
+ end
36
+
37
+ attr_reader :logical_name
38
+
39
+ # @param [String] logical_name The logical name of this Resource. Will be
40
+ # used as the hash key in the 'Resources' hash
41
+ # @param [Hash] options Options hash. Valid values depend on the
42
+ # implementing class - see the AWS documentation at
43
+ # http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html
44
+ # for details. Additionally, you can pass `:additional_dependencies` as
45
+ # described in the README. And `:deletion_policy`, `:metadata` and
46
+ # `:update_policy`.
47
+ #
48
+ def initialize(logical_name, options = {})
49
+ @logical_name = logical_name
50
+
51
+ @additional_dependencies = Set.new(Array(delete_liberally(options, :additional_dependencies)))
52
+ @deletion_policy = delete_liberally(options, :deletion_policy)
53
+ @metadata = delete_liberally(options, :metadata)
54
+ @update_policy = delete_liberally(options, :update_policy)
55
+
56
+ @options = options.freeze
57
+ end
58
+
59
+ # Returns a hash representing the Resource
60
+ #
61
+ # @return [Hash] A JSON-able hash
62
+ #
63
+ def as_json(*)
64
+ Thread.current[:skywriter_as_json_context] = self
65
+
66
+ { logical_name =>
67
+ {
68
+ 'Type' => type,
69
+ 'Properties' => properties.as_json,
70
+ 'DependsOn' => all_dependencies,
71
+ 'Metadata' => metadata,
72
+ 'DeletionPolicy' => deletion_policy,
73
+ 'UpdatePolicy' => update_policy,
74
+ }.reject { |key, value| value.nil? }
75
+ }
76
+ ensure
77
+ Thread.current[:skywriter_as_json_context] = nil
78
+ end
79
+
80
+ # Returns a pointer to this Resource
81
+ #
82
+ # Pointers represent references to resources defined elsewhere in
83
+ # a template. In most cases pointers serialize to something like
84
+ #
85
+ # @example
86
+ # { "Ref" => "logical_name" }
87
+ #
88
+ # In some cases, you might need to refer to a resource using its
89
+ # logical name directly (as opposed to nested in a hash as shown),
90
+ # in which case you can tell `as_pointer` to point with the resource's
91
+ # logical name:
92
+ #
93
+ # @example
94
+ # resource.as_pointer(with: :logical_name)
95
+ #
96
+ # @param with [:ref, :logical_name] How this pointer should be
97
+ # rendered in JSON. Use `:ref` to generate {"Ref": "foo"},
98
+ # and `:logical_name` to generate "foo"
99
+ #
100
+ # @return [Skywriter::Resource::Pointer] A pointer to this resource
101
+ #
102
+ def as_pointer(options = {})
103
+ with = options[:with] || :ref
104
+ case with
105
+ when :ref
106
+ Skywriter::Resource::RefPointer.new(self)
107
+ when :logical_name
108
+ Skywriter::Resource::LogicalNamePointer.new(self)
109
+ else
110
+ raise ArgumentError, "Unrecognized 'with' value '#{with}'"
111
+ end
112
+ end
113
+
114
+ # @api private
115
+ #
116
+ # @param dependency [Skywriter::Resource] A Resource upon which this resource depends.
117
+ #
118
+ def register_dependency(dependency)
119
+ magical_dependencies << dependency.logical_name
120
+ end
121
+
122
+ private
123
+
124
+ attr_reader :options, :additional_dependencies, :deletion_policy, :metadata,
125
+ :update_policy
126
+
127
+ def self.included(base)
128
+ base.extend(DSL)
129
+ end
130
+
131
+ def all_dependencies
132
+ (additional_dependencies + magical_dependencies).to_a
133
+ end
134
+
135
+ def delete_liberally(hash, key)
136
+ hash.delete(key.to_sym) ||
137
+ hash.delete(key.to_s) ||
138
+ hash.delete(key.to_s.camelcase) ||
139
+ hash.delete(key.to_s.camelcase.to_sym)
140
+ end
141
+
142
+ def magical_dependencies
143
+ @magical_dependencies ||= Set.new
144
+ end
145
+
146
+ def properties
147
+ @properties ||= property_definitions.each_with_object({}) do |property_definition, hash|
148
+ if (value = property_value(property_definition))
149
+ hash[property_definition.name] = value
150
+ end
151
+ end
152
+ end
153
+
154
+ def property_value(property_definition)
155
+ options[property_definition.key.to_sym] ||
156
+ options[property_definition.key.to_s] ||
157
+ options[property_definition.name.to_sym] ||
158
+ options[property_definition.name.to_s]
159
+ end
160
+
161
+ def property_definitions
162
+ self.class.property_definitions
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,64 @@
1
+ # ResourceProperty Conversions
2
+
3
+ The AWS CloudFormation documentation uses inconsistent naming conventions
4
+ for Resource Properties. We've attempted to normalize these names, and have
5
+ provided the following mapping for reference.
6
+
7
+ Amazon Name | Skywalker Class | Naming Comments
8
+ ----------- | --------------- | ---------------
9
+ AWS CloudFormation AutoScaling Block Device Mapping Property Type | |
10
+ AWS CloudFormation AutoScaling EBS Block Device Property Type | |
11
+ Auto Scaling NotificationConfiguration Property Type | |
12
+ Auto Scaling Tags Property Type | |
13
+ CloudFormation Stack Parameters Property Type | |
14
+ CloudFront CacheBehavior Type | |
15
+ CloudFront ForwardedValues Type | |
16
+ CloudFront CustomOrigin Type | *::CloudFront::CustomOrigin | dropped 'Type'
17
+ CloudFront DefaultCacheBehavior Type | *::CloudFront::DefaultCacheBehavior | dropped 'Type'
18
+ CloudFront DistributionConfig Type | *::CloudFront::DistributionConfig | dropped 'Type'
19
+ CloudFront Logging Type | *::CloudFront::Logging | dropped 'Type'
20
+ CloudFront Origin Type | *::CloudFront::Origin | dropped 'Type'
21
+ CloudFront S3Origin Type | *::CloudFront::S3Origin | dropped 'Type'
22
+ CloudWatch Metric Dimension Property Type | *::CloudWatch::MetricDimension | dropped 'Property Type'
23
+ DynamoDB Attribute Definitions | *::DynamoDB::AttributeDefinition |
24
+ DynamoDB Global Secondary Indexes | *::DynamoDB::GlobalSecondaryIndex | made singular
25
+ DynamoDB Key Schema | *::DynamoDB::KeySchema |
26
+ DynamoDB Local Secondary Indexes | *::DynamoDB::LocalSecondaryIndex | made singular
27
+ DynamoDB Projection Object | *::DynamoDB::Projection | dropped 'Object'
28
+ DynamoDB Provisioned Throughput | *::DynamoDB::ProvisionedThroughput |
29
+ AWS CloudFormation EC2 Block Device Mapping Property Type | *::EC2::BlockDeviceMapping | dropped 'Type'
30
+ AWS CloudFormation EC2 Block Device Property Type | *::EC2::EBSBlockDevice | dropped 'Type'
31
+ EC2 ICMP Property Type | *::EC2::ICMP | dropped 'Type'
32
+ EC2 MountPoint Property Type | *::EC2::MountPoint | dropped 'Type'
33
+ EC2 NetworkInterface Embedded Property Type | *::EC2::NetworkInterface | dropped 'Type'
34
+ EC2 Network Interface Association | *::EC2::NetworkInterfaceAssociation |
35
+ EC2 Network Interface Attachment | *::EC2::NetworkInterfaceAttachment |
36
+ EC2 Network Interface Group Item | *::EC2::NetworkInterfaceGroupItem |
37
+ EC2 Network Interface Private IP Specification | *::EC2::NetworkInterfacePrivateIPSpecification |
38
+ EC2 PortRange Property Type | *::EC2::PortRange | dropped 'Type'
39
+ EC2 Security Group Rule Property Type | *::EC2::SecurityGroupRule | dropped 'Type'
40
+ EC2 Tag | *::EC2::Tag |
41
+ AWS Elastic Beanstalk Environment Tier Property Type | *::ElasticBeanstalk::EnvironmentTier | dropped 'Property Type'
42
+ AWS Elastic Beanstalk OptionSettings Property Type | *::ElasticBeanstalk::OptionSetting | dropped 'Property Type', made singular
43
+ AWS Elastic Beanstalk SourceBundle Property Type | *::ElasticBeanstalk::SourceBundle | dropped 'Property Type'
44
+ AWS Elastic Beanstalk SourceConfiguration Property Type | *::ElasticBeanstalk::SourceConfiguration | dropped 'Property Type'
45
+ ElasticLoadBalancing AppCookieStickinessPolicy Type | *::ElasticLoadBalancing::AppCookieStickinessPolicy | dropped 'Type'
46
+ ElasticLoadBalancing HealthCheck Type | *::ElasticLoadBalancing::HealthCheck | dropped 'Type'
47
+ ElasticLoadBalancing LBCookieStickinessPolicy Type | *::ElasticLoadBalancing::LBCookieStickinessPolicy | dropped 'Type'
48
+ ElasticLoadBalancing Listener Property Type | *::ElasticLoadBalancing::Listener | dropped 'Property Type'
49
+ ElasticLoadBalancing Policy Type | *::ElasticLoadBalancing::Policy | dropped 'Type'
50
+ Name Type | |
51
+ Amazon Redshift Parameter Type | *::Redshift::Parameter | dropped 'Type'
52
+ AWS CloudFormation Resource Tags Type | *::CloudFormation::ResourceTag | dropped 'Type', made singular
53
+ RDS Security Group Rule | *::RDS::SecurityGroupRule |
54
+ Route 53 AliasTarget Property Type | *::Route53::AliasTarget | dropped 'Property Type'
55
+ AWS CloudFormation Website Configuration Property Type | *::S3::WebsiteConfiguration | dropped 'Property Type', inferred namespace
56
+ SNS Subscription Property Type | *::SNS::Subscription | dropped 'Property Type'
57
+ Amazon SQS RedrivePolicy | *::SQS::RedrivePolicy |
58
+
59
+ In general, Resource Property names have been stripped of `Type`, `Property Type` and
60
+ 'Embedded Property Type', and product namespaces (ie `SQS`, `ElasticLoadBalancing`)
61
+ have been inferred from the documentation where possible. When a type is called out
62
+ as being an 'embedded property' of namespaced resource, that namespace has been adopted for
63
+ the Resource Property. In some cases plural forms have been made singular (where the
64
+ entity being described is singular).
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module AutoScaling
4
+ class BlockDeviceMapping < Skywriter::ResourceProperty
5
+ property :DeviceName
6
+ property :Ebs
7
+ property :NoDevice
8
+ property :VirtualName
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module AutoScaling
4
+ class EBSBlockDevice < Skywriter::ResourceProperty
5
+ property :DeleteOnTermination
6
+ property :Iops
7
+ property :SnapshotId
8
+ property :VolumeSize
9
+ property :VolumeType
10
+ end
11
+
12
+ BlockDevice = EBSBlockDevice
13
+
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,11 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module AutoScaling
4
+ class NotificationConfiguration < Skywriter::ResourceProperty
5
+ property :TopicARN
6
+ property :NotificationTypes
7
+ end
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,15 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module AutoScaling
4
+ class Tag < Skywriter::ResourceProperty
5
+ property :Key
6
+ property :Value
7
+ property :PropagateAtLaunch
8
+ end
9
+
10
+ Tags = Tag
11
+
12
+ end
13
+ end
14
+ end
15
+
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFormation
4
+ class ResourceTag < Skywriter::ResourceProperty
5
+ property :Key
6
+ property :Value
7
+ end
8
+
9
+ ResourceTags = ResourceTag
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class CacheBehavior < Skywriter::ResourceProperty
5
+ property :TargetOriginId
6
+ property :ForwardedValues
7
+ property :TrustedSigners
8
+ property :ViewerProtocolPolicy
9
+ property :MinTTL
10
+ property :PathPattern
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class CustomOrigin < Skywriter::ResourceProperty
5
+ property :HTTPPort
6
+ property :HTTPSPort
7
+ property :OriginProtocolPolicy
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class DefaultCacheBehavior < Skywriter::ResourceProperty
5
+ property :TargetOriginId
6
+ property :ForwardedValues
7
+ property :TrustedSigners
8
+ property :ViewerProtocolPolicy
9
+ property :MinTTL
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class DistributionConfig < Skywriter::ResourceProperty
5
+ property :Aliases
6
+ property :CacheBehaviors
7
+ property :Comment
8
+ property :DefaultCacheBehavior
9
+ property :DefaultRootObject
10
+ property :Enabled
11
+ property :Logging
12
+ property :Origins
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class ForwardedValue < Skywriter::ResourceProperty
5
+ property :QueryString
6
+ end
7
+
8
+ ForwardedValues = ForwardedValue
9
+
10
+ end
11
+ end
12
+ end
13
+
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class Logging < Skywriter::ResourceProperty
5
+ property :Bucket
6
+ property :Prefix
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class Origin < Skywriter::ResourceProperty
5
+ property :DomainName
6
+ property :Id
7
+ property :S3OriginConfig
8
+ property :CustomOriginConfig
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudFront
4
+ class S3Origin < Skywriter::ResourceProperty
5
+ property :OriginAccessIdentity
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module CloudWatch
4
+ class MetricDimension < Skywriter::ResourceProperty
5
+ property :Name
6
+ property :Value
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class AttributeDefinition < Skywriter::ResourceProperty
5
+ property :AttributeName
6
+ property :AttributeType
7
+ end
8
+
9
+ AttributeDefinitions = AttributeDefinition
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class GlobalSecondaryIndex < Skywriter::ResourceProperty
5
+ property :IndexName
6
+ property :KeySchema
7
+ property :Projection
8
+ property :ProvisionedThroughput
9
+ end
10
+
11
+ GlobalSecondaryIndexes = GlobalSecondaryIndex
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class KeySchema < Skywriter::ResourceProperty
5
+ property :AttributeName
6
+ property :KeyType
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class LocalSecondaryIndex < Skywriter::ResourceProperty
5
+ property :IndexName
6
+ property :KeySchema
7
+ property :Projection
8
+ end
9
+
10
+ LocalSecondaryIndexes = LocalSecondaryIndex
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class Projection < Skywriter::ResourceProperty
5
+ property :NonKeyAttributes
6
+ property :ProjectionType
7
+ end
8
+
9
+ ProjectionObject = Projection
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module DynamoDB
4
+ class ProvisionedThroughput < Skywriter::ResourceProperty
5
+ property :ReadCapacityUnits
6
+ property :WriteCapacityUnits
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class BlockDeviceMapping < Skywriter::ResourceProperty
5
+ property :DeviceName
6
+ property :Ebs
7
+ property :NoDevice
8
+ property :VirtualName
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class EBSBlockDevice < Skywriter::ResourceProperty
5
+ property :DeleteOnTermination
6
+ property :Iops
7
+ property :SnapshotId
8
+ property :VolumeSize
9
+ property :VolumeType
10
+ end
11
+
12
+ BlockDevice = EBSBlockDevice
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class ICMP < Skywriter::ResourceProperty
5
+ property :Code
6
+ property :Type
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class MountPoint < Skywriter::ResourceProperty
5
+ property :Device
6
+ property :VolumeId
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class NetworkInterface < Skywriter::ResourceProperty
5
+ property :AssociatePublicIpAddress
6
+ property :DeleteOnTermination
7
+ property :Description
8
+ property :DeviceIndex
9
+ property :GroupSet
10
+ property :NetworkInterfaceId
11
+ property :PrivateIpAddress
12
+ property :PrivateIpAddresses
13
+ property :SecondaryPrivateIpAddressCount
14
+ property :SubnetId
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class NetworkInterfaceAssociation < Skywriter::ResourceProperty
5
+ property :AttachmentID
6
+ property :InstanceID
7
+ property :PublicIp
8
+ property :IpOwnerId
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class NetworkInterfaceAttachment < Skywriter::ResourceProperty
5
+ property :AttachmentID
6
+ property :InstanceID
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class NetworkInterfaceGroupItem < Skywriter::ResourceProperty
5
+ property :GroupId
6
+ property :GroupName
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class NetworkInterfacePrivateIPSpecification < Skywriter::ResourceProperty
5
+ property :PrivateIpAddress
6
+ property :Primary
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class PortRange < Skywriter::ResourceProperty
5
+ property :From
6
+ property :To
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class SecurityGroupRule < Skywriter::ResourceProperty
5
+ property :FromPort
6
+ property :ToPort
7
+ property :IpProtocol
8
+ property :CidrIp
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Skywriter
2
+ class ResourceProperty
3
+ module EC2
4
+ class Tag < Skywriter::ResourceProperty
5
+ property :Key
6
+ property :Value
7
+ end
8
+ end
9
+ end
10
+ end