vmfloaty 0.6.1 → 0.6.2

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: 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