aws-cfn-resources 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d2639b7461e90b8ad168454ba7d3147e188a068
4
- data.tar.gz: b8c6e5116d5cd6da58ea33d77c544ecfb7618461
3
+ metadata.gz: fa5c44a0aff255bc860fa8dfb43c5fceffc8224c
4
+ data.tar.gz: be93cc9d19a332a5818ea3826699bd96a6436960
5
5
  SHA512:
6
- metadata.gz: 0a2733b3c991b815bb68d885c5df8de537da96015e804e01d82702d59c90b8bcf12754aafeab25e9a846ea9841402779c70785d77fde0d37e0b4e411e5f345ca
7
- data.tar.gz: a1149eca57fdc2507b64e6cad1704f02fead0363cf1cce7ae2048f7870d97106013054cd38784871123df514f964dfd8833d442ed53d0d75689125bb4c35edde
6
+ metadata.gz: c1c2392ef612692b61a6800f7f789a55e81a03465ce11ddd2dcac98faa3bf5e2ee2d31c724af780cbe002d4238c517b0ed9e4ea71a775f0a798a5361ac91af5c
7
+ data.tar.gz: 5a404644a0f7594ef0b661a5a067937c5154a7d2ada20e21e61608b1b0b65993172d651ac3a0b1d467e02e09208c21aa2c47cd44fd6df80dcd8ae9473373c706
@@ -0,0 +1,263 @@
1
+ require 'aws-sdk-v1'
2
+
3
+ #set AWS.config(region: 'region-name')
4
+ #initialize stack with stack = AWS::CloudFormation::Stack.new('stack-name')
5
+
6
+ module AWS
7
+ class CloudFormation
8
+ class Stack
9
+
10
+ def autoscaling_group(logical_id)
11
+ AWS::AutoScaling.new.groups[autoscaling_group_ids[logical_id.to_sym]]
12
+ end
13
+
14
+ def autoscaling_groups
15
+ autoscaling_group_ids.inject({}) { |hash, (k,v)| hash[k] = autoscaling_group(k); hash }
16
+ end
17
+
18
+ def autoscaling_group_ids
19
+ get_resources "AWS::AutoScaling::AutoScalingGroup"
20
+ end
21
+
22
+ def bucket(logical_id)
23
+ AWS::S3.new.buckets[bucket_ids[logical_id.to_sym]]
24
+ end
25
+
26
+ def buckets
27
+ bucket_ids.inject({}) { |hash, (k,v)| hash[k] = bucket(k); hash }
28
+ end
29
+
30
+ def bucket_ids
31
+ get_resources "AWS::S3::Bucket"
32
+ end
33
+
34
+ def cloudwatch_alarm(logical_id)
35
+ AWS::CloudWatch.new.alarms[cloudwatch_alarm_ids[logical_id.to_sym]]
36
+ end
37
+
38
+ def cloudwatch_alarms
39
+ cloudwatch_alarm_ids.inject({}) { |hash, (k,v)| hash[k] = cloudwatch_alarm(k); hash }
40
+ end
41
+
42
+ def cloudwatch_alarm_ids
43
+ get_resources "AWS::CloudWatch::Alarm"
44
+ end
45
+
46
+ def db_instance(logical_id)
47
+ AWS::RDS.new.db_instances[db_instance_ids[logical_id.to_sym]]
48
+ end
49
+
50
+ def db_instances
51
+ db_instance_ids.inject({}) { |hash, (k,v)| hash[k] = db_instance(k); hash }
52
+ end
53
+
54
+ def db_instance_ids
55
+ get_resources "AWS::RDS::DBInstance"
56
+ end
57
+
58
+ def eip(logical_id)
59
+ AWS::EC2.new.elastic_ips[eip_ids[logical_id.to_sym]]
60
+ end
61
+
62
+ alias_method :elastic_ip, :eip
63
+
64
+ def eips
65
+ eip_ids.inject({}) { |hash, (k,v)| hash[k] = eip(k) }
66
+ end
67
+
68
+ alias_method :elastic_ips, :eips
69
+
70
+ def eip_ids
71
+ get_resources "AWS::EC2::EIP"
72
+ end
73
+
74
+ def elb(logical_id)
75
+ AWS::ELB.new.load_balancers[elb_ids[logical_id.to_sym]]
76
+ end
77
+
78
+ def elbs
79
+ elb_ids.inject({}) { |hash, (k,v)| hash[k] = elb(k); hash }
80
+ end
81
+
82
+ def elb_ids
83
+ get_resources "AWS::ElasticLoadBalancing::LoadBalancer"
84
+ end
85
+
86
+ def iam_access_key(user_logical_id, key_logical_id)
87
+ iam_user(user_logical_id).access_keys[iam_access_key_ids[key_logical_id.to_sym]]
88
+ end
89
+
90
+ def iam_access_key_ids
91
+ get_resources "AWS::IAM::AccessKey"
92
+ end
93
+
94
+ def iam_group(logical_id)
95
+ AWS::IAM.new.groups[iam_group_ids[logical_id.to_sym]]
96
+ end
97
+
98
+ def iam_groups
99
+ iam_group_ids.inject({}) { |hash, (k,v)| hash[k] = iam_group(k); hash }
100
+ end
101
+
102
+ def iam_group_ids
103
+ get_resources "AWS::IAM::Group"
104
+ end
105
+
106
+ def iam_policy
107
+ puts "use Stack.iam_group#policies or Stack.iam_user#policies"
108
+ end
109
+
110
+ alias_method :iam_policies, :iam_policy
111
+
112
+ def iam_policy_ids
113
+ get_resources "AWS::IAM::Policy"
114
+ end
115
+
116
+ def iam_user(logical_id)
117
+ AWS::IAM.new.users[iam_user_ids[logical_id.to_sym]]
118
+ end
119
+
120
+ def iam_users
121
+ iam_user_ids.inject({}) { |hash, (k,v)| hash[k] = iam_user(k); hash }
122
+ end
123
+
124
+ def iam_user_ids
125
+ get_resources "AWS::IAM::User"
126
+ end
127
+
128
+ def instance(logical_id)
129
+ AWS::EC2.new.instances[instance_ids[logical_id.to_sym]]
130
+ end
131
+
132
+ def instances
133
+ instance_ids.inject({}) { |hash, (k,v)| hash[k] = instance(k); hash }
134
+ end
135
+
136
+ def instance_ids
137
+ get_resources "AWS::EC2::Instance"
138
+ end
139
+
140
+ def internet_gateway(logical_id)
141
+ AWS::EC2.new.internet_gateways[internet_gateway_ids[logical_id.to_sym]]
142
+ end
143
+
144
+ alias_method :igw, :internet_gateway
145
+
146
+ def internet_gateway_ids
147
+ get_resources "AWS::EC2::InternetGateway"
148
+ end
149
+
150
+ def launch_configuration(logical_id)
151
+ AWS::AutoScaling.new.launch_configurations[launch_configuration_ids[logical_id.to_sym]]
152
+ end
153
+
154
+ alias_method :launch_config, :launch_configuration
155
+
156
+ def launch_configurations
157
+ launch_configuration_ids.inject({}) { |hash, (k,v)| hash[k] = launch_configuration(k); hash }
158
+ end
159
+
160
+ alias_method :launch_configs, :launch_configurations
161
+
162
+ def launch_configuration_ids
163
+ get_resources "AWS::AutoScaling::LaunchConfiguration"
164
+ end
165
+
166
+ def network_interface(logical_id)
167
+ AWS::EC2.new.network_interfaces[network_interface_ids[logical_id.to_sym]]
168
+ end
169
+
170
+ alias_method :nic, :network_interface
171
+
172
+ def network_interfaces
173
+ network_interface_ids.inject({}) { |hash, (k,v)| hash[k] = network_interface(k); hash }
174
+ end
175
+
176
+ alias_method :nics, :network_interfaces
177
+
178
+ def network_interface_ids
179
+ get_resources "AWS::EC2::NetworkInterface"
180
+ end
181
+
182
+ def route_table(logical_id)
183
+ AWS::EC2.new.route_tables[route_table_ids[logical_id.to_sym]]
184
+ end
185
+
186
+ def route_table_ids
187
+ get_resources "AWS::EC2::RouteTable"
188
+ end
189
+
190
+ def scaling_policy(as_group_logical_id, policy_logical_id)
191
+ group = autoscaling_group(as_group_logical_id)
192
+ policy = scaling_policy_ids[policy_logical_id.to_sym].split('/')[-1]
193
+ AWS::AutoScaling::ScalingPolicy.new(group, policy)
194
+ end
195
+
196
+ def scaling_policies(as_group_logical_id)
197
+ scaling_policy_ids.inject({}) { |hash, (k,v)| hash[k] = scaling_policy(as_group_logical_id,k.to_s); hash }
198
+ end
199
+
200
+ def scaling_policy_ids
201
+ get_resources "AWS::AutoScaling::ScalingPolicy"
202
+ end
203
+
204
+ def security_group(logical_id)
205
+ AWS::EC2.new.security_groups.filter('group-id',security_group_ids[logical_id.to_sym]).first
206
+ end
207
+
208
+ def security_groups
209
+ security_group_ids.inject({}) { |hash, (k,v)| hash[k] = security_group(k); hash }
210
+ end
211
+
212
+ def security_group_ids
213
+ get_resources "AWS::EC2::SecurityGroup"
214
+ end
215
+
216
+ def subnet(logical_id)
217
+ AWS::EC2.new.subnets[subnet_ids[logical_id.to_sym]]
218
+ end
219
+
220
+ def subnets
221
+ subnet_ids.inject({}) { |hash, (k,v)| hash[k] = subnet(k); hash }
222
+ end
223
+
224
+ def subnet_ids
225
+ get_resources "AWS::EC2::Subnet"
226
+ end
227
+
228
+ def volume(logical_id)
229
+ AWS::EC2.new.volumes[volume_ids[logical_id.to_sym]]
230
+ end
231
+
232
+ def volumes
233
+ volume_ids.inject({}) { |hash, (k,v)| hash[k] = volume(k); hash }
234
+ end
235
+
236
+ def volume_ids
237
+ get_resources "AWS::EC2::Volume"
238
+ end
239
+
240
+ def vpc(logical_id)
241
+ AWS::EC2.new.vpcs[vpc_ids[logical_id.to_sym]]
242
+ end
243
+
244
+ def vpcs
245
+ vpc_ids.inject({}) { |hash, (k,v)| hash[k] = vpc(k); hash }
246
+ end
247
+
248
+ def vpc_ids
249
+ get_resources "AWS::EC2::VPC"
250
+ end
251
+
252
+ private
253
+
254
+ def get_resources(resource_type)
255
+ hash = {}
256
+ resource_summaries.select { |rs| rs[:resource_type] == "#{resource_type}" }.collect { |r| hash[r[:logical_resource_id].to_sym] = r[:physical_resource_id] }
257
+ return hash
258
+ end
259
+
260
+ end
261
+ end
262
+ end
263
+
@@ -6,7 +6,11 @@ module AWS
6
6
 
