conoha 0.1.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: c7f87bff07c7ba44f2377d6d2a00909dbe2812cb
4
- data.tar.gz: 9461e47f5500d51c1669d61d66b0247e9b5bba51
3
+ metadata.gz: 7e74e785f4bb9c620e31f0eaa64dc2ce4aed8755
4
+ data.tar.gz: d72ed86c473189df9841b9570e462d04ab9fd9fd
5
5
  SHA512:
6
- metadata.gz: f1f42921a72d749004f4d9db1743970f449688c81d3e8c926f673b0e5cadc4de0ca5144f7c866d8b267ce26db90f2e737dbf64bc34c7f728bef35c094cb29a19
7
- data.tar.gz: 0d18b20f4a72a5a7f45f8532d2036cead48b7153cb4d9adbd9f6581e91a14488c4343275d0f7e6a024395a7d97d8df95eded214d10bd477eabdd9b01d7ffae73
6
+ metadata.gz: 41567c6082d53fdc1e8f13313acdc409462043bed0b7e04c9237481a622b8f414f87dc9213c973cd86ae85296b8c870525763847c620456863839096cb033cdd
7
+ data.tar.gz: 41582098947f4f5a39c9b80e9d36eb2fbb574fb8cf07c49bef020d532a32fa31714ee886d20898df57ac40f99bb5691870d7847b4c0a401f54b2bcc19700b30a
data/README.md CHANGED
@@ -126,6 +126,30 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/kaosf/
126
126
  - [ ] subcommand help messages
127
127
  - [ ] CLI support library (e.g. thor)
128
128
 
129
+ ## WIP feature
130
+
131
+ `Conoharantfile`
132
+
133
+ ```yml
134
+ # vim: ft=yaml
135
+ ---
136
+ os: centos67
137
+ ram: g-1gb
138
+ tagprefix: tagnameprefixasyoulike
139
+ ```
140
+
141
+ ```sh
142
+ # conoharant up
143
+ conoharant ssh
144
+ conoharant ssh root
145
+ conoharant mosh
146
+ conoharant dump
147
+ conoharant restore
148
+ conoharant clean
149
+ conoharant browse
150
+ conoharant browse 3000
151
+ ```
152
+
129
153
  ## License
130
154
 
131
155
  [MIT](http://opensource.org/licenses/MIT)
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ unless File.exist? 'Conoharantfile'
4
+ STDERR.puts "\"Conoharantfile\" doesn't exist."
5
+ exit 1
6
+ end
7
+ unless Dir.exist? '.conoharant'
8
+ Dir.mkdir '.conoharant'
9
+ end
10
+
11
+ require 'yaml'
12
+ config = YAML.load(File.open('Conoharantfile').read)
13
+ if File.exist? '.conoharant/status.yml'
14
+ status = YAML.load(File.open('.conoharant/status.yml').read)
15
+ else
16
+ status = {
17
+ 'status' => 'no',
18
+ 'id' => nil,
19
+ 'images' => [],
20
+ 'latestnumber' => 0,
21
+ 'image-tags' => [],
22
+ }
23
+ end
24
+
25
+ require 'conoha/util'
26
+ # Dump current status to ".conoharant/status.yml"
27
+ # @params [Hash] status
28
+ def dump_conoharant_status(status)
29
+ File.open('.conoharant/status.yml', 'w').print(YAML.dump(status))
30
+ end
31
+
32
+ require 'conoha'
33
+ Conoha.init!
34
+ begin
35
+ Conoha.vps_list
36
+ rescue => e
37
+ puts "Auth token is invalid."
38
+ puts "Reauthenticating..."
39
+ begin
40
+ Conoha.authenticate!
41
+ rescue => e
42
+ STDERR.puts "Failed to authenticate again."
43
+ STDERR.puts "Retry after modifying \"~/.conoha-config.json\"."
44
+ exit 1
45
+ end
46
+ end
47
+ puts "Authentication OK."
48
+
49
+ arg = ARGV.first
50
+ case arg
51
+ when 'ssh', 'mosh'
52
+ connection = arg # 'ssh' or 'mosh'
53
+ if status['status'] != 'running'
54
+ STDERR.puts "VPS is not running."
55
+ exit 1
56
+ end
57
+ server_id = status['id']
58
+ ipaddress = ipv4(Conoha.ip_address_of(server_id))
59
+ user = ARGV[1].nil? ? '' : "#{ARGV[1]}@"
60
+ case connection
61
+ when 'ssh'
62
+ command = "ssh -oStrictHostKeyChecking=no #{user}#{ipaddress}"
63
+ when 'mosh'
64
+ command = "mosh #{ipaddress}"
65
+ end
66
+ puts command
67
+ system command
68
+ when 'dump'
69
+ if status['status'] != 'running'
70
+ STDERR.puts "A running VPS doesn't exist."
71
+ exit 1
72
+ end
73
+ latest_number = status['latestnumber']
74
+ server_id = status['id']
75
+ name = "#{config['tagprefix']}#{latest_number + 1}"
76
+ latest_number += 1
77
+ puts "conoha shutdown #{server_id}"
78
+ Conoha.shutdown server_id
79
+ loop do
80
+ sleep 60
81
+ puts "conoha imagecreate #{server_id} #{name}"
82
+ result = Conoha.create_image server_id, name
83
+ break if result == 'OK'
84
+ puts '# Error! Retry after 60 seconds...'
85
+ end
86
+ puts '# OK!'
87
+ image_id = Conoha.images.find { |e| e[0] == name }[1]
88
+ loop do
89
+ sleep 60
90
+ puts "conoha delete #{server_id}"
91
+ result = Conoha.delete server_id
92
+ break if result == 'OK'
93
+ puts '# Error! Retry after 60 seconds...'
94
+ end
95
+ puts '# OK!'
96
+ status['status'] = 'no'
97
+ status['id'] = nil
98
+ status['images'] << image_id
99
+ status['latestnumber'] = latest_number
100
+ status['image-tags'] << name
101
+ dump_conoharant_status status
102
+ when 'restore'
103
+ if status['status'] != 'no'
104
+ STDERR.puts "A VPS already exists."
105
+ exit 1
106
+ end
107
+ image_id = status['images'][-1]
108
+ ram = config['ram']
109
+ puts "conoha restore #{image_id} #{ram}"
110
+ server_id = Conoha.create_from_image image_id, ram
111
+ status['status'] = 'running'
112
+ status['id'] = server_id
113
+ dump_conoharant_status status
114
+ when 'clean'
115
+ images = status['images']
116
+ if images.length > 2
117
+ images[0...-2].each do |e|
118
+ puts "conoha delete #{e}"
119
+ Conoha.delete_image e
120
+ end
121
+ status['images'] = status['images'][-2..-1]
122
+ status['image-tags'] = status['image-tags'][-2..-1]
123
+ dump_conoharant_status status
124
+ else
125
+ puts "Nothing to do."
126
+ end
127
+ when 'browse'
128
+ server_id = status['id']
129
+ ipaddress = ipv4(Conoha.ip_address_of(server_id))
130
+ port = ARGV[1].nil? ? '' : ":#{ARGV[1]}"
131
+ command = "xdg-open http://#{ipaddress}#{port}"
132
+ puts command
133
+ system command
134
+ else
135
+ STDERR.puts 'Invalid argument.'
136
+ exit 1
137
+ end
@@ -1,3 +1,3 @@
1
1
  module ConohaVersion
2
- ITSELF = "0.1.0"
2
+ ITSELF = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conoha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2015-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,6 +99,7 @@ email:
99
99
  - ka.kaosf@gmail.com
100
100
  executables:
101
101
  - conoha
102
+ - conoharant
102
103
  extensions: []
103
104
  extra_rdoc_files: []
104
105
  files:
@@ -113,6 +114,7 @@ files:
113
114
  - bin/setup
114
115
  - conoha.gemspec
115
116
  - exe/conoha
117
+ - exe/conoharant
116
118
  - lib/conoha.rb
117
119
  - lib/conoha/config.rb
118
120
  - lib/conoha/util.rb