vmfloaty 0.2.19 → 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 +4 -4
- data/README.md +4 -4
- data/lib/vmfloaty.rb +24 -7
- data/lib/vmfloaty/auth.rb +3 -3
- data/lib/vmfloaty/pooler.rb +17 -7
- data/lib/vmfloaty/version.rb +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e22ca01b2db81f1c9fcc0332a6ad701eddb36566
|
4
|
+
data.tar.gz: 7656dd21e3e635bfbb80c88e251629fb6b3938fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 771a0f09058b031084f92ed1b12ab0d6836cfec45900bf131e6cfb4046553d9ae437b31bcd2d7e8e1acf7254a417cce7b4dcaecb113fd7a961c06b1eb6e2f2ac
|
7
|
+
data.tar.gz: 78eb6e29cc49eadd4a505e4c90423926698058fc825b1a961246519c8f16772953826a8bb99fa64eb6285595e8f4e767eec11ee004795f6f985ed3b17376b593
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ gem install vmfloaty
|
|
47
47
|
Grabbing a token for authenticated pooler requests:
|
48
48
|
|
49
49
|
```
|
50
|
-
floaty token get --user me --url https://vmpooler.mycompany.net
|
50
|
+
floaty token get --user me --url https://vmpooler.mycompany.net/api/v1
|
51
51
|
```
|
52
52
|
|
53
53
|
This command will then ask you to log in. If successful, it will return a token that you can save either in a dotfile or use with other cli commands.
|
@@ -55,7 +55,7 @@ This command will then ask you to log in. If successful, it will return a token
|
|
55
55
|
Grabbing vms:
|
56
56
|
|
57
57
|
```
|
58
|
-
floaty get centos-7-x86_64=2 debian-7-x86_64=1 windows-10=3 --token mytokenstring --url https://vmpooler.mycompany.net
|
58
|
+
floaty get centos-7-x86_64=2 debian-7-x86_64=1 windows-10=3 --token mytokenstring --url https://vmpooler.mycompany.net/api/v1
|
59
59
|
```
|
60
60
|
|
61
61
|
### vmfloaty dotfile
|
@@ -64,7 +64,7 @@ If you do not wish to continuely specify various config options with the cli, yo
|
|
64
64
|
|
65
65
|
```yaml
|
66
66
|
#file at /Users/me/.vmfloaty.yml
|
67
|
-
url: 'http://vmpooler.mycompany.net'
|
67
|
+
url: 'http://vmpooler.mycompany.net/api/v1'
|
68
68
|
user: 'brian'
|
69
69
|
token: 'tokenstring'
|
70
70
|
```
|
@@ -143,7 +143,7 @@ end
|
|
143
143
|
|
144
144
|
if __FILE__ == $0
|
145
145
|
verbose = true
|
146
|
-
url = 'https://vmpooler.mycompany.net'
|
146
|
+
url = 'https://vmpooler.mycompany.net/api/v1'
|
147
147
|
token = aquire_token(verbose, url)
|
148
148
|
os = ARGV[0]
|
149
149
|
|
data/lib/vmfloaty.rb
CHANGED
@@ -125,29 +125,46 @@ class Vmfloaty
|
|
125
125
|
|
126
126
|
command :modify do |c|
|
127
127
|
c.syntax = 'floaty modify [hostname]'
|
128
|
-
c.summary = 'Modify a vms tags and
|
128
|
+
c.summary = 'Modify a vms tags, TTL, and disk space'
|
129
129
|
c.description = ''
|
130
130
|
c.example 'Modifies myhost1 to have a TTL of 12 hours and adds a custom tag', 'floaty modify myhost1 --lifetime 12 --url https://myurl --token mytokenstring --tags \'{"tag":"myvalue"}\''
|
131
131
|
c.option '--verbose', 'Enables verbose output'
|
132
132
|
c.option '--url STRING', String, 'URL of vmpooler'
|
133
133
|
c.option '--token STRING', String, 'Token for vmpooler'
|
134
134
|
c.option '--lifetime INT', Integer, 'VM TTL (Integer, in hours)'
|
135
|
+
c.option '--disk INT', Integer, 'Increases VM disk space (Integer, in gb)'
|
135
136
|
c.option '--tags STRING', String, 'free-form VM tagging (json)'
|
136
137
|
c.action do |args, options|
|
137
138
|
verbose = options.verbose || config['verbose']
|
138
139
|
url = options.url ||= config['url']
|
139
140
|
hostname = args[0]
|
140
141
|
lifetime = options.lifetime
|
142
|
+
disk = options.disk
|
141
143
|
tags = JSON.parse(options.tags) if options.tags
|
142
144
|
token = options.token || config['token']
|
143
145
|
|
144
|
-
|
145
|
-
|
146
|
-
|
146
|
+
if lifetime || tags
|
147
|
+
modify_req = Pooler.modify(verbose, url, hostname, token, lifetime, tags)
|
148
|
+
|
149
|
+
if modify_req["ok"]
|
150
|
+
puts "Successfully modified vm #{hostname}."
|
151
|
+
else
|
152
|
+
STDERR.puts "Could not modify given host #{hostname} at #{url}."
|
153
|
+
puts modify_req
|
154
|
+
exit 1
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
if disk
|
159
|
+
disk_req = Pooler.disk(verbose, url, hostname, token, disk)
|
160
|
+
if disk_req["ok"]
|
161
|
+
puts "Successfully updated disk space of vm #{hostname}."
|
162
|
+
else
|
163
|
+
STDERR.puts "Could not modify given host #{hostname} at #{url}."
|
164
|
+
puts disk_req
|
165
|
+
exit 1
|
166
|
+
end
|
147
167
|
else
|
148
|
-
STDERR.puts "Could not modify given host #{hostname} at #{url}."
|
149
|
-
puts modify_req
|
150
|
-
exit 1
|
151
168
|
end
|
152
169
|
end
|
153
170
|
end
|
data/lib/vmfloaty/auth.rb
CHANGED
@@ -6,7 +6,7 @@ class Auth
|
|
6
6
|
def self.get_token(verbose, url, user, password)
|
7
7
|
conn = Http.get_conn_with_auth(verbose, url, user, password)
|
8
8
|
|
9
|
-
resp = conn.post "
|
9
|
+
resp = conn.post "token"
|
10
10
|
|
11
11
|
res_body = JSON.parse(resp.body)
|
12
12
|
if res_body["ok"]
|
@@ -26,7 +26,7 @@ class Auth
|
|
26
26
|
|
27
27
|
conn = Http.get_conn_with_auth(verbose, url, user, password)
|
28
28
|
|
29
|
-
response = conn.delete "
|
29
|
+
response = conn.delete "token/#{token}"
|
30
30
|
res_body = JSON.parse(response.body)
|
31
31
|
if res_body["ok"]
|
32
32
|
return res_body
|
@@ -45,7 +45,7 @@ class Auth
|
|
45
45
|
|
46
46
|
conn = Http.get_conn(verbose, url)
|
47
47
|
|
48
|
-
response = conn.get "
|
48
|
+
response = conn.get "token/#{token}"
|
49
49
|
res_body = JSON.parse(response.body)
|
50
50
|
|
51
51
|
if res_body["ok"]
|
data/lib/vmfloaty/pooler.rb
CHANGED
@@ -6,7 +6,7 @@ class Pooler
|
|
6
6
|
def self.list(verbose, url, os_filter=nil)
|
7
7
|
conn = Http.get_conn(verbose, url)
|
8
8
|
|
9
|
-
response = conn.get '
|
9
|
+
response = conn.get 'vm'
|
10
10
|
response_body = JSON.parse(response.body)
|
11
11
|
|
12
12
|
if os_filter
|
@@ -37,7 +37,7 @@ class Pooler
|
|
37
37
|
raise "No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs."
|
38
38
|
end
|
39
39
|
|
40
|
-
response = conn.post "
|
40
|
+
response = conn.post "vm/#{os_string}"
|
41
41
|
|
42
42
|
res_body = JSON.parse(response.body)
|
43
43
|
if res_body["ok"]
|
@@ -60,7 +60,7 @@ class Pooler
|
|
60
60
|
conn.headers['X-AUTH-TOKEN'] = token
|
61
61
|
|
62
62
|
response = conn.put do |req|
|
63
|
-
req.url "
|
63
|
+
req.url "vm/#{hostname}"
|
64
64
|
req.body = modify_body.to_json
|
65
65
|
end
|
66
66
|
|
@@ -68,6 +68,16 @@ class Pooler
|
|
68
68
|
res_body
|
69
69
|
end
|
70
70
|
|
71
|
+
def self.disk(verbose, url, hostname, token, disk)
|
72
|
+
conn = Http.get_conn(verbose, url)
|
73
|
+
conn.headers['X-AUTH-TOKEN'] = token
|
74
|
+
|
75
|
+
response = conn.post "vm/#{hostname}/disk/#{disk}"
|
76
|
+
|
77
|
+
res_body = JSON.parse(response.body)
|
78
|
+
res_body
|
79
|
+
end
|
80
|
+
|
71
81
|
def self.delete(verbose, url, hosts, token)
|
72
82
|
conn = Http.get_conn(verbose, url)
|
73
83
|
|
@@ -77,7 +87,7 @@ class Pooler
|
|
77
87
|
|
78
88
|
hosts.each do |host|
|
79
89
|
puts "Scheduling host #{host} for deletion"
|
80
|
-
response = conn.delete "
|
90
|
+
response = conn.delete "vm/#{host}"
|
81
91
|
res_body = JSON.parse(response.body)
|
82
92
|
if res_body['ok']
|
83
93
|
puts "Deletion for vm #{host} successfully scheduled"
|
@@ -107,7 +117,7 @@ class Pooler
|
|
107
117
|
def self.query(verbose, url, hostname)
|
108
118
|
conn = Http.get_conn(verbose, url)
|
109
119
|
|
110
|
-
response = conn.get "
|
120
|
+
response = conn.get "vm/#{hostname}"
|
111
121
|
res_body = JSON.parse(response.body)
|
112
122
|
|
113
123
|
res_body
|
@@ -117,7 +127,7 @@ class Pooler
|
|
117
127
|
conn = Http.get_conn(verbose, url)
|
118
128
|
conn.headers['X-AUTH-TOKEN'] = token
|
119
129
|
|
120
|
-
response = conn.post "
|
130
|
+
response = conn.post "vm/#{hostname}/snapshot"
|
121
131
|
res_body = JSON.parse(response.body)
|
122
132
|
res_body
|
123
133
|
end
|
@@ -126,7 +136,7 @@ class Pooler
|
|
126
136
|
conn = Http.get_conn(verbose, url)
|
127
137
|
conn.headers['X-AUTH-TOKEN'] = token
|
128
138
|
|
129
|
-
response = conn.post "
|
139
|
+
response = conn.post "vm/#{hostname}/snapshot/#{snapshot_sha}"
|
130
140
|
res_body = JSON.parse(response.body)
|
131
141
|
res_body
|
132
142
|
end
|
data/lib/vmfloaty/version.rb
CHANGED
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmfloaty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Cain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.9'
|
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
40
|
version: '0.9'
|
41
41
|
description: A helper tool for vmpooler to help you stay afloat
|
@@ -70,17 +70,17 @@ require_paths:
|
|
70
70
|
- lib
|
71
71
|
required_ruby_version: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- -
|
78
|
+
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project:
|
83
|
-
rubygems_version: 2.
|
83
|
+
rubygems_version: 2.2.2
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: CLI application to interface with vmpooler
|