vmfloaty 0.2.5 → 0.2.6

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: 5f215110e7c13ce2a72f19cb35aa90964cf7dd7c
4
- data.tar.gz: 5968455832c792537a7139dbe7ed4a95292a3458
3
+ metadata.gz: 1a6d9fbc28754d8b0ab518b73f62d6b20057b1d2
4
+ data.tar.gz: d328a16a9430b324a4ba5a050f1a72e0c5cf8f53
5
5
  SHA512:
6
- metadata.gz: b360f9ae8c057843796e65afdc421944c8bd787f27ab46093292df78ed1418f1d1e36cdc00dc8377bf9b7b5017e44637a0072b04a2156c6764e461cfc9846483
7
- data.tar.gz: 0ad5001db7b91489e043e3104c444fa6918919065a88c8eed3b968a9faff289f76d44726dc56f3c876f4944881980bb34febdac242457f067e847c723a52ebcf
6
+ metadata.gz: d9a5361e957db68222c1112912b17264417d19995f9b31ba7a19f3901454cf94c00d331e348cce6b8565daa0ca51848afb14fcdbd3d468a6548cd7ae68faf7a8
7
+ data.tar.gz: 1c1aea226b929c869930c5e65eb6814bc343116ffac03bfd729e0c72e604e5f7071912819769f19c75426798d1f4508caf030be49462686b9dbae22448631fc6
data/README.md CHANGED
@@ -40,6 +40,22 @@ gem install vmfloaty
40
40
  Display backtrace when an error occurs
41
41
  ```
42
42
 
43
+ ### Example workflow
44
+
45
+ Grabbing a token for authenticated pooler requests:
46
+
47
+ ```
48
+ floaty token get --user me --url https://vmpooler.mycompany.net
49
+ ```
50
+
51
+ 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.
52
+
53
+ Grabbing vms:
54
+
55
+ ```
56
+ floaty get centos-7,debian-7,windows-10 --token mytokenstring --url https://vmpooler.mycompany.net
57
+ ```
58
+
43
59
  ### vmfloaty dotfile
44
60
 
45
61
  If you do not wish to continuely specify various config options with the cli, you can have a dotfile in your home directory for some defaults. For example:
@@ -48,10 +64,92 @@ If you do not wish to continuely specify various config options with the cli, yo
48
64
  #file at /Users/me/.vmfloaty.yml
49
65
  url: 'http://vmpooler.mycompany.net'
50
66
  user: 'brian'
67
+ token: 'tokenstring'
51
68
  ```
52
69
 
53
70
  Now vmfloaty will use those config files if no flag was specified.
54
71
 
72
+ #### Valid config keys
73
+
74
+ Here are the keys that vmfloaty currently supports:
75
+
76
+ - verbose
77
+ + true
78
+ + false
79
+ - token
80
+ + :token-string
81
+ - user
82
+ + :username
83
+ - url
84
+ + :pooler-url
85
+
55
86
  ## vmpooler API
56
87
 
