kanmon 0.2.0 → 0.3.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
  SHA256:
3
- metadata.gz: f8165d679d79798562ce7492a1968f1644f18eea223197e70e6dfa990238e745
4
- data.tar.gz: 64a060d28220d756431c319ab605336e1e4a47789d38b6819f13e9264687ad14
3
+ metadata.gz: 3e7a715138c4ecc5d5d10a150bfca964d497e937839f6b66a9d05e514b90053b
4
+ data.tar.gz: 5ccf83c54ea6098279fe7029a7f09f46e4da9f214669ed18168e272dd77bfa87
5
5
  SHA512:
6
- metadata.gz: a5fa331534b84747fe2645732e3f3407fc2b38255fc3d1b1bcb12bc64049e43aac6e28186eb5b502bf82fbe035341c7862c5c3835aa486a982cb634c719b4021
7
- data.tar.gz: 59a3dcbf8bde5d122d31fa7675ff7ed16f46a1007344838cc4a6cc7e32ecfd3ddba26bbc7249cbc1c1c1071f18aae667289f43c8cffb69d8791c3825361c37f8
6
+ metadata.gz: 6d594dcb84cd1bf89431bcf8f78f4e5e24203adb0bb8b64ee274df6afab7f910a193660ae59630890110966eea4209a6308b26dc25c4dcaeb17612aeebff767c
7
+ data.tar.gz: 386aacf6e68e101384882f23ae909719ec4717b52b254d4e6a285123a71fccebe7bf2e58e0531181211f2bf8e7099acc729c9f58bcb192f12aeaad898656add9
data/.gitignore CHANGED
@@ -9,6 +9,8 @@
9
9
  /test/tmp/
10
10
  /test/version_tmp/
11
11
  /tmp/
