vmfloaty 0.6.1 → 0.6.2

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: eab6e0237c6ce8afe7ce25cb2573a852bd4e6e63
4
- data.tar.gz: 6fa9a7232f1814cc602f1e8aa98900b618aab97d
3
+ metadata.gz: 1bb5fd73f29e77b581fadb37b382fceb4131497b
4
+ data.tar.gz: c947c5941fd8d4f6b6aaaa4be3c320b5276b66f0
5
5
  SHA512:
6
- metadata.gz: 32cc876286d8dcc6d887dc471d5a4ca7af1bc541a7b838674fea05ff809712367f20e0181fda5182d9cde487e487b69277ae02b84a6972dbe8b11d6011a6996d
7
- data.tar.gz: a1f92a6bd32a1d30fea8bdb258b03e56440fb81c5bf289510973ce02e8666a19aedfddd3a1a504fc459c3a21f705b3fb93ce46457b39510e4b75abb9ad1beb58
6
+ metadata.gz: 1c4cc430096ff5b521deac4a1f8c4ad70ef2739d3419f4dbe54fff3bf9da87e0f6d94c4b9cb629565ba025ba8238fe079351f3d7b31a0a4985b6b7c4433412d9
7
+ data.tar.gz: 065e1253192e6f2c48caa3b152573c63cddfc36fe2190610403469e34ce43dd7252f09c86574df91fdec0cf7721da94d0c64c65d04b32d320cbf41a560d472ff
data/README.md CHANGED
@@ -94,71 +94,11 @@ This cli tool uses the [vmpooler API](https://github.com/puppetlabs/vmpooler/blo
94
94
 
95
95
  ## Using the Pooler class
96
96
 
97
- An example of an application using vmfloaty as a library can be seen in [vagrant-vmpooler](https://github.com/briancain/vagrant-vmpooler).
98
-
99
- ### Scripting
100
-
101
- If you want to write some ruby scripts around the vmpooler api, vmfloaty provides a `Pooler` and `Auth` class to make things easier. The ruby script below shows off an example of a script that gets a token, grabs a vm, runs some commands through ssh, and then destroys the vm.
102
-
103
- ```ruby
104
- require 'vmfloaty/pooler'
105
- require 'vmfloaty/auth'
106
- require 'io/console'
107
- require 'net/ssh'
108
-
109
- def aquire_token(verbose, url)
110
- STDOUT.flush
111
- puts "Enter username:"
112
- user = $stdin.gets.chomp
113
- puts "Enter password:"
114
- password = STDIN.noecho(&:gets).chomp
115
- token = Auth.get_token(verbose, url, user, password)
116
-
117
- puts "Your token:\n#{token}"
118
- token
119
- end
120
-
121
- def grab_vms(os_string, token, url, verbose)
122
- response_body = Pooler.retrieve(verbose, os_string, token, url)
123
-
124
- if response_body['ok'] == false
125
- STDERR.puts "There was a problem with your request"
126
- exit 1
127
- end
128
-
129
- response_body[os_string]
130
- end
131
-
132
- def run_puppet_on_host(hostname)
133
- STDOUT.flush
134
- puts "Enter 'root' password for vm:"
135
- password = STDIN.noecho(&:gets).chomp
136
- user = 'root'
137
- # run puppet
138
- run_puppet = "/opt/puppetlabs/puppet/bin/puppet agent -t"
139
-
140
- begin
141
- ssh = Net::SSH.start(hostname, user, :password => password)
142
- output = ssh.exec!(run_puppet)
143
- puts output
144
- ssh.close
145
- rescue
146
- STDERR.puts "Unable to connect to #{hostname} using #{user}"
147
- exit 1
148
- end
149
- end
150
-
151
- if __FILE__ == $0
152
- verbose = true
153
- url = 'https://vmpooler.mycompany.net/api/v1'
154
- token = aquire_token(verbose, url)
155
- os = ARGV[0]
156
-
157
- hostname = grab_vm(os, token, url, verbose)
158
- run_puppet_on_host(hostname)
159
- end
160
- ```
97
+ vmfloaty providers a `Pooler` class that gives users the ability to make requests to vmpooler without having to write their own requests. It also provides an `Auth` class for managing vmpooler tokens within your application.
161
98
 
162
- ```
163
- ruby myscript.rb centos-7-x86_64
164
- ```
99
+ ### Example Projects
100
+
101
+ - [John McCabe: vmpooler-bitbar](https://github.com/johnmccabe/vmpooler-bitbar/)
102
+ + vmpooler status and management in your menubar with bitbar
103
+ - [Brian Cain: vagrant-vmpooler](https://github.com/briancain/vagrant-vmpooler)
104
+ + Use Vagrant to manage your vmpooler instances
@@ -74,7 +74,7 @@ class Vmfloaty
74
74
  end
75
75
 
76
76
  command :list do |c|
77
- c.syntax = 'floaty list [hostname]'
77
+ c.syntax = 'floaty list [options]'
78
78
  c.summary = 'Shows a list of available vms from the pooler'
79
79
  c.description = ''
80
80
  c.example 'Filter the list on centos', 'floaty list centos --url http://vmpooler.example.com'
@@ -117,7 +117,7 @@ class Vmfloaty
117
117
  end
118
118
 
119
119
  command :query do |c|
120
- c.syntax = 'floaty query [options]'
120
+ c.syntax = 'floaty query [hostname] [options]'
121
121
  c.summary = 'Get information about a given vm'
122
122
  c.description = ''
123
123
  c.example 'Get information about a sample host', 'floaty query hostname --url http://vmpooler.example.com'
@@ -134,7 +134,7 @@ class Vmfloaty
134
134
  end
135
135
 
136
136
  command :modify do |c|
137
- c.syntax = 'floaty modify [hostname]'
137
+ c.syntax = 'floaty modify [hostname] [options]'
138
138
  c.summary = 'Modify a vms tags, TTL, and disk space'
139
139
  c.description = ''
140
140
  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"}\''
@@ -254,7 +254,7 @@ class Vmfloaty
254
254
  end
255
255
 
256
256
  command :snapshot do |c|
257
- c.syntax = 'floaty snapshot [options]'
257
+ c.syntax = 'floaty snapshot [hostname] [options]'
258
258
  c.summary = 'Takes a snapshot of a given vm'
259
259
  c.description = ''
260
260
  c.example 'Takes a snapshot for a given host', 'floaty snapshot myvm.example.com --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl'
@@ -273,10 +273,10 @@ class Vmfloaty
273
273
  end
274
274
 
275
275
  command :revert do |c|
276
- c.syntax = 'floaty revert [options]'
276
+ c.syntax = 'floaty revert [hostname] [snapshot] [options]'
277
277
  c.summary = 'Reverts a vm to a specified snapshot'
278
278
  c.description = ''
279
- c.example 'Reverts to a snapshot for a given host', 'floaty revert myvm.example.com --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl --snapshot n4eb4kdtp7rwv4x158366vd9jhac8btq'
279
+ c.example 'Reverts to a snapshot for a given host', 'floaty revert myvm.example.com n4eb4kdtp7rwv4x158366vd9jhac8btq --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl'
280
280
  c.option '--verbose', 'Enables verbose output'
281
281
  c.option '--url STRING', String, 'URL of vmpooler'
282
282
  c.option '--token STRING', String, 'Token for vmpooler'
@@ -286,7 +286,11 @@ class Vmfloaty
286
286
  url = options.url ||= config['url']
287
287
  hostname = args[0]
288
288
  token = options.token || config['token']
289
- snapshot_sha = options.snapshot
289
+ snapshot_sha = args[1] || options.snapshot
290
+
291
+ if args[1] && options.snapshot
292
+ STDERR.puts "Two snapshot arguments were given....using snapshot #{snapshot_sha}"
293
+ end
290
294
 
291
295
  revert_req = Pooler.revert(verbose, url, hostname, token, snapshot_sha)
292
296
  pp revert_req
@@ -326,10 +330,10 @@ class Vmfloaty
326
330
  end
327
331
 
328
332
  command :token do |c|
329
- c.syntax = 'floaty token [get | delete | status]'
333
+ c.syntax = 'floaty token [get | delete | status] [token]'
330
334
  c.summary = 'Retrieves or deletes a token'
331
335
  c.description = ''
332
- c.example '', ''
336
+ c.example 'Gets a token from the pooler', 'floaty token get'
333
337
  c.option '--verbose', 'Enables verbose output'
334
338
  c.option '--url STRING', String, 'URL of vmpooler'
335
339
  c.option '--user STRING', String, 'User to authenticate with'
@@ -338,7 +342,7 @@ class Vmfloaty
338
342
  verbose = options.verbose || config['verbose']
339
343
  action = args.first
340
344
  url = options.url ||= config['url']
341
- token = options.token ||= config['token']
345
+ token = args[1] ||= options.token ||= config['token']
342
346
  user = options.user ||= config['user']
343
347
 
344
348
  case action
@@ -134,6 +134,10 @@ class Pooler
134
134
  conn = Http.get_conn(verbose, url)
135
135
  conn.headers['X-AUTH-TOKEN'] = token
136
136
 
137
+ if snapshot_sha.nil?
138
+ raise "Snapshot SHA provided was nil, could not revert #{hostname}"
139
+ end
140
+
137
141
  response = conn.post "vm/#{hostname}/snapshot/#{snapshot_sha}"
138
142
  res_body = JSON.parse(response.body)
139
143
  res_body
@@ -1,6 +1,6 @@
1
1
 
2
2
  class Version
3
- @version = '0.6.1'
3
+ @version = '0.6.2'
4
4
 
5
5
  def self.get
6
6
  @version
@@ -174,5 +174,9 @@ describe Pooler do
174
174
  revert_req = Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', 'dAfewKNfaweLKNve')
175
175
  expect(revert_req["ok"]).to be true
176
176
  end
177
+
178
+ it "doesn't make a request to revert a vm if snapshot is not provided" do
179
+ expect{ Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', nil) }.to raise_error(RuntimeError, "Snapshot SHA provided was nil, could not revert fq6qlpjlsskycq6")
180
+ end
177
181
  end
178
182
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmfloaty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Cain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-15 00:00:00.000000000 Z
11
+ date: 2016-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander