diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 9bbe782..390d2ab 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -43,7 +43,7 @@ class Vmfloaty force = options.force if args.empty? - STDERR.puts "No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs." + STDERR.puts 'No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs.' exit 1 end @@ -53,12 +53,12 @@ class Vmfloaty large_pool_requests = os_types.select{|_,v| v > max_pool_request} if ! large_pool_requests.empty? and ! force STDERR.puts "Requesting vms over #{max_pool_request} requires a --force flag." - STDERR.puts "Try again with `floaty get --force`" + STDERR.puts 'Try again with `floaty get --force`' exit 1 end if os_types.empty? - STDERR.puts "No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs." + STDERR.puts 'No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs.' exit 1 end @@ -144,10 +144,10 @@ class Vmfloaty modify_all = options.all if hostname.nil? and !modify_all - STDERR.puts "ERROR: Provide a hostname or specify --all." + STDERR.puts 'ERROR: Provide a hostname or specify --all.' exit 1 end - running_vms = modify_all ? service.list_active(verbose) : hostname.split(",") + running_vms = modify_all ? service.list_active(verbose) : hostname.split(',') tags = options.tags ? JSON.parse(options.tags) : nil modify_hash = { @@ -171,11 +171,11 @@ class Vmfloaty end if ok if modify_all - puts "Successfully modified all VMs." + puts 'Successfully modified all VMs.' else puts "Successfully modified VM #{hostname}." end - puts "Use `floaty list --active` to see the results." + puts 'Use `floaty list --active` to see the results.' end end end @@ -205,7 +205,7 @@ class Vmfloaty if delete_all running_vms = service.list_active(verbose) if running_vms.empty? - STDERR.puts "You have no running VMs." + STDERR.puts 'You have no running VMs.' else Utils.pretty_print_hosts(verbose, service, running_vms) # Confirm deletion @@ -236,7 +236,7 @@ class Vmfloaty end end else - STDERR.puts "You did not provide any hosts to delete" + STDERR.puts 'You did not provide any hosts to delete' exit 1 end @@ -417,7 +417,7 @@ class Vmfloaty use_token = !options.notoken if args.empty? - STDERR.puts "No operating systems provided to obtain. See `floaty ssh --help` for more information on how to get VMs." + STDERR.puts 'No operating systems provided to obtain. See `floaty ssh --help` for more information on how to get VMs.' exit 1 end diff --git a/lib/vmfloaty/auth.rb b/lib/vmfloaty/auth.rb index b68e22d..7d33327 100644 --- a/lib/vmfloaty/auth.rb +++ b/lib/vmfloaty/auth.rb @@ -7,11 +7,11 @@ class Auth def self.get_token(verbose, url, user, password) conn = Http.get_conn_with_auth(verbose, url, user, password) - resp = conn.post "token" + resp = conn.post 'token' res_body = JSON.parse(resp.body) - if res_body["ok"] - return res_body["token"] + if res_body['ok'] + return res_body['token'] else raise TokenError, "HTTP #{resp.status}: There was a problem requesting a token:\n#{res_body}" end @@ -26,7 +26,7 @@ class Auth response = conn.delete "token/#{token}" res_body = JSON.parse(response.body) - if res_body["ok"] + if res_body['ok'] return res_body else raise TokenError, "HTTP #{response.status}: There was a problem deleting a token:\n#{res_body}" @@ -43,7 +43,7 @@ class Auth response = conn.get "token/#{token}" res_body = JSON.parse(response.body) - if res_body["ok"] + if res_body['ok'] return res_body else raise TokenError, "HTTP #{response.status}: There was a problem getting the status of a token:\n#{res_body}" diff --git a/lib/vmfloaty/errors.rb b/lib/vmfloaty/errors.rb index 221fa14..ee8e2cb 100644 --- a/lib/vmfloaty/errors.rb +++ b/lib/vmfloaty/errors.rb @@ -1,23 +1,23 @@ class AuthError < StandardError - def initialize(msg="Could not authenticate to pooler") + def initialize(msg='Could not authenticate to pooler') super end end class TokenError < StandardError - def initialize(msg="Could not do operation with token provided") + def initialize(msg='Could not do operation with token provided') super end end class MissingParamError < StandardError - def initialize(msg="Argument provided to function is missing") + def initialize(msg='Argument provided to function is missing') super end end class ModifyError < StandardError - def initialize(msg="Could not modify VM") + def initialize(msg='Could not modify VM') super end end diff --git a/lib/vmfloaty/http.rb b/lib/vmfloaty/http.rb index 656b732..f21b993 100644 --- a/lib/vmfloaty/http.rb +++ b/lib/vmfloaty/http.rb @@ -18,7 +18,7 @@ class Http def self.get_conn(verbose, url) if url.nil? - raise "Did not provide a url to connect to" + raise 'Did not provide a url to connect to' end unless is_url(url) @@ -36,11 +36,11 @@ class Http def self.get_conn_with_auth(verbose, url, user, password) if url.nil? - raise "Did not provide a url to connect to" + raise 'Did not provide a url to connect to' end if user.nil? - raise "You did not provide a user to authenticate with" + raise 'You did not provide a user to authenticate with' end unless is_url(url) diff --git a/lib/vmfloaty/pooler.rb b/lib/vmfloaty/pooler.rb index e81b4cd..8bdef2c 100644 --- a/lib/vmfloaty/pooler.rb +++ b/lib/vmfloaty/pooler.rb @@ -37,24 +37,24 @@ class Pooler conn.headers['X-AUTH-TOKEN'] = token end - os_string = "" + os_string = '' os_type.each do |os,num| num.times do |i| - os_string << os+"+" + os_string << os+'+' end end - os_string = os_string.chomp("+") + os_string = os_string.chomp('+') if os_string.size == 0 - raise MissingParamError, "No operating systems provided to obtain." + raise MissingParamError, 'No operating systems provided to obtain.' end response = conn.post "vm/#{os_string}" res_body = JSON.parse(response.body) - if res_body["ok"] + if res_body['ok'] res_body elsif response.status == 401 raise AuthError, "HTTP #{response.status}: The token provided could not authenticate to the pooler.\n#{res_body}" @@ -65,7 +65,7 @@ class Pooler def self.modify(verbose, url, hostname, token, modify_hash) if token.nil? - raise TokenError, "Token provided was nil. Request cannot be made to modify vm" + raise TokenError, 'Token provided was nil. Request cannot be made to modify vm' end modify_hash.keys.each do |key| @@ -93,7 +93,7 @@ class Pooler def self.disk(verbose, url, hostname, token, disk) if token.nil? - raise TokenError, "Token provided was nil. Request cannot be made to modify vm" + raise TokenError, 'Token provided was nil. Request cannot be made to modify vm' end conn = Http.get_conn(verbose, url) @@ -107,7 +107,7 @@ class Pooler def self.delete(verbose, url, hosts, token) if token.nil? - raise TokenError, "Token provided was nil. Request cannot be made to delete vm" + raise TokenError, 'Token provided was nil. Request cannot be made to delete vm' end conn = Http.get_conn(verbose, url) @@ -154,7 +154,7 @@ class Pooler def self.snapshot(verbose, url, hostname, token) if token.nil? - raise TokenError, "Token provided was nil. Request cannot be made to snapshot vm" + raise TokenError, 'Token provided was nil. Request cannot be made to snapshot vm' end conn = Http.get_conn(verbose, url) @@ -167,7 +167,7 @@ class Pooler def self.revert(verbose, url, hostname, token, snapshot_sha) if token.nil? - raise TokenError, "Token provided was nil. Request cannot be made to revert vm" + raise TokenError, 'Token provided was nil. Request cannot be made to revert vm' end conn = Http.get_conn(verbose, url) diff --git a/lib/vmfloaty/service.rb b/lib/vmfloaty/service.rb index b2a2333..14a8df3 100644 --- a/lib/vmfloaty/service.rb +++ b/lib/vmfloaty/service.rb @@ -31,7 +31,7 @@ class Service def user unless @config['user'] - puts "Enter your pooler service username:" + puts 'Enter your pooler service username:' @config['user'] = STDIN.gets.chomp end @config['user'] @@ -39,7 +39,7 @@ class Service def token unless @config['token'] - puts "No token found. Retrieving a token..." + puts 'No token found. Retrieving a token...' @config['token'] = get_new_token(nil) end @config['token'] @@ -47,13 +47,13 @@ class Service def get_new_token(verbose) username = user - pass = Commander::UI::password "Enter your pooler service password:", '*' + pass = Commander::UI::password 'Enter your pooler service password:', '*' Auth.get_token(verbose, url, username, pass) end def delete_token(verbose, token_value = @config['token']) username = user - pass = Commander::UI::password "Enter your pooler service password:", '*' + pass = Commander::UI::password 'Enter your pooler service password:', '*' Auth.delete_token(verbose, url, username, pass, token_value) end @@ -91,9 +91,9 @@ class Service def pretty_print_running(verbose, hostnames = []) if hostnames.empty? - puts "You have no running VMs." + puts 'You have no running VMs.' else - puts "Running VMs:" + puts 'Running VMs:' @service_object.pretty_print_hosts(verbose, hostnames, url) end end diff --git a/lib/vmfloaty/ssh.rb b/lib/vmfloaty/ssh.rb index 4ee4b8c..4087d3a 100644 --- a/lib/vmfloaty/ssh.rb +++ b/lib/vmfloaty/ssh.rb @@ -14,19 +14,19 @@ class Ssh end def self.ssh(verbose, host_os, token, url) - ssh_path = which("ssh") + ssh_path = which('ssh') if !ssh_path - raise "Could not determine path to ssh" + raise 'Could not determine path to ssh' end os_types = {} os_types[host_os] = 1 response = Pooler.retrieve(verbose, os_types, token, url) - if response["ok"] == true + if response['ok'] == true if host_os =~ /win/ - user = "Administrator" + user = 'Administrator' else - user = "root" + user = 'root' end hostname = "#{response[host_os]["hostname"]}.#{response["domain"]}" diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index b8e1a17..fca7a32 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -65,7 +65,7 @@ class Utils # ...] os_types = {} os_args.each do |arg| - os_arr = arg.split("=") + os_arr = arg.split('=') if os_arr.size == 1 # assume they didn't specify an = sign if split returns 1 size os_types[os_arr[0]] = 1 diff --git a/spec/vmfloaty/auth_spec.rb b/spec/vmfloaty/auth_spec.rb index bcd246e..8a527ed 100644 --- a/spec/vmfloaty/auth_spec.rb +++ b/spec/vmfloaty/auth_spec.rb @@ -3,67 +3,67 @@ require_relative '../../lib/vmfloaty/auth' describe Pooler do before :each do - @vmpooler_url = "https://vmpooler.example.com" + @vmpooler_url = 'https://vmpooler.example.com' end - describe "#get_token" do + describe '#get_token' do before :each do - @get_token_response = "{\"ok\": true,\"token\":\"utpg2i2xswor6h8ttjhu3d47z53yy47y\"}" - @token = "utpg2i2xswor6h8ttjhu3d47z53yy47y" + @get_token_response = '{"ok": true,"token":"utpg2i2xswor6h8ttjhu3d47z53yy47y"}' + @token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y' end - it "returns a token from vmpooler" do - stub_request(:post, "https://first.last:password@vmpooler.example.com/token"). + it 'returns a token from vmpooler' do + stub_request(:post, 'https://first.last:password@vmpooler.example.com/token'). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2'}). to_return(:status => 200, :body => @get_token_response, :headers => {}) - token = Auth.get_token(false, @vmpooler_url, "first.last", "password") + token = Auth.get_token(false, @vmpooler_url, 'first.last', 'password') expect(token).to eq @token end - it "raises a token error if something goes wrong" do - stub_request(:post, "https://first.last:password@vmpooler.example.com/token"). + it 'raises a token error if something goes wrong' do + stub_request(:post, 'https://first.last:password@vmpooler.example.com/token'). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2'}). - to_return(:status => 500, :body => "{\"ok\":false}", :headers => {}) + to_return(:status => 500, :body => '{"ok":false}', :headers => {}) - expect{ Auth.get_token(false, @vmpooler_url, "first.last", "password") }.to raise_error(TokenError) + expect{ Auth.get_token(false, @vmpooler_url, 'first.last', 'password') }.to raise_error(TokenError) end end - describe "#delete_token" do + describe '#delete_token' do before :each do - @delete_token_response = "{\"ok\":true}" - @token = "utpg2i2xswor6h8ttjhu3d47z53yy47y" + @delete_token_response = '{"ok":true}' + @token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y' end - it "deletes the specified token" do - stub_request(:delete, "https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y"). + it 'deletes the specified token' do + stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y'). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). to_return(:status => 200, :body => @delete_token_response, :headers => {}) - expect(Auth.delete_token(false, @vmpooler_url, "first.last", "password", @token)).to eq JSON.parse(@delete_token_response) + expect(Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token)).to eq JSON.parse(@delete_token_response) end - it "raises a token error if something goes wrong" do - stub_request(:delete, "https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y"). + it 'raises a token error if something goes wrong' do + stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y'). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). - to_return(:status => 500, :body => "{\"ok\":false}", :headers => {}) + to_return(:status => 500, :body => '{"ok":false}', :headers => {}) - expect{ Auth.delete_token(false, @vmpooler_url, "first.last", "password", @token) }.to raise_error(TokenError) + expect{ Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token) }.to raise_error(TokenError) end - it "raises a token error if no token provided" do - expect{ Auth.delete_token(false, @vmpooler_url, "first.last", "password", nil) }.to raise_error(TokenError) + it 'raises a token error if no token provided' do + expect{ Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', nil) }.to raise_error(TokenError) end end - describe "#token_status" do + describe '#token_status' do before :each do - @token_status_response = "{\"ok\":true,\"utpg2i2xswor6h8ttjhu3d47z53yy47y\":{\"created\":\"2015-04-28 19:17:47 -0700\"}}" - @token = "utpg2i2xswor6h8ttjhu3d47z53yy47y" + @token_status_response = '{"ok":true,"utpg2i2xswor6h8ttjhu3d47z53yy47y":{"created":"2015-04-28 19:17:47 -0700"}}' + @token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y' end - it "checks the status of a token" do + it 'checks the status of a token' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). to_return(:status => 200, :body => @token_status_response, :headers => {}) @@ -71,15 +71,15 @@ describe Pooler do expect(Auth.token_status(false, @vmpooler_url, @token)).to eq JSON.parse(@token_status_response) end - it "raises a token error if something goes wrong" do + it 'raises a token error if something goes wrong' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). - to_return(:status => 500, :body => "{\"ok\":false}", :headers => {}) + to_return(:status => 500, :body => '{"ok":false}', :headers => {}) expect{ Auth.token_status(false, @vmpooler_url, @token) }.to raise_error(TokenError) end - it "raises a token error if no token provided" do + it 'raises a token error if no token provided' do expect{ Auth.token_status(false, @vmpooler_url, nil) }.to raise_error(TokenError) end end diff --git a/spec/vmfloaty/nonstandard_pooler_spec.rb b/spec/vmfloaty/nonstandard_pooler_spec.rb index 02ab9d9..7b03827 100644 --- a/spec/vmfloaty/nonstandard_pooler_spec.rb +++ b/spec/vmfloaty/nonstandard_pooler_spec.rb @@ -172,10 +172,10 @@ BODY end it 'raises an error if the user tries to modify an unsupported attribute' do - stub_request(:put, "https://nspooler.example.com/host/myfakehost"). - with(body: {"{}"=>true}, + stub_request(:put, 'https://nspooler.example.com/host/myfakehost'). + with(body: {'{}'=>true}, headers: {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'token-value'}). - to_return(status: 200, body: "", headers: {}) + to_return(status: 200, body: '', headers: {}) details = { lifetime: 12 } expect { NonstandardPooler.modify(false, @nspooler_url, 'myfakehost', 'token-value', details) } .to raise_error(ModifyError) @@ -188,7 +188,7 @@ BODY headers: @post_request_headers) .to_return(status: 200, body: '{"ok": true}', headers: {}) - modify_hash = { reason: "testing" } + modify_hash = { reason: 'testing' } modify_req = NonstandardPooler.modify(false, @nspooler_url, 'myfakehost', 'token-value', modify_hash) expect(modify_req['ok']).to be true end diff --git a/spec/vmfloaty/pooler_spec.rb b/spec/vmfloaty/pooler_spec.rb index 557149a..397e99a 100644 --- a/spec/vmfloaty/pooler_spec.rb +++ b/spec/vmfloaty/pooler_spec.rb @@ -3,15 +3,15 @@ require_relative '../../lib/vmfloaty/pooler' describe Pooler do before :each do - @vmpooler_url = "https://vmpooler.example.com" + @vmpooler_url = 'https://vmpooler.example.com' end - describe "#list" do + describe '#list' do before :each do - @list_response_body = "[\"debian-7-i386\",\"debian-7-x86_64\",\"centos-7-x86_64\"]" + @list_response_body = '["debian-7-i386","debian-7-x86_64","centos-7-x86_64"]' end - it "returns a hash with operating systems from the pooler" do + it 'returns a hash with operating systems from the pooler' do stub_request(:get, "#{@vmpooler_url}/vm"). to_return(:status => 200, :body => @list_response_body, :headers => {}) @@ -19,42 +19,42 @@ describe Pooler do expect(list).to be_an_instance_of Array end - it "filters operating systems based on the filter param" do + it 'filters operating systems based on the filter param' do stub_request(:get, "#{@vmpooler_url}/vm"). to_return(:status => 200, :body => @list_response_body, :headers => {}) - list = Pooler.list(false, @vmpooler_url, "deb") + list = Pooler.list(false, @vmpooler_url, 'deb') expect(list).to be_an_instance_of Array expect(list.size).to equal 2 end - it "returns nothing if the filter does not match" do + it 'returns nothing if the filter does not match' do stub_request(:get, "#{@vmpooler_url}/vm"). to_return(:status => 200, :body => @list_response_body, :headers => {}) - list = Pooler.list(false, @vmpooler_url, "windows") + list = Pooler.list(false, @vmpooler_url, 'windows') expect(list).to be_an_instance_of Array expect(list.size).to equal 0 end end - describe "#retrieve" do + describe '#retrieve' do before :each do - @retrieve_response_body_single = "{\"ok\":true,\"debian-7-i386\":{\"hostname\":\"fq6qlpjlsskycq6\"}}" - @retrieve_response_body_double = "{\"ok\":true,\"debian-7-i386\":{\"hostname\":[\"sc0o4xqtodlul5w\",\"4m4dkhqiufnjmxy\"]},\"centos-7-x86_64\":{\"hostname\":\"zb91y9qbrbf6d3q\"}}" + @retrieve_response_body_single = '{"ok":true,"debian-7-i386":{"hostname":"fq6qlpjlsskycq6"}}' + @retrieve_response_body_double = '{"ok":true,"debian-7-i386":{"hostname":["sc0o4xqtodlul5w","4m4dkhqiufnjmxy"]},"centos-7-x86_64":{"hostname":"zb91y9qbrbf6d3q"}}' end - it "raises an AuthError if the token is invalid" do + it 'raises an AuthError if the token is invalid' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). - to_return(:status => 401, :body => "{\"ok\":false}", :headers => {}) + to_return(:status => 401, :body => '{"ok":false}', :headers => {}) vm_hash = {} vm_hash['debian-7-i386'] = 1 expect{ Pooler.retrieve(false, vm_hash, 'mytokenfile', @vmpooler_url) }.to raise_error(AuthError) end - it "retrieves a single vm with a token" do + it 'retrieves a single vm with a token' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @retrieve_response_body_single, :headers => {}) @@ -63,11 +63,11 @@ describe Pooler do vm_hash['debian-7-i386'] = 1 vm_req = Pooler.retrieve(false, vm_hash, 'mytokenfile', @vmpooler_url) expect(vm_req).to be_an_instance_of Hash - expect(vm_req["ok"]).to equal true - expect(vm_req["debian-7-i386"]["hostname"]).to eq "fq6qlpjlsskycq6" + expect(vm_req['ok']).to equal true + expect(vm_req['debian-7-i386']['hostname']).to eq 'fq6qlpjlsskycq6' end - it "retrieves a multiple vms with a token" do + it 'retrieves a multiple vms with a token' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386+debian-7-i386+centos-7-x86_64"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @retrieve_response_body_double, :headers => {}) @@ -77,24 +77,24 @@ describe Pooler do vm_hash['centos-7-x86_64'] = 1 vm_req = Pooler.retrieve(false, vm_hash, 'mytokenfile', @vmpooler_url) expect(vm_req).to be_an_instance_of Hash - expect(vm_req["ok"]).to equal true - expect(vm_req["debian-7-i386"]["hostname"]).to be_an_instance_of Array - expect(vm_req["debian-7-i386"]["hostname"]).to eq ["sc0o4xqtodlul5w", "4m4dkhqiufnjmxy"] - expect(vm_req["centos-7-x86_64"]["hostname"]).to eq "zb91y9qbrbf6d3q" + expect(vm_req['ok']).to equal true + expect(vm_req['debian-7-i386']['hostname']).to be_an_instance_of Array + expect(vm_req['debian-7-i386']['hostname']).to eq ['sc0o4xqtodlul5w', '4m4dkhqiufnjmxy'] + expect(vm_req['centos-7-x86_64']['hostname']).to eq 'zb91y9qbrbf6d3q' end end - describe "#modify" do + describe '#modify' do before :each do - @modify_response_body_success = "{\"ok\":true}" - @modify_response_body_fail = "{\"ok\":false}" + @modify_response_body_success = '{"ok":true}' + @modify_response_body_fail = '{"ok":false}' end - it "raises a TokenError if token provided is nil" do + it 'raises a TokenError if token provided is nil' do expect{ Pooler.modify(false, @vmpooler_url, 'myfakehost', nil, {}) }.to raise_error(TokenError) end - it "modifies the TTL of a vm" do + it 'modifies the TTL of a vm' do modify_hash = { :lifetime => 12 } stub_request(:put, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6"). with(:body => {'{"lifetime":12}'=>true}, @@ -102,17 +102,17 @@ describe Pooler do to_return(:status => 200, :body => @modify_response_body_success, :headers => {}) modify_req = Pooler.modify(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', modify_hash) - expect(modify_req["ok"]).to be true + expect(modify_req['ok']).to be true end end - describe "#delete" do + describe '#delete' do before :each do - @delete_response_body_success = "{\"ok\":true}" - @delete_response = {"fq6qlpjlsskycq6"=>{"ok"=>true}} + @delete_response_body_success = '{"ok":true}' + @delete_response = {'fq6qlpjlsskycq6'=>{'ok'=>true}} end - it "deletes a specified vm" do + it 'deletes a specified vm' do stub_request(:delete, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @delete_response_body_success, :headers => {}) @@ -120,18 +120,18 @@ describe Pooler do expect(Pooler.delete(false, @vmpooler_url, ['fq6qlpjlsskycq6'], 'mytokenfile')).to eq @delete_response end - it "raises a token error if no token provided" do + it 'raises a token error if no token provided' do expect{ Pooler.delete(false, @vmpooler_url, ['myfakehost'], nil) }.to raise_error(TokenError) end end - describe "#status" do + describe '#status' do before :each do #smaller version - @status_response_body = "{\"capacity\":{\"current\":716,\"total\":717,\"percent\": 99.9},\"status\":{\"ok\":true,\"message\":\"Battle station fully armed and operational.\"}}" + @status_response_body = '{"capacity":{"current":716,"total":717,"percent": 99.9},"status":{"ok":true,"message":"Battle station fully armed and operational."}}' end - it "prints the status" do + it 'prints the status' do stub_request(:get, "#{@vmpooler_url}/status"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). to_return(:status => 200, :body => @status_response_body, :headers => {}) @@ -141,21 +141,21 @@ describe Pooler do end end - describe "#summary" do + describe '#summary' do before :each do - @status_response_body = "" + @status_response_body = '' - it "prints the summary" do + it 'prints the summary' do end end end - describe "#query" do + describe '#query' do before :each do - @query_response_body = "{\"ok\": true,\"fq6qlpjlsskycq6\":{\"template\":\"debian-7-x86_64\",\"lifetime\": 2,\"running\": 0.08,\"state\":\"running\",\"snapshots\":[\"n4eb4kdtp7rwv4x158366vd9jhac8btq\" ],\"domain\": \"delivery.puppetlabs.net\"}}" + @query_response_body = '{"ok": true,"fq6qlpjlsskycq6":{"template":"debian-7-x86_64","lifetime": 2,"running": 0.08,"state":"running","snapshots":["n4eb4kdtp7rwv4x158366vd9jhac8btq" ],"domain": "delivery.puppetlabs.net"}}' end - it "makes a query about a vm" do + it 'makes a query about a vm' do stub_request(:get, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Faraday v0.9.2'}). to_return(:status => 200, :body => @query_response_body, :headers => {}) @@ -165,59 +165,59 @@ describe Pooler do end end - describe "#snapshot" do + describe '#snapshot' do before :each do - @snapshot_response_body = "{\"ok\":true}" + @snapshot_response_body = '{"ok":true}' end - it "makes a snapshot for a single vm" do + it 'makes a snapshot for a single vm' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/snapshot"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @snapshot_response_body, :headers => {}) snapshot_req = Pooler.snapshot(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile') - expect(snapshot_req["ok"]).to be true + expect(snapshot_req['ok']).to be true end end - describe "#revert" do + describe '#revert' do before :each do - @revert_response_body = "{\"ok\":true}" + @revert_response_body = '{"ok":true}' end - it "makes a request to revert a vm from a snapshot" do + it 'makes a request to revert a vm from a snapshot' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/snapshot/dAfewKNfaweLKNve"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @revert_response_body, :headers => {}) revert_req = Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', 'dAfewKNfaweLKNve') - expect(revert_req["ok"]).to be true + expect(revert_req['ok']).to be true end it "doesn't make a request to revert a vm if snapshot is not provided" do - expect{ Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', nil) }.to raise_error(RuntimeError, "Snapshot SHA provided was nil, could not revert fq6qlpjlsskycq6") + expect{ Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', nil) }.to raise_error(RuntimeError, 'Snapshot SHA provided was nil, could not revert fq6qlpjlsskycq6') end - it "raises a TokenError if no token was provided" do + it 'raises a TokenError if no token was provided' do expect{ Pooler.revert(false, @vmpooler_url, 'myfakehost', nil, 'shaaaaaaa') }.to raise_error(TokenError) end end - describe "#disk" do + describe '#disk' do before :each do - @disk_response_body_success = "{\"ok\":true}" - @disk_response_body_fail = "{\"ok\":false}" + @disk_response_body_success = '{"ok":true}' + @disk_response_body_fail = '{"ok":false}' end - it "makes a request to extend disk space of a vm" do + it 'makes a request to extend disk space of a vm' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/disk/12"). with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Length'=>'0', 'User-Agent'=>'Faraday v0.9.2', 'X-Auth-Token'=>'mytokenfile'}). to_return(:status => 200, :body => @disk_response_body_success, :headers => {}) disk_req = Pooler.disk(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', 12) - expect(disk_req["ok"]).to be true + expect(disk_req['ok']).to be true end - it "raises a TokenError if no token was provided" do + it 'raises a TokenError if no token was provided' do expect{ Pooler.disk(false, @vmpooler_url, 'myfakehost', nil, 12) }.to raise_error(TokenError) end end diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index 5a78a61..1885bfa 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -5,7 +5,7 @@ require_relative '../../lib/vmfloaty/utils' describe Utils do - describe "#standardize_hostnames" do + describe '#standardize_hostnames' do before :each do @vmpooler_response_body ='{ "ok": true, @@ -28,24 +28,24 @@ describe Utils do }' end - it "formats a result from vmpooler into a hash of os to hostnames" do + it 'formats a result from vmpooler into a hash of os to hostnames' do result = Utils.standardize_hostnames(JSON.parse(@vmpooler_response_body)) - expect(result).to eq('centos-7-x86_64' => ["dlgietfmgeegry2.delivery.mycompany.net"], - 'ubuntu-1610-x86_64' => ["gdoy8q3nckuob0i.delivery.mycompany.net", "ctnktsd0u11p9tm.delivery.mycompany.net"]) + expect(result).to eq('centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], + 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net']) end - it "formats a result from the nonstandard pooler into a hash of os to hostnames" do + it 'formats a result from the nonstandard pooler into a hash of os to hostnames' do result = Utils.standardize_hostnames(JSON.parse(@nonstandard_response_body)) expect(result).to eq('solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], 'ubuntu-16.04-power8' => ['power8-ubuntu16.04-6.delivery.mycompany.net']) end end - describe "#format_host_output" do + describe '#format_host_output' do before :each do @vmpooler_results = { - 'centos-7-x86_64' => ["dlgietfmgeegry2.delivery.mycompany.net"], - 'ubuntu-1610-x86_64' => ["gdoy8q3nckuob0i.delivery.mycompany.net", "ctnktsd0u11p9tm.delivery.mycompany.net"] + 'centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], + 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net'] } @nonstandard_results = { 'solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], @@ -62,43 +62,43 @@ describe Utils do - power8-ubuntu16.04-6.delivery.mycompany.net (ubuntu-16.04-power8) OUT end - it "formats a hostname hash from vmpooler into a list that includes the os" do + it 'formats a hostname hash from vmpooler into a list that includes the os' do expect(Utils.format_host_output(@vmpooler_results)).to eq(@vmpooler_output) end - it "formats a hostname hash from the nonstandard pooler into a list that includes the os" do + it 'formats a hostname hash from the nonstandard pooler into a list that includes the os' do expect(Utils.format_host_output(@nonstandard_results)).to eq(@nonstandard_output) end end - describe "#get_service_object" do - it "assumes vmpooler by default" do + describe '#get_service_object' do + it 'assumes vmpooler by default' do expect(Utils.get_service_object).to be Pooler end - it "uses nspooler when told explicitly" do - expect(Utils.get_service_object "nspooler").to be NonstandardPooler + it 'uses nspooler when told explicitly' do + expect(Utils.get_service_object 'nspooler').to be NonstandardPooler end end - describe "#get_service_config" do + describe '#get_service_config' do before :each do @default_config = { - "url" => "http://default.url", - "user" => "first.last.default", - "token" => "default-token", + 'url' => 'http://default.url', + 'user' => 'first.last.default', + 'token' => 'default-token', } @services_config = { - "services" => { - "vm" => { - "url" => "http://vmpooler.url", - "user" => "first.last.vmpooler", - "token" => "vmpooler-token" + 'services' => { + 'vm' => { + 'url' => 'http://vmpooler.url', + 'user' => 'first.last.vmpooler', + 'token' => 'vmpooler-token' }, - "ns" => { - "url" => "http://nspooler.url", - "user" => "first.last.nspooler", - "token" => "nspooler-token" + 'ns' => { + 'url' => 'http://nspooler.url', + 'user' => 'first.last.nspooler', + 'token' => 'nspooler-token' } } } @@ -110,44 +110,44 @@ describe Utils do expect(Utils.get_service_config(config, options)).to include @services_config['services']['vm'] end - it "allows selection by configured service key" do + it 'allows selection by configured service key' do config = @default_config.merge @services_config - options = MockOptions.new({:service => "ns"}) + options = MockOptions.new({:service => 'ns'}) expect(Utils.get_service_config(config, options)).to include @services_config['services']['ns'] end - it "uses top-level service config values as defaults when configured service values are missing" do + it 'uses top-level service config values as defaults when configured service values are missing' do config = @default_config.merge @services_config - config["services"]['vm'].delete 'url' - options = MockOptions.new({:service => "vm"}) + config['services']['vm'].delete 'url' + options = MockOptions.new({:service => 'vm'}) expect(Utils.get_service_config(config, options)['url']).to eq 'http://default.url' end it "raises an error if passed a service name that hasn't been configured" do config = @default_config.merge @services_config - options = MockOptions.new({:service => "none"}) + options = MockOptions.new({:service => 'none'}) expect { Utils.get_service_config(config, options) }.to raise_error ArgumentError end - it "prioritizes values passed as command line options over configuration options" do + it 'prioritizes values passed as command line options over configuration options' do config = @default_config - options = MockOptions.new({:url => "http://alternate.url", :token => "alternate-token"}) - expected = config.merge({"url" => "http://alternate.url", "token" => "alternate-token"}) + options = MockOptions.new({:url => 'http://alternate.url', :token => 'alternate-token'}) + expected = config.merge({'url' => 'http://alternate.url', 'token' => 'alternate-token'}) expect(Utils.get_service_config(config, options)).to include expected end end - describe "#generate_os_hash" do + describe '#generate_os_hash' do before :each do - @host_hash = {"centos"=>1, "debian"=>5, "windows"=>1} + @host_hash = {'centos'=>1, 'debian'=>5, 'windows'=>1} end - it "takes an array of os arguments and returns a formatted hash" do - host_arg = ["centos", "debian=5", "windows=1"] + it 'takes an array of os arguments and returns a formatted hash' do + host_arg = ['centos', 'debian=5', 'windows=1'] expect(Utils.generate_os_hash(host_arg)).to eq @host_hash end - it "returns an empty hash if there are no arguments provided" do + it 'returns an empty hash if there are no arguments provided' do host_arg = [] expect(Utils.generate_os_hash(host_arg)).to be_empty end @@ -166,7 +166,7 @@ describe Utils do 'ip' => '127.0.0.1', 'domain' => 'delivery.mycompany.net' }} - output = "- mcpy42eqjxli9g2.delivery.mycompany.net (ubuntu-1604-x86_64, 9.66/12 hours)" + output = '- mcpy42eqjxli9g2.delivery.mycompany.net (ubuntu-1604-x86_64, 9.66/12 hours)' expect(Utils).to receive(:puts).with(output) @@ -192,7 +192,7 @@ describe Utils do 'ip' => '127.0.0.1', 'domain' => 'delivery.mycompany.net' }} - output = "- aiydvzpg23r415q.delivery.mycompany.net (redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)" + output = '- aiydvzpg23r415q.delivery.mycompany.net (redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)' expect(Utils).to receive(:puts).with(output) @@ -205,7 +205,7 @@ describe Utils do end it 'prints a nonstandard pooler output with host, template, and time remaining' do - hostname = "sol11-9.delivery.mycompany.net" + hostname = 'sol11-9.delivery.mycompany.net' response_body = { hostname => { 'fqdn' => hostname, 'os_triple' => 'solaris-11-sparc', @@ -213,7 +213,7 @@ describe Utils do 'reserved_for_reason' => '', 'hours_left_on_reservation' => 35.89 }} - output = "- sol11-9.delivery.mycompany.net (solaris-11-sparc, 35.89h remaining)" + output = '- sol11-9.delivery.mycompany.net (solaris-11-sparc, 35.89h remaining)' expect(Utils).to receive(:puts).with(output) @@ -234,7 +234,7 @@ describe Utils do 'reserved_for_reason' => 'testing', 'hours_left_on_reservation' => 35.89 }} - output = "- sol11-9.delivery.mycompany.net (solaris-11-sparc, 35.89h remaining, reason: testing)" + output = '- sol11-9.delivery.mycompany.net (solaris-11-sparc, 35.89h remaining, reason: testing)' expect(Utils).to receive(:puts).with(output)