12
+ /*.yml
13
+ /*.yaml
12
14
 
13
15
  # Used by dotenv library to load environment variables.
14
16
  # .env
@@ -21,6 +23,7 @@ build/
21
23
  build-iPhoneOS/
22
24
  build-iPhoneSimulator/
23
25
  .rspec_status
26
+ /Gemfile.lock
24
27
 
25
28
  ## Specific to RubyMotion (use of CocoaPods):
26
29
  #
data/exe/kanmon CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "kanmon"
5
- require "hanami/cli"
3
+ require 'rubygems'
4
+ require 'kanmon'
6
5
 
7
- Hanami::CLI.new(Kanmon::Commands).call
6
+ Kanmon::CLI.start
data/kanmon.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_dependency "yao", ">= 0.4.1"
24
- spec.add_dependency "hanami-cli", ">= 0.1.1"
24
+ spec.add_dependency "thor", ">= 0.20.0"
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.16"
27
27
  spec.add_development_dependency "rake", "~> 10.0"
data/lib/kanmon.rb CHANGED
@@ -1,4 +1,28 @@
1
- require "kanmon/commands"
1
+ require "yao"
2
+ require "yaml"
3
+
4
+ require "kanmon/cli"
2
5
 
3
6
  module Kanmon
7
+
8
+ def self.init_yao
9
+ Yao.configure do
10
+ auth_url ENV['OS_AUTH_URL']
11
+ tenant_name ENV['OS_TENANT_NAME']
12
+ username ENV['OS_USERNAME']
13
+ password ENV['OS_PASSWORD']
14
+ client_cert ENV['OS_CERT']
15
+ client_key ENV['OS_KEY']
16
+ region_name ENV['OS_REGION_NAME']
17
+ identity_api_version ENV['OS_IDENTITY_API_VERSION']
18
+ user_domain_name ENV['OS_USER_DOMAIN_NAME']
19
+ project_domain_name ENV['OS_PROJECT_DOMAIN_NAME']
20
+ debug ENV['YAO_DEBUG']
21
+ end
22
+ end
23
+
24
+ def self.load_config(file_name)
25
+ YAML.load_file(file_name)
26
+ end
27
+
4
28
  end
data/lib/kanmon/cli.rb ADDED
@@ -0,0 +1,74 @@
1
+ require "thor"
2
+
3
+ require "kanmon/myip"
4
+
5
+ module Kanmon
6
+ class CLI < Thor
7
+ class_option :file, aliases: "f", type: :string, default: "kanmon.yml", banner: "FILE", desc: "Load configure from FILE"
8
+
9
+ desc "open", "Commands about add rules to SecurityGroup"
10
+ def open
11
+ myip = Kanmon::MyIP.get
12
+ rule = {
13
+ direction: "ingress",
14
+ port_range_min: 22,
15
+ port_range_max: 22,
16
+ ethertype: "IPv4",
17
+ protocol: "tcp",
18
+ remote_ip_prefix: "#{myip}/32",
19
+ security_group_id: @config["security_group"],
20
+ }
21
+
22
+ Yao::SecurityGroupRule.create(rule)
23
+ puts "Success!!"
24
+ end
25
+
26
+ desc "close", "Commands about delete rules from SecurityGroup"
27
+ def close
28
+ myip = Kanmon::MyIP.get
29
+ tenant_id = Yao.current_tenant_id
30
+
31
+ rule = {
32
+ direction: "ingress",
33
+ port_range_min: 22,
34
+ port_range_max: 22,
35
+ ethertype: "IPv4",
36
+ protocol: "tcp",
37
+ security_group_id: @config["security_group"],
38
+ tenant_id: tenant_id,
39
+ remote_ip_prefix: "#{myip}/32"
40
+ }
41
+
42
+ result = Yao::SecurityGroupRule.list(rule)
43
+
44
+ if result.empty?
45
+ puts "Not found"
46
+ exit(1)
47
+ end
48
+
49
+ result.each do |rule|
50
+ id = rule.id
51
+ puts "Delete #{id}"
52
+ Yao::SecurityGroupRule.destroy(id)
53
+ end
54
+
55
+ puts "Success!!"
56
+ end
57
+
58
+ desc "version", "Commands about show version"
59
+ def version
60
+ puts Kanmon::VERSION
61
+ end
62
+
63
+ no_commands do
64
+ def invoke_command(command, *args)
65
+ unless %w(help version).include?(command.name)
66
+ Kanmon.init_yao
67
+ @config = Kanmon.load_config(options[:file])
68
+ end
69
+
70
+ super
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,11 @@
1
+ require "net/http"
2
+ require "uri"
3
+
4
+ module Kanmon
5
+ module MyIP
6
+ def self.get
7
+ res = Net::HTTP.get URI.parse('https://checkip.amazonaws.com/')
8
+ res.chomp
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Kanmon
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanmon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuki Koya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-20 00:00:00.000000000 Z
11
+ date: 2018-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yao
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.4.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: hanami-cli
28
+ name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.1
33
+ version: 0.20.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.1
40
+ version: 0.20.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,7 +92,6 @@ files:
92
92
  - ".rspec"
93
93
  - ".travis.yml"
94
94
  - Gemfile
95
- - Gemfile.lock
96
95
  - LICENSE
97
96
  - README.md
98
97
  - Rakefile
@@ -101,11 +100,8 @@ files:
101
100
  - exe/kanmon
102
101
  - kanmon.gemspec
103
102
  - lib/kanmon.rb
104
- - lib/kanmon/commands.rb
105
- - lib/kanmon/commands/base.rb
106
- - lib/kanmon/commands/close.rb
107
- - lib/kanmon/commands/open.rb
108
- - lib/kanmon/commands/version.rb
103
+ - lib/kanmon/cli.rb
104
+ - lib/kanmon/myip.rb
109
105
  - lib/kanmon/version.rb
110
106
  homepage: https://github.com/buty4649/kanmon/
111
107
  licenses: []
data/Gemfile.lock DELETED
@@ -1,55 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- kanmon (0.1.0)
5
- hanami-cli (>= 0.1.1)
6
- yao (>= 0.4.1)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- concurrent-ruby (1.0.5)
12
- diff-lcs (1.3)
13
- faraday (0.12.2)
14
- multipart-post (>= 1.2, < 3)
15
- faraday_middleware (0.12.2)
16
- faraday (>= 0.7.4, < 1.0)
17
- hanami-cli (0.2.0)
18
- concurrent-ruby (~> 1.0)
19
- hanami-utils (~> 1.2)
20
- hanami-utils (1.2.0)
21
- concurrent-ruby (~> 1.0)
22
- transproc (~> 1.0)
23
- json (2.1.0)
24
- multipart-post (2.0.0)
25
- rake (10.5.0)
26
- rspec (3.7.0)
27
- rspec-core (~> 3.7.0)
28
- rspec-expectations (~> 3.7.0)
29
- rspec-mocks (~> 3.7.0)
30
- rspec-core (3.7.1)
31
- rspec-support (~> 3.7.0)
32
- rspec-expectations (3.7.0)
33
- diff-lcs (>= 1.2.0, < 2.0)
34
- rspec-support (~> 3.7.0)
35
- rspec-mocks (3.7.0)
36
- diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.7.0)
38
- rspec-support (3.7.1)
39
- transproc (1.0.2)
40
- yao (0.4.1)
41
- faraday (~> 0.12.0)
42
- faraday_middleware
43
- json
44
-
45
- PLATFORMS
46
- ruby
47
-
48
- DEPENDENCIES
49
- bundler (~> 1.16)
50
- kanmon!
51
- rake (~> 10.0)
52
- rspec (~> 3.0)
53
-
54
- BUNDLED WITH
55
- 1.16.1
@@ -1,11 +0,0 @@
1
- require 'hanami/cli'
2
-
3
- module Kanmon
4
- module Commands
5
- extend Hanami::CLI::Registry
6
-
7
- require "kanmon/commands/close"
8
- require "kanmon/commands/open"
9
- require "kanmon/commands/version"
10
- end
11
- end
@@ -1,30 +0,0 @@
1
- require "net/http"
2
- require "uri"
3
-
4
- module Kanmon
5
- module Commands
6
- class Base < Hanami::CLI::Command
7
-
8
- def initialize(*)
9
- Yao.configure do
10
- auth_url ENV['OS_AUTH_URL']
11
- tenant_name ENV['OS_TENANT_NAME']
12
- username ENV['OS_USERNAME']
13
- password ENV['OS_PASSWORD']
14
- client_cert ENV['OS_CERT']
15
- client_key ENV['OS_KEY']
16
- region_name ENV['OS_REGION_NAME']
17
- identity_api_version ENV['OS_IDENTITY_API_VERSION']
18
- user_domain_name ENV['OS_USER_DOMAIN_NAME']
19
- project_domain_name ENV['OS_PROJECT_DOMAIN_NAME']
20
- debug ENV['YAO_DEBUG']
21
- end
22
- end
23
-
24
- def myip
25
- res = Net::HTTP.get URI.parse('https://checkip.amazonaws.com/')
26
- res.chomp
27
- end
28
- end
29
- end
30
- end
@@ -1,43 +0,0 @@
1
- require "yao"
2
- require "yaml"
3
- require "kanmon/commands/base"
4
-
5
- module Kanmon
6
- module Commands
7
- class Close < Base
8
- option :file, default: "kanmon.yml", desc: "config file path"
9
-
10
- def call(**options)
11
- id = YAML.load_file(options.fetch(:file))["security_group"]
12
- tenant_id = Yao.current_tenant_id
13
-
14
- rule = {
15
- direction: "ingress",
16
- port_range_min: 22,
17
- port_range_max: 22,
18
- ethertype: "IPv4",
19
- protocol: "tcp",
20
- security_group_id: id,
21
- tenant_id: tenant_id,
22
- }
23
-
24
- result = Yao::SecurityGroupRule.list(rule)
25
-
26
- if result.empty?
27
- puts "Not found"
28
- exit(1)
29
- end
30
-
31
- result.each do |rule|
32
- id = rule.id
33
- puts "Delete #{id}"
34
- Yao::SecurityGroupRule.destroy(id)
35
- end
36
-
37
- puts "Success!!"
38
- end
39
- end
40
-
41
- register "close", Close
42
- end
43
- end
@@ -1,30 +0,0 @@
1
- require "yao"
2
- require "yaml"
3
- require "kanmon/commands/base"
4
-
5
- module Kanmon
6
- module Commands
7
- class Open < Base
8
- option :file, default: "kanmon.yml", desc: "config file path"
9
-
10
- def call(**options)
11
- id = YAML.load_file(options.fetch(:file))["security_group"]
12
- ip = myip
13
- rule = {
14
- direction: "ingress",
15
- port_range_min: 22,
16
- port_range_max: 22,
17
- ethertype: "IPv4",
18
- protocol: "tcp",
19
- remote_ip_prefix: "#{ip}/32",
20
- security_group_id: id,
21
- }
22
-
23
- Yao::SecurityGroupRule.create(rule)
24
- puts "Success!!"
25
- end
26
- end
27
-
28
- register "open", Open
29
- end
30
- end
@@ -1,11 +0,0 @@
1
- module Kanmon
2
- module Commands
3
- class Version < Hanami::CLI::Command
4
- def call(*)
5
- puts "v#{Kanmon::VERSION}"
6
- end
7
- end
8
-
9
- register "version", Version
10
- end
11
- end