awsrm 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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