57
88
  This cli tool uses the [vmpooler API](https://github.com/puppetlabs/vmpooler/blob/master/API.md).
89
+
90
+ ## Using the Pooler class
91
+
92
+ 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.
93
+
94
+ ```ruby
95
+ require 'vmfloaty/pooler'
96
+ require 'vmfloaty/auth'
97
+ require 'io/console'
98
+ require 'net/ssh'
99
+
100
+ def aquire_token(verbose, url)
101
+ STDOUT.flush
102
+ puts "Enter username:"
103
+ user = $stdin.gets.chomp
104
+ puts "Enter password:"
105
+ password = STDIN.noecho(&:gets).chomp
106
+ token = Auth.get_token(verbose, url, user, password)
107
+
108
+ puts "Your token:\n#{token}"
109
+ token
110
+ end
111
+
112
+ def grab_vms(os_string, token, url, verbose)
113
+ response_body = Pooler.retrieve(verbose, os_string, token, url)
114
+
115
+ if response_body['ok'] == false
116
+ STDERR.puts "There was a problem with your request"
117
+ exit 1
118
+ end
119
+
120
+ response_body[os_string]
121
+ end
122
+
123
+ def run_puppet_on_host(hostname)
124
+ STDOUT.flush
125
+ puts "Enter 'root' password for vm:"
126
+ password = STDIN.noecho(&:gets).chomp
127
+ user = 'root'
128
+ # run puppet
129
+ run_puppet = "/opt/puppetlabs/puppet/bin/puppet agent -t"
130
+
131
+ begin
132
+ ssh = Net::SSH.start(hostname, user, :password => password)
133
+ output = ssh.exec!(run_puppet)
134
+ puts output
135
+ ssh.close
136
+ rescue
137
+ STDERR.puts "Unable to connect to #{hostname} using #{user}"
138
+ exit 1
139
+ end
140
+ end
141
+
142
+ if __FILE__ == $0
143
+ verbose = true
144
+ url = 'https://vmpooler.mycompany.net'
145
+ token = aquire_token(verbose, url)
146
+ os = ARGV[0]
147
+
148
+ hostname = grab_vm(os, token, url, verbose)
149
+ run_puppet_on_host(hostname)
150
+ end
151
+ ```
152
+
153
+ ```
154
+ ruby myscript.rb centos-7-x86_64
155
+ ```
data/lib/vmfloaty.rb CHANGED
@@ -2,18 +2,20 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'commander'
5
- require 'yaml'
6
5
  require 'vmfloaty/auth'
7
6
  require 'vmfloaty/pooler'
7
+ require 'vmfloaty/version'
8
+ require 'vmfloaty/conf'
9
+ require 'vmfloaty/format'
8
10
 
9
11
  class Vmfloaty
10
12
  include Commander::Methods
11
13
 
12
14
  def run
13
- program :version, '0.2.5'
15
+ program :version, Version.get
14
16
  program :description, 'A CLI helper tool for Puppet Labs vmpooler to help you stay afloat'
15
17
 
16
- config = read_config
18
+ config = Conf.read_config
17
19
 
18
20
  command :get do |c|
19
21
  c.syntax = 'floaty get [hostname,...]'
@@ -234,14 +236,4 @@ class Vmfloaty
234
236
 
235
237
  run!
236
238
  end
237
-
238
- def read_config
239
- conf = {}
240
- begin
241
- conf = YAML.load_file("#{Dir.home}/.vmfloaty.yml")
242
- rescue
243
- STDERR.puts "There was no config file at #{Dir.home}/.vmfloaty.yml"
244
- end
245
- conf
246
- end
247
239
  end
@@ -0,0 +1,14 @@
1
+ require 'yaml'
2
+
3
+ class Conf
4
+
5
+ def self.read_config
6
+ conf = {}
7
+ begin
8
+ conf = YAML.load_file("#{Dir.home}/.vmfloaty.yml")
9
+ rescue
10
+ STDERR.puts "WARNING: There was no config file at #{Dir.home}/.vmfloaty.yml"
11
+ end
12
+ conf
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+
2
+ class Format
3
+ # TODO: Takes the json response body from an HTTP GET
4
+ # request and "pretty prints" it
5
+ def self.get_hosts(hostname_hash)
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+
2
+ class Version
3
+ @version = '0.2.6'
4
+
5
+ def self.get
6
+ @version
7
+ end
8
+ 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.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Cain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-25 00:00:00.000000000 Z
11
+ date: 2015-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.9'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.9'
27
41
  description: A helper tool for vmpooler to help you stay afloat
28
42
  email:
29
43
  - brian.cain@puppetlabs.com
@@ -37,8 +51,11 @@ files:
37
51
  - bin/floaty
38
52
  - lib/vmfloaty.rb
39
53
  - lib/vmfloaty/auth.rb
54
+ - lib/vmfloaty/conf.rb
55
+ - lib/vmfloaty/format.rb
40
56
  - lib/vmfloaty/http.rb
41
57
  - lib/vmfloaty/pooler.rb
58
+ - lib/vmfloaty/version.rb
42
59
  - spec/spec_helper.rb
43
60
  homepage: https://github.com/briancain/vmfloaty
44
61
  licenses: