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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18599297e3f57e292d25dc9db15944538552956a
4
- data.tar.gz: 845b3f7c221fc8f7b211476d6ef54644dea2601c
3
+ metadata.gz: 792290dac74fd69f47dc4249558d006dd3046b2c
4
+ data.tar.gz: 175e6df3ee3a005cbf9a6a870a98235e46c1fcd8
5
5
  SHA512:
6
- metadata.gz: 2fda470136b972270d8843e7aa1038df850af6eb69b7a9f1ebb8e6cd35c02bd32115ca4dbf2f96773a6cb0f14af19d046b00aa5185dfadbcd1600d0c04f3bc55
7
- data.tar.gz: 76b80e694a8c506cef25464b6e1fdfeb4435e266b7f334bf95bb2e1b0279d8c79f3eb743d4b81b7743ba95ee17c4e27287b9f66dffa14dceaf945d28ac2032cc
6
+ metadata.gz: db17f938259b75c9f21efc2d962ff266c25bc8efc223ca7152a82c82b9bbbf64a2bd40b5b65ab8637d0e388c5bb85ca0421274cca44853781edc64000f624726
7
+ data.tar.gz: 2fb42e89cb273c6a5d5b32e12ffd8cbcc8439c3b88615eddfb46c9170d730b6a47dbb7652584995fa5403b8d984418e749d3c6c15bd5b9a369a49cfac87f5367
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  /Gemfile.lock
4
4
  /_yardoc/
5
5
  /coverage/
6
- /doc/
7
6
  /pkg/
8
7
  /spec/reports/
9
8
  /tmp/
@@ -1,9 +1,6 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.1
3
3
 
4
- Lint/Eval:
5
- Enabled: false
6
-
7
4
  Lint/HandleExceptions:
8
5
  Enabled: false
9
6
 
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).
@@ -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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'awsrm'
4
+ require 'awsrm/toolbox'
5
+ require 'awsrm/generator/doc/resource'
6
+ require 'active_support/inflector'
7
+
8
+ Awsrm::Toolbox.start
@@ -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
+
@@ -1,9 +1,10 @@
1
1
  require 'awsrm/error'
2
2
  require 'awsrm/resource'
3
- require 'awsrm/autoscaling_group'
4
- require 'awsrm/route_table'
5
- require 'awsrm/subnet'
6
- require 'awsrm/vpc'
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
@@ -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(_params)
45
- raise 'not implemented'
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 AutoscallingGroup < Awsrm::Resource
2
+ class AutoscalingGroup < Awsrm::Resource
3
3
  FILTER_MAP = {
4
4
  name: ->(value) { [value] },
5
- tags: ->(value) { AutoscallingGroup.tags2names(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
- AutoscallingGroupReader.new(as)
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 AutoscallingGroupReader < Awsrm::ResourceReader
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.vpc.map do |route|
12
+ res.vpcs.map do |route|
20
13
  VpcReader.new(route)
21
14
  end
22
15
  end
@@ -0,0 +1,10 @@
1
+ require 'thor'
2
+
3
+ module Awsrm
4
+ class Toolbox < Thor
5
+ desc 'docgen > doc/resources.md', 'Generate doc/resources.md document'
6
+ def docgen
7
+ puts Awsrm::Generator::Doc::Resource.generate_doc
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Awsrm
2
- VERSION = '0.0.1'.freeze
2
+ VERSION = '0.1.0'.freeze
3
3
  end
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.1
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-31 00:00:00.000000000 Z
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/route_table.rb
154
- - lib/awsrm/subnet.rb
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