skywriter 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES.md +4 -0
- data/README.md +44 -1
- data/lib/skywriter/resource/ec2/security_group_egress.rb +8 -13
- data/lib/skywriter/resource/ec2/security_group_ingress.rb +7 -12
- data/lib/skywriter/resource_property/ec2/security_group_rule.rb +4 -0
- data/lib/skywriter/version.rb +1 -1
- data/spec/skywriter/resource_property_spec.rb +0 -2
- data/spec/skywriter/resource_spec.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21e9ce779f11dc3f1518c50799d1ad7889783be7
|
4
|
+
data.tar.gz: 8243e639f2e81b2199356555e4cb1fb2afc0f1c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41ad5d4b828fa5b40762ddb0b12a2a6183f40c5d33af1e55cf77b9c5a5e7b87cd87931b8506f5dd6730b7ce8cc1a0b2ca6c51602c82599b37acedffe2cd9e09a
|
7
|
+
data.tar.gz: 401a89ec7ac21a2c20026b94648e55894d2fed3cc01e4532808503ac69c0d910a0c260851bf64186da49caf6923792b5523733f52b55ca0d3ad29cb268d194da
|
data/CHANGES.md
CHANGED
data/README.md
CHANGED
@@ -11,6 +11,8 @@ runnable code provides some benefits like variable assignment, that make the
|
|
11
11
|
need to use CloudFormation's build-in functions superfluous (of course,
|
12
12
|
Skywriter still has helpers for those functions, if you need them).
|
13
13
|
|
14
|
+
[RDoc](http://rubydoc.info/gems/skywriter/frames)
|
15
|
+
|
14
16
|
|
15
17
|
## Features
|
16
18
|
|
@@ -36,6 +38,47 @@ Resource.new(
|
|
36
38
|
# }}
|
37
39
|
```
|
38
40
|
|
41
|
+
### Template Merging
|
42
|
+
|
43
|
+
`Template#merge` can be helpful for intelligently merging two CloudFormation
|
44
|
+
templates. If the same resource exists in both templates it will be included
|
45
|
+
in the output, but if two different resources with the same logical name exist
|
46
|
+
and exception will be raised. Otherwise the output will be the union of the
|
47
|
+
two templates.
|
48
|
+
|
49
|
+
``` ruby
|
50
|
+
Template.new(
|
51
|
+
resources: [Resource.new('ResourceName', foo: 'bar')]
|
52
|
+
).merge(
|
53
|
+
Template.new(
|
54
|
+
resources: [Resource.new('ResourceName', foo: 'bar')]
|
55
|
+
)
|
56
|
+
).as_json['Resources'] # => {'Resource' => {'Foo' => 'bar'}}
|
57
|
+
|
58
|
+
|
59
|
+
Template.new(
|
60
|
+
resources: [Resource.new('ResourceName', foo: 'bar')]
|
61
|
+
).merge(
|
62
|
+
Template.new(
|
63
|
+
resources: [Resource.new('ResourceName', baz: 'qux')]
|
64
|
+
)
|
65
|
+
).as_json # => Skywriter::Template::MergeError raised
|
66
|
+
```
|
67
|
+
|
68
|
+
Note that you can create a `Template` instance from an existing
|
69
|
+
CloudFormation template. This can be useful for making incremental
|
70
|
+
changes to existing documents.
|
71
|
+
|
72
|
+
``` ruby
|
73
|
+
my_old_janky_cf_template = File.open('cf.json')
|
74
|
+
|
75
|
+
Template.new(
|
76
|
+
JSON.load(my_old_janky_cf_template)
|
77
|
+
).merge(
|
78
|
+
new_hotness
|
79
|
+
)
|
80
|
+
```
|
81
|
+
|
39
82
|
See the example section below for some more concrete examples.
|
40
83
|
|
41
84
|
|
@@ -101,7 +144,7 @@ my_db = Skywriter::Resource::RDS::DBInstance.new(
|
|
101
144
|
availability_zone: "us-east-1a",
|
102
145
|
db_name: "my_db",
|
103
146
|
engine: "MySQL",
|
104
|
-
db_security_groups: ["old_sg", my_db_sg.as_pointer]
|
147
|
+
db_security_groups: ["old_sg", my_db_sg.as_pointer(with: :logical_name)]
|
105
148
|
)
|
106
149
|
|
107
150
|
|
@@ -3,21 +3,16 @@ module Skywriter
|
|
3
3
|
module EC2
|
4
4
|
# AWS::EC2::SecurityGroupEgress Resource
|
5
5
|
#
|
6
|
-
class SecurityGroupEgress
|
7
|
-
|
6
|
+
class SecurityGroupEgress
|
7
|
+
include Skywriter::Resource
|
8
|
+
|
8
9
|
property :GroupId
|
10
|
+
property :IpProtocol
|
11
|
+
property :CidrIp
|
12
|
+
property :DestinationSecurityGroupId
|
13
|
+
property :FromPort
|
14
|
+
property :ToPort
|
9
15
|
end
|
10
16
|
end
|
11
17
|
end
|
12
|
-
|
13
|
-
# This is just for aliasing purposes. Despite the fact that Amazon documents
|
14
|
-
# this class as a resource, it is, in fact, a resource property in all ways.
|
15
|
-
# So, we put it in the place you'd expect if you were looking at the
|
16
|
-
# CloudFormation documentations. And we're aliasing it below in the place
|
17
|
-
# where you'd expect it if you have your head right about how this behaves.
|
18
|
-
class ResourceProperty
|
19
|
-
module EC2
|
20
|
-
SecurityGroupEgress = Skywriter::Resource::EC2::SecurityGroupEgress
|
21
|
-
end
|
22
|
-
end
|
23
18
|
end
|
@@ -3,24 +3,19 @@ module Skywriter
|
|
3
3
|
module EC2
|
4
4
|
# AWS::EC2::SecurityGroupIngress Resource
|
5
5
|
#
|
6
|
-
class SecurityGroupIngress
|
6
|
+
class SecurityGroupIngress
|
7
|
+
include Skywriter::Resource
|
8
|
+
|
7
9
|
property :GroupName
|
8
10
|
property :GroupId
|
11
|
+
property :IpProtocol
|
12
|
+
property :CidrIp
|
9
13
|
property :SourceSecurityGroupName
|
10
14
|
property :SourceSecurityGroupId
|
11
15
|
property :SourceSecurityGroupOwnerId
|
16
|
+
property :FromPort
|
17
|
+
property :ToPort
|
12
18
|
end
|
13
19
|
end
|
14
20
|
end
|
15
|
-
|
16
|
-
# This is just for aliasing purposes. Despite the fact that Amazon documents
|
17
|
-
# this class as a resource, it is, in fact, a resource property in all ways.
|
18
|
-
# So, we put it in the place you'd expect if you were looking at the
|
19
|
-
# CloudFormation documentations. And we're aliasing it below in the place
|
20
|
-
# where you'd expect it if you have your head right about how this behaves.
|
21
|
-
class ResourceProperty
|
22
|
-
module EC2
|
23
|
-
SecurityGroupIngress = Skywriter::Resource::EC2::SecurityGroupIngress
|
24
|
-
end
|
25
|
-
end
|
26
21
|
end
|
data/lib/skywriter/version.rb
CHANGED
@@ -124,8 +124,6 @@ describe "The implementation" do
|
|
124
124
|
Skywriter::ResourceProperty::EC2::NetworkInterfacePrivateIPSpecification,
|
125
125
|
Skywriter::ResourceProperty::EC2::PortRange,
|
126
126
|
Skywriter::ResourceProperty::EC2::SecurityGroupRule,
|
127
|
-
Skywriter::Resource::EC2::SecurityGroupEgress,
|
128
|
-
Skywriter::Resource::EC2::SecurityGroupIngress,
|
129
127
|
Skywriter::ResourceProperty::EC2::Tag,
|
130
128
|
Skywriter::ResourceProperty::ElasticBeanstalk::EnvironmentTier,
|
131
129
|
Skywriter::ResourceProperty::ElasticBeanstalk::OptionSetting,
|
@@ -178,6 +178,8 @@ describe "The implementation" do
|
|
178
178
|
Skywriter::Resource::EC2::Route,
|
179
179
|
Skywriter::Resource::EC2::RouteTable,
|
180
180
|
Skywriter::Resource::EC2::SecurityGroup,
|
181
|
+
Skywriter::Resource::EC2::SecurityGroupIngress,
|
182
|
+
Skywriter::Resource::EC2::SecurityGroupEgress,
|
181
183
|
Skywriter::Resource::EC2::SubnetNetworkAclAssociation,
|
182
184
|
Skywriter::Resource::EC2::SubnetRouteTableAssociation,
|
183
185
|
Skywriter::Resource::EC2::Subnet,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skywriter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Michael
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: require_all
|
@@ -289,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
289
|
version: '0'
|
290
290
|
requirements: []
|
291
291
|
rubyforge_project:
|
292
|
-
rubygems_version: 2.2.
|
292
|
+
rubygems_version: 2.2.2
|
293
293
|
signing_key:
|
294
294
|
specification_version: 4
|
295
295
|
summary: Writes cloud formations
|