awsrm 0.0.1 → 0.1.0
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/.gitignore +0 -1
- data/.rubocop.yml +0 -3
- data/README.md +4 -0
- data/awsrm.gemspec +2 -0
- data/bin/toolbox +8 -0
- data/doc/resources.md +61 -0
- data/lib/awsrm.rb +5 -4
- data/lib/awsrm/generator/doc/resource.rb +46 -0
- data/lib/awsrm/resource.rb +11 -2
- data/lib/awsrm/{autoscaling_group.rb → resources/autoscaling_group.rb} +4 -11
- data/lib/awsrm/resources/ec2.rb +28 -0
- data/lib/awsrm/{route_table.rb → resources/route_table.rb} +0 -7
- data/lib/awsrm/{subnet.rb → resources/subnet.rb} +0 -7
- data/lib/awsrm/{vpc.rb → resources/vpc.rb} +1 -8
- data/lib/awsrm/toolbox.rb +10 -0
- data/lib/awsrm/version.rb +1 -1
- metadata +39 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 792290dac74fd69f47dc4249558d006dd3046b2c
|
4
|
+
data.tar.gz: 175e6df3ee3a005cbf9a6a870a98235e46c1fcd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db17f938259b75c9f21efc2d962ff266c25bc8efc223ca7152a82c82b9bbbf64a2bd40b5b65ab8637d0e388c5bb85ca0421274cca44853781edc64000f624726
|
7
|
+
data.tar.gz: 2fb42e89cb273c6a5d5b32e12ffd8cbcc8439c3b88615eddfb46c9170d730b6a47dbb7652584995fa5403b8d984418e749d3c6c15bd5b9a369a49cfac87f5367
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -57,6 +57,10 @@ Awsrm::RouteTable.all(vpc: 'my-vpc').each do | route |
|
|
57
57
|
end
|
58
58
|
```
|
59
59
|
|
60
|
+
## Support AWS Resources
|
61
|
+
|
62
|
+
[Resources](doc/resources.md)
|
63
|
+
|
60
64
|
## License
|
61
65
|
|
62
66
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/awsrm.gemspec
CHANGED
@@ -31,4 +31,6 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency 'rubocop', '~> 0.47.0'
|
32
32
|
spec.add_development_dependency 'octorelease'
|
33
33
|
spec.add_development_dependency 'pry'
|
34
|
+
spec.add_development_dependency 'thor'
|
35
|
+
spec.add_development_dependency 'activesupport'
|
34
36
|
end
|
data/bin/toolbox
ADDED
data/doc/resources.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Resources
|
2
|
+
|
3
|
+
[AutoscalingGroup](#autoscaling_group)
|
4
|
+
| [Ec2](#ec2)
|
5
|
+
| [RouteTable](#route_table)
|
6
|
+
| [Subnet](#subnet)
|
7
|
+
| [Vpc](#vpc)
|
8
|
+
|
9
|
+
## <a name="autoscaling_group">Awsrm::AutoscalingGroup</a>
|
10
|
+
|
11
|
+
### Filter
|
12
|
+
|
13
|
+
| key | replaced filter |
|
14
|
+
| - | - |
|
15
|
+
| name | [`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/autoscaling_group.rb) |
|
16
|
+
| tags | [`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/autoscaling_group.rb) |
|
17
|
+
|
18
|
+
|
19
|
+
## <a name="ec2">Awsrm::Ec2</a>
|
20
|
+
|
21
|
+
### Filter
|
22
|
+
|
23
|
+
| key | replaced filter |
|
24
|
+
| - | - |
|
25
|
+
| name | `tag:Name` |
|
26
|
+
| vpc_id | `vpc-id` |
|
27
|
+
| vpc | [`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/ec2.rb) |
|
28
|
+
|
29
|
+
|
30
|
+
## <a name="route_table">Awsrm::RouteTable</a>
|
31
|
+
|
32
|
+
### Filter
|
33
|
+
|
34
|
+
| key | replaced filter |
|
35
|
+
| - | - |
|
36
|
+
| name | `tag:Name` |
|
37
|
+
| vpc_id | `vpc-id` |
|
38
|
+
| vpc | [`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/route_table.rb) |
|
39
|
+
|
40
|
+
|
41
|
+
## <a name="subnet">Awsrm::Subnet</a>
|
42
|
+
|
43
|
+
### Filter
|
44
|
+
|
45
|
+
| key | replaced filter |
|
46
|
+
| - | - |
|
47
|
+
| name | `tag:Name` |
|
48
|
+
| cidr | `cidrBlock` |
|
49
|
+
| vpc_id | `vpc-id` |
|
50
|
+
| vpc | [`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/subnet.rb) |
|
51
|
+
|
52
|
+
|
53
|
+
## <a name="vpc">Awsrm::Vpc</a>
|
54
|
+
|
55
|
+
### Filter
|
56
|
+
|
57
|
+
| key | replaced filter |
|
58
|
+
| - | - |
|
59
|
+
| name | `tag:Name` |
|
60
|
+
|
61
|
+
|
data/lib/awsrm.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'awsrm/error'
|
2
2
|
require 'awsrm/resource'
|
3
|
-
require 'awsrm/autoscaling_group'
|
4
|
-
require 'awsrm/
|
5
|
-
require 'awsrm/
|
6
|
-
require 'awsrm/
|
3
|
+
require 'awsrm/resources/autoscaling_group'
|
4
|
+
require 'awsrm/resources/ec2'
|
5
|
+
require 'awsrm/resources/route_table'
|
6
|
+
require 'awsrm/resources/subnet'
|
7
|
+
require 'awsrm/resources/vpc'
|
7
8
|
require 'awsrm/version'
|
8
9
|
|
9
10
|
module Awsrm
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Awsrm
|
2
|
+
module Generator
|
3
|
+
module Doc
|
4
|
+
class Resource
|
5
|
+
class << self
|
6
|
+
def generate_doc
|
7
|
+
resource_dir = __dir__ + '/../../resources/'
|
8
|
+
resources = Dir.glob(resource_dir + '*').map do |file|
|
9
|
+
File.basename(file, '.rb')
|
10
|
+
end
|
11
|
+
links = resources.sort.map do |r|
|
12
|
+
'[' + r.classify + '](#' + r + ')'
|
13
|
+
end
|
14
|
+
header = <<-'EOF'
|
15
|
+
# Resources
|
16
|
+
|
17
|
+
<%= links.join("\n| ") %>
|
18
|
+
|
19
|
+
EOF
|
20
|
+
doc = ERB.new(header, nil, '-').result(binding)
|
21
|
+
resources.each do |r|
|
22
|
+
filter_map = Object.const_get("Awsrm::#{r.classify}::FILTER_MAP")
|
23
|
+
doc += ERB.new(resource_template, nil, '-').result(binding)
|
24
|
+
end
|
25
|
+
doc
|
26
|
+
end
|
27
|
+
|
28
|
+
def resource_template
|
29
|
+
template = <<-'EOF'
|
30
|
+
## <a name="<%= r %>">Awsrm::<%= r.classify %></a>
|
31
|
+
|
32
|
+
### Filter
|
33
|
+
|
34
|
+
| key | replaced filter |
|
35
|
+
| - | - |
|
36
|
+
<% filter_map.each do |k, v| %>| <%= k %> | <%= v.is_a?(Proc) ? '[`#<Proc>`](https://github.com/k1LoW/awsrm/blob/master/lib/awsrm/resources/' + r + '.rb)' : '`' + v + '`' %> |
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
EOF
|
40
|
+
template
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/awsrm/resource.rb
CHANGED
@@ -41,8 +41,9 @@ module Awsrm
|
|
41
41
|
http_proxy: ENV['http_proxy'] || ENV['https_proxy'] || nil
|
42
42
|
}.freeze
|
43
43
|
|
44
|
-
def one(
|
45
|
-
|
44
|
+
def one(params)
|
45
|
+
res = all(params)
|
46
|
+
res.first if check_one(res)
|
46
47
|
end
|
47
48
|
|
48
49
|
def all(_params)
|
@@ -83,5 +84,13 @@ module Awsrm
|
|
83
84
|
def arn
|
84
85
|
raise 'not implemented'
|
85
86
|
end
|
87
|
+
|
88
|
+
def method_missing(key)
|
89
|
+
@resource.send(key)
|
90
|
+
end
|
91
|
+
|
92
|
+
def respond_to?(key, *args)
|
93
|
+
@resource.respond_to?(key) || super
|
94
|
+
end
|
86
95
|
end
|
87
96
|
end
|
@@ -1,23 +1,16 @@
|
|
1
1
|
module Awsrm
|
2
|
-
class
|
2
|
+
class AutoscalingGroup < Awsrm::Resource
|
3
3
|
FILTER_MAP = {
|
4
4
|
name: ->(value) { [value] },
|
5
|
-
tags: ->(value) {
|
5
|
+
tags: ->(value) { AutoscalingGroup.tags2names(value) }
|
6
6
|
}.freeze
|
7
7
|
class << self
|
8
|
-
def one(params)
|
9
|
-
res = autoscaling_client.describe_auto_scaling_groups(
|
10
|
-
auto_scaling_group_names: filters(params)
|
11
|
-
)
|
12
|
-
AutoscallingGroupReader.new(res.auto_scaling_groups.first) if check_one(res.auto_scaling_groups)
|
13
|
-
end
|
14
|
-
|
15
8
|
def all(params)
|
16
9
|
res = autoscaling_client.describe_auto_scaling_groups(
|
17
10
|
auto_scaling_group_names: filters(params)
|
18
11
|
)
|
19
12
|
res.auto_scaling_groups.map do |as|
|
20
|
-
|
13
|
+
AutoscalingGroupReader.new(as)
|
21
14
|
end
|
22
15
|
end
|
23
16
|
|
@@ -41,7 +34,7 @@ module Awsrm
|
|
41
34
|
end
|
42
35
|
end
|
43
36
|
|
44
|
-
class
|
37
|
+
class AutoscalingGroupReader < Awsrm::ResourceReader
|
45
38
|
def id
|
46
39
|
@resource.auto_scaling_group_name
|
47
40
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Awsrm
|
2
|
+
class Ec2 < Awsrm::Resource
|
3
|
+
FILTER_MAP = {
|
4
|
+
name: 'tag:Name',
|
5
|
+
vpc_id: 'vpc-id',
|
6
|
+
vpc: ->(value) { { name: 'vpc-id', values: [Awsrm::Vpc.one(name: value).id] } }
|
7
|
+
}.freeze
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def all(params)
|
11
|
+
res = ec2_client.describe_instances(
|
12
|
+
filters: filters(params)
|
13
|
+
)
|
14
|
+
res.reservations.map do |reservation|
|
15
|
+
reservation.instances.map do |instance|
|
16
|
+
Ec2Reader.new(instance)
|
17
|
+
end
|
18
|
+
end.flatten
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Ec2Reader < Awsrm::ResourceReader
|
24
|
+
def id
|
25
|
+
@resource.instance_id
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -7,13 +7,6 @@ module Awsrm
|
|
7
7
|
}.freeze
|
8
8
|
|
9
9
|
class << self
|
10
|
-
def one(params)
|
11
|
-
res = ec2_client.describe_route_tables(
|
12
|
-
filters: filters(params)
|
13
|
-
)
|
14
|
-
RouteTableReader.new(res.route_tables.first) if check_one(res.route_tables)
|
15
|
-
end
|
16
|
-
|
17
10
|
def all(params)
|
18
11
|
res = ec2_client.describe_route_tables(
|
19
12
|
filters: filters(params)
|
@@ -8,13 +8,6 @@ module Awsrm
|
|
8
8
|
}.freeze
|
9
9
|
|
10
10
|
class << self
|
11
|
-
def one(params)
|
12
|
-
res = ec2_client.describe_subnets(
|
13
|
-
filters: filters(params)
|
14
|
-
)
|
15
|
-
SubnetReader.new(res.subnets.first) if check_one(res.subnets)
|
16
|
-
end
|
17
|
-
|
18
11
|
def all(params)
|
19
12
|
res = ec2_client.describe_subnets(
|
20
13
|
filters: filters(params)
|
@@ -5,18 +5,11 @@ module Awsrm
|
|
5
5
|
}.freeze
|
6
6
|
|
7
7
|
class << self
|
8
|
-
def one(params)
|
9
|
-
res = ec2_client.describe_vpcs(
|
10
|
-
filters: filters(params)
|
11
|
-
)
|
12
|
-
VpcReader.new(res.vpcs.first) if check_one(res.vpcs)
|
13
|
-
end
|
14
|
-
|
15
8
|
def all(params)
|
16
9
|
res = ec2_client.describe_vpcs(
|
17
10
|
filters: filters(params)
|
18
11
|
)
|
19
|
-
res.
|
12
|
+
res.vpcs.map do |route|
|
20
13
|
VpcReader.new(route)
|
21
14
|
end
|
22
15
|
end
|
data/lib/awsrm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awsrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- k1LoW
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05
|
11
|
+
date: 2017-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -128,6 +128,34 @@ dependencies:
|
|
128
128
|
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: thor
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: activesupport
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
131
159
|
description: Simple AWS Resource "READONLY" Mapper for awspec.
|
132
160
|
email:
|
133
161
|
- k1lowxb@gmail.com
|
@@ -146,14 +174,19 @@ files:
|
|
146
174
|
- awsrm.gemspec
|
147
175
|
- bin/console
|
148
176
|
- bin/setup
|
177
|
+
- bin/toolbox
|
178
|
+
- doc/resources.md
|
149
179
|
- lib/awsrm.rb
|
150
|
-
- lib/awsrm/autoscaling_group.rb
|
151
180
|
- lib/awsrm/error.rb
|
181
|
+
- lib/awsrm/generator/doc/resource.rb
|
152
182
|
- lib/awsrm/resource.rb
|
153
|
-
- lib/awsrm/
|
154
|
-
- lib/awsrm/
|
183
|
+
- lib/awsrm/resources/autoscaling_group.rb
|
184
|
+
- lib/awsrm/resources/ec2.rb
|
185
|
+
- lib/awsrm/resources/route_table.rb
|
186
|
+
- lib/awsrm/resources/subnet.rb
|
187
|
+
- lib/awsrm/resources/vpc.rb
|
188
|
+
- lib/awsrm/toolbox.rb
|
155
189
|
- lib/awsrm/version.rb
|
156
|
-
- lib/awsrm/vpc.rb
|
157
190
|
homepage: https://github.com/k1LoW/awsrm
|
158
191
|
licenses:
|
159
192
|
- MIT
|