7
7
  def stack
8
8
  stack_name = tag_value "aws:cloudformation:stack-name"
9
- AWS::CloudFormation::Stack.new(stack_name)
9
+ if stack_name
10
+ AWS::CloudFormation::Stack.new(stack_name)
11
+ else
12
+ nil
13
+ end
10
14
  end
11
15
 
12
16
  private
@@ -1,263 +1 @@
1
- require 'aws-sdk-v1'
2
-
3
- #set AWS.config(region: 'region-name')
4
- #initialize stack with stack = AWS::CloudFormation::Stack.new('stack-name')
5
-
6
- module AWS
7
- class CloudFormation
8
- class Stack
9
-
10
- def autoscaling_group(logical_id)
11
- AWS::AutoScaling.new.groups[autoscaling_group_ids[logical_id.to_sym]]
12
- end
13
-
14
- def autoscaling_groups
15
- autoscaling_group_ids.inject({}) { |hash, (k,v)| hash[k] = autoscaling_group(k); hash }
16
- end
17
-
18
- def autoscaling_group_ids
19
- get_resources "AWS::AutoScaling::AutoScalingGroup"
20
- end
21
-
22
- def bucket(logical_id)
23
- AWS::S3.new.buckets[bucket_ids[logical_id.to_sym]]
24
- end
25
-
26
- def buckets
27
- bucket_ids.inject({}) { |hash, (k,v)| hash[k] = bucket(k); hash }
28
- end
29
-
30
- def bucket_ids
31
- get_resources "AWS::S3::Bucket"
32
- end
33
-
34
- def cloudwatch_alarm(logical_id)
35
- AWS::CloudWatch.new.alarms[cloudwatch_alarm_ids[logical_id.to_sym]]
36
- end
37
-
38
- def cloudwatch_alarms
39
- cloudwatch_alarm_ids.inject({}) { |hash, (k,v)| hash[k] = cloudwatch_alarm(k); hash }
40
- end
41
-
42
- def cloudwatch_alarm_ids
43
- get_resources "AWS::CloudWatch::Alarm"
44
- end
45
-
46
- def db_instance(logical_id)
47
- AWS::RDS.new.db_instances[db_instance_ids[logical_id.to_sym]]
48
- end
49
-
50
- def db_instances
51
- db_instance_ids.inject({}) { |hash, (k,v)| hash[k] = db_instance(k); hash }
52
- end
53
-
54
- def db_instance_ids
55
- get_resources "AWS::RDS::DBInstance"
56
- end
57
-
58
- def eip(logical_id)
59
- AWS::EC2.new.elastic_ips[eip_ids[logical_id.to_sym]]
60
- end
61
-
62
- alias_method :elastic_ip, :eip
63
-
64
- def eips
65
- eip_ids.inject({}) { |hash, (k,v)| hash[k] = eip(k) }
66
- end
67
-
68
- alias_method :elastic_ips, :eips
69
-
70
- def eip_ids
71
- get_resources "AWS::EC2::EIP"
72
- end
73
-
74
- def elb(logical_id)
75
- AWS::ELB.new.load_balancers[elb_ids[logical_id.to_sym]]
76
- end
77
-
78
- def elbs
79
- elb_ids.inject({}) { |hash, (k,v)| hash[k] = elb(k); hash }
80
- end
81
-
82
- def elb_ids
83
- get_resources "AWS::ElasticLoadBalancing::LoadBalancer"
84
- end
85
-
86
- def iam_access_key(user_logical_id, key_logical_id)
87
- iam_user(user_logical_id).access_keys[iam_access_key_ids[key_logical_id.to_sym]]
88
- end
89
-
90
- def iam_access_key_ids
91
- get_resources "AWS::IAM::AccessKey"
92
- end
93
-
94
- def iam_group(logical_id)
95
- AWS::IAM.new.groups[iam_group_ids[logical_id.to_sym]]
96
- end
97
-
98
- def iam_groups
99
- iam_group_ids.inject({}) { |hash, (k,v)| hash[k] = iam_group(k); hash }
100
- end
101
-
102
- def iam_group_ids
103
- get_resources "AWS::IAM::Group"
104
- end
105
-
106
- def iam_policy
107
- puts "use Stack.iam_group#policies or Stack.iam_user#policies"
108
- end
109
-
110
- alias_method :iam_policies, :iam_policy
111
-
112
- def iam_policy_ids
113
- get_resources "AWS::IAM::Policy"
114
- end
115
-
116
- def iam_user(logical_id)
117
- AWS::IAM.new.users[iam_user_ids[logical_id.to_sym]]
118
- end
119
-
120
- def iam_users
121
- iam_user_ids.inject({}) { |hash, (k,v)| hash[k] = iam_user(k); hash }
122
- end
123
-
124
- def iam_user_ids
125
- get_resources "AWS::IAM::User"
126
- end
127
-
128
- def instance(logical_id)
129
- AWS::EC2.new.instances[instance_ids[logical_id.to_sym]]
130
- end
131
-
132
- def instances
133
- instance_ids.inject({}) { |hash, (k,v)| hash[k] = instance(k); hash }
134
- end
135
-
136
- def instance_ids
137
- get_resources "AWS::EC2::Instance"
138
- end
139
-
140
- def internet_gateway(logical_id)
141
- AWS::EC2.new.internet_gateways[internet_gateway_ids[logical_id.to_sym]]
142
- end
143
-
144
- alias_method :igw, :internet_gateway
145
-
146
- def internet_gateway_ids
147
- get_resources "AWS::EC2::InternetGateway"
148
- end
149
-
150
- def launch_configuration(logical_id)
151
- AWS::AutoScaling.new.launch_configurations[launch_configuration_ids[logical_id.to_sym]]
152
- end
153
-
154
- alias_method :launch_config, :launch_configuration
155
-
156
- def launch_configurations
157
- launch_configuration_ids.inject({}) { |hash, (k,v)| hash[k] = launch_configuration(k); hash }
158
- end
159
-
160
- alias_method :launch_configs, :launch_configurations
161
-
162
- def launch_configuration_ids
163
- get_resources "AWS::AutoScaling::LaunchConfiguration"
164
- end
165
-
166
- def network_interface(logical_id)
167
- AWS::EC2.new.network_interfaces[network_interface_ids[logical_id.to_sym]]
168
- end
169
-
170
- alias_method :nic, :network_interface
171
-
172
- def network_interfaces
173
- network_interface_ids.inject({}) { |hash, (k,v)| hash[k] = network_interface(k); hash }
174
- end
175
-
176
- alias_method :nics, :network_interfaces
177
-
178
- def network_interface_ids
179
- get_resources "AWS::EC2::NetworkInterface"
180
- end
181
-
182
- def route_table(logical_id)
183
- AWS::EC2.new.route_tables[route_table_ids[logical_id.to_sym]]
184
- end
185
-
186
- def route_table_ids
187
- get_resources "AWS::EC2::RouteTable"
188
- end
189
-
190
- def scaling_policy(as_group_logical_id, policy_logical_id)
191
- group = autoscaling_group(as_group_logical_id)
192
- policy = scaling_policy_ids[policy_logical_id.to_sym].split('/')[-1]
193
- AWS::AutoScaling::ScalingPolicy.new(group, policy)
194
- end
195
-
196
- def scaling_policies(as_group_logical_id)
197
- scaling_policy_ids.inject({}) { |hash, (k,v)| hash[k] = scaling_policy(as_group_logical_id,k.to_s); hash }
198
- end
199
-
200
- def scaling_policy_ids
201
- get_resources "AWS::AutoScaling::ScalingPolicy"
202
- end
203
-
204
- def security_group(logical_id)
205
- AWS::EC2.new.security_groups.filter('group-id',security_group_ids[logical_id.to_sym]).first
206
- end
207
-
208
- def security_groups
209
- security_group_ids.inject({}) { |hash, (k,v)| hash[k] = security_group(k); hash }
210
- end
211
-
212
- def security_group_ids
213
- get_resources "AWS::EC2::SecurityGroup"
214
- end
215
-
216
- def subnet(logical_id)
217
- AWS::EC2.new.subnets[subnet_ids[logical_id.to_sym]]
218
- end
219
-
220
- def subnets
221
- subnet_ids.inject({}) { |hash, (k,v)| hash[k] = subnet(k); hash }
222
- end
223
-
224
- def subnet_ids
225
- get_resources "AWS::EC2::Subnet"
226
- end
227
-
228
- def volume(logical_id)
229
- AWS::EC2.new.volumes[volume_ids[logical_id.to_sym]]
230
- end
231
-
232
- def volumes
233
- volume_ids.inject({}) { |hash, (k,v)| hash[k] = volume(k); hash }
234
- end
235
-
236
- def volume_ids
237
- get_resources "AWS::EC2::Volume"
238
- end
239
-
240
- def vpc(logical_id)
241
- AWS::EC2.new.vpcs[vpc_ids[logical_id.to_sym]]
242
- end
243
-
244
- def vpcs
245
- vpc_ids.inject({}) { |hash, (k,v)| hash[k] = vpc(k); hash }
246
- end
247
-
248
- def vpc_ids
249
- get_resources "AWS::EC2::VPC"
250
- end
251
-
252
- private
253
-
254
- def get_resources(resource_type)
255
- hash = {}
256
- resource_summaries.select { |rs| rs[:resource_type] == "#{resource_type}" }.collect { |r| hash[r[:logical_resource_id].to_sym] = r[:physical_resource_id] }
257
- return hash
258
- end
259
-
260
- end
261
- end
262
- end
263
-
1
+ require 'aws-cloudformation-stack'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cfn-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shayne Clausson
@@ -63,6 +63,7 @@ extra_rdoc_files: []
63
63
  files:
64
64
  - lib/aws-autoscaling-group.rb
65
65
  - lib/aws-cfn-resources.rb
66
+ - lib/aws-cloudformation-stack.rb
66
67
  - lib/aws-core-model.rb
67
68
  - lib/aws-elb-loadbalancer.rb
68
69
  - lib/resources.rb