spec/lib/proxmox_spec.rb in proxmox-0.0.4 vs spec/lib/proxmox_spec.rb in proxmox-0.0.5

- old
+ new

@@ -3,237 +3,292 @@ require 'proxmox' describe Proxmox do before(:each) do @common_headers_in = { 'User-Agent' => 'Ruby', - 'Cookie' => /.*/, - 'Csrfpreventiontoken' => /.*/ } - @common_headers_out = { :connection => "close", - :server => "pve-api-daemon/3.0", - :content_type => "application/json;charset=UTF-8" } + 'Cookie' => /.*/, + 'Csrfpreventiontoken' => /.*/ } + @common_headers_out = { connection: 'close', + server: 'pve-api-daemon/3.0', + content_type: 'application/json;charset=UTF-8' } # Common auth - stub_request(:post, "http://localhost:8006/api2/json/access/ticket").with( - :headers => { + stub_request(:post, 'http://localhost:8006/api2/json/access/ticket').with( + headers: { 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'Ruby' }, - :body => { - "username" => "root", - "password" => "secret", - "realm" => "pam" + body: { + 'username' => 'root', + 'password' => 'secret', + 'realm' => 'pam' } ).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":{"cap":{"dc":{"Sys.Audit":1},"access":{"Group.Allocate":1,"User.Modify":1},"nodes":{"Sys.Audit":1,"Sys.Syslog":1,"Sys.Console":1,"Sys.Modify":1,"Sys.PowerMgmt":1},"vms":{"VM.Backup":1,"VM.Allocate":1,"VM.Config.CPU":1,"VM.Config.Network":1,"VM.Migrate":1,"VM.Config.Memory":1,"VM.Config.Options":1,"Permissions.Modify":1,"VM.Monitor":1,"VM.Console":1,"VM.Config.Disk":1,"VM.Config.HWType":1,"VM.Clone":1,"VM.Snapshot":1,"VM.Audit":1,"VM.PowerMgmt":1,"VM.Config.CDROM":1},"storage":{"Datastore.AllocateTemplate":1,"Datastore.Allocate":1,"Datastore.Audit":1,"Permissions.Modify":1,"Datastore.AllocateSpace":1}},"CSRFPreventionToken":"51F00E60:Pnd0AHehuTE++j87nUz0nLuyW+0","ticket":"PVE:root@pam:51F00E60::OS5lBKlaabgnmekdbVY2JYAbd5Z/MPWCeZ9b33UwjsE1yVB1esIwUQoXJ4Xgb/+UVE9mtS2K3dJ65wyPDsGYTDc0TCl0VmdOGz7djXMlMy5ShRjXcX/GLs77LHXlLQOO+ED/jCoz0tHV55igNSBNMG2UrSLlTGvgm8zf1fNqAsVszrAWgeFu+e/1CLIfs//cWyimBuDx+r3m/NOjaoyeb2u63eBCPrWyEiCJZniMZDVnqqQcOm32tE2XQj4D2LS+xaHn2fdZDlcAo0uY4qVspKiMjf9g2AudRblkobCTf7KdhanIm0kCSqkvHJy2EMcAbxcqnGnjPiYSH0WYZMTnlA==","username":"root@pam"}}' + status: 200, + headers: @common_headers_out, + body: '{"data":{"cap":{"dc":{"Sys.Audit":1},"access":{"Group.Allocate":1,"User.Modify":1},"nodes":{"Sys.Audit":1,"Sys.Syslog":1,"Sys.Console":1,"Sys.Modify":1,"Sys.PowerMgmt":1},"vms":{"VM.Backup":1,"VM.Allocate":1,"VM.Config.CPU":1,"VM.Config.Network":1,"VM.Migrate":1,"VM.Config.Memory":1,"VM.Config.Options":1,"Permissions.Modify":1,"VM.Monitor":1,"VM.Console":1,"VM.Config.Disk":1,"VM.Config.HWType":1,"VM.Clone":1,"VM.Snapshot":1,"VM.Audit":1,"VM.PowerMgmt":1,"VM.Config.CDROM":1},"storage":{"Datastore.AllocateTemplate":1,"Datastore.Allocate":1,"Datastore.Audit":1,"Permissions.Modify":1,"Datastore.AllocateSpace":1}},"CSRFPreventionToken":"51F00E60:Pnd0AHehuTE++j87nUz0nLuyW+0","ticket":"PVE:root@pam:51F00E60::OS5lBKlaabgnmekdbVY2JYAbd5Z/MPWCeZ9b33UwjsE1yVB1esIwUQoXJ4Xgb/+UVE9mtS2K3dJ65wyPDsGYTDc0TCl0VmdOGz7djXMlMy5ShRjXcX/GLs77LHXlLQOO+ED/jCoz0tHV55igNSBNMG2UrSLlTGvgm8zf1fNqAsVszrAWgeFu+e/1CLIfs//cWyimBuDx+r3m/NOjaoyeb2u63eBCPrWyEiCJZniMZDVnqqQcOm32tE2XQj4D2LS+xaHn2fdZDlcAo0uY4qVspKiMjf9g2AudRblkobCTf7KdhanIm0kCSqkvHJy2EMcAbxcqnGnjPiYSH0WYZMTnlA==","username":"root@pam"}}' ) - @server1 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "localhost", "root", "secret", "pam") + @server1 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'localhost', 'root', 'secret', 'pam') end + describe 'get' do + it 'calls http_action_get' do + expect(@server1).to receive(:http_action_get).with("version", {}) + @server1.get("version") + end + end + + describe 'post' do + it 'calls http_action_post' do + expect(@server1).to receive(:http_action_post).with("version", {}) + @server1.post("version") + end + end + + describe 'put' do + it 'calls http_action_put' do + expect(@server1).to receive(:http_action_put).with("version", {}) + @server1.put("version") + end + end + + describe 'delete' do + it 'calls http_action_delete' do + expect(@server1).to receive(:http_action_delete).with("version") + @server1.delete("version") + end + end + it 'should connect to Proxmox server' do # Bad auth - stub_request(:post, "http://localhost:8006/api2/json/access/ticket").with( - :headers => { + stub_request(:post, 'http://localhost:8006/api2/json/access/ticket').with( + headers: { 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'Ruby' }, - :body => { - "username" => "root", - "password" => "bad", - "realm" => "pam" + body: { + 'username' => 'root', + 'password' => 'bad', + 'realm' => 'pam' } ).to_return( - :status => 500, - :headers => @common_headers_out, - :body => '{"data":null}' + status: 500, + headers: @common_headers_out, + body: '{"data":null}' ) - expect(@server1.connection_status).to eq "connected" + expect(@server1.connection_status).to eq 'connected' - server2 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "localhost", "root", "bad", "pam") - expect(server2.connection_status).to eq "error" + server2 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'localhost', 'root', 'bad', 'pam') + expect(server2.connection_status).to eq 'error' end - it "should get task status" do - # Status done - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:/status").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => { - :connection => "close", :server => "pve-api-daemon/3.0", :content_type => "application/json;charset=UTF-8", }, - :body => '{"data":{"exitstatus":"OK","status":"stopped","upid":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:","node":"localhost","pid":335264,"starttime":1377618713,"user":"root@pam","type":"vzcreate","id":"200","pstart":295611067}}' - ) + describe 'task_status' do + it 'should get task status' do + # Status done + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:/status').with( + headers: @common_headers_in).to_return( + status: 200, + headers: { + connection: 'close', server: 'pve-api-daemon/3.0', content_type: 'application/json;charset=UTF-8' }, + body: '{"data":{"exitstatus":"OK","status":"stopped","upid":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:","node":"localhost","pid":335264,"starttime":1377618713,"user":"root@pam","type":"vzcreate","id":"200","pstart":295611067}}' + ) - # Status running - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:/status").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":{"status":"running","upid":"UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:","node":"localhost","pid":351706,"starttime":1377625887,"user":"root@pam","type":"vzcreate","id":"200","pstart":296328455}}' - ) + # Status running + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:/status').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":{"status":"running","upid":"UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:","node":"localhost","pid":351706,"starttime":1377625887,"user":"root@pam","type":"vzcreate","id":"200","pstart":296328455}}' + ) - # Get status - expect(@server1.task_status("UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:")).to be_eql "stopped:OK" - expect(@server1.task_status("UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:")).to be_eql "running" + # Get status + expect(@server1.task_status('UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:')).to be_eql 'stopped:OK' + expect(@server1.task_status('UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:')).to be_eql 'running' + end end - it "should get template list" do - # First template list - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/storage/local/content").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":[{"format":"tgz","content":"vztmpl","volid":"local:vztmpl/ubuntu-10.04-standard_10.04-4_i386.tar.gz","size":142126884},{"format":"tgz","content":"vztmpl","volid":"local:vztmpl/ubuntu-12.04-standard_12.04-1_i386.tar.gz","size":130040792}]}' - ) + describe 'templates' do + it 'should get template list' do + # First template list + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/storage/local/content').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":[{"format":"tgz","content":"vztmpl","volid":"local:vztmpl/ubuntu-10.04-standard_10.04-4_i386.tar.gz","size":142126884},{"format":"tgz","content":"vztmpl","volid":"local:vztmpl/ubuntu-12.04-standard_12.04-1_i386.tar.gz","size":130040792}]}' + ) - expect(@server1.templates).to be_an_instance_of Hash - expect(@server1.templates.keys.sort).to be_eql [ 'ubuntu-10.04-standard_10.04-4_i386', 'ubuntu-12.04-standard_12.04-1_i386' ] + expect(@server1.templates).to be_an_instance_of Hash + expect(@server1.templates.keys.sort).to be_eql ['ubuntu-10.04-standard_10.04-4_i386', 'ubuntu-12.04-standard_12.04-1_i386'] + end end - it "should get openvz vm list" do - # First VM list - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":[{"maxswap":536870912,"disk":404037632,"ip":"192.168.1.5","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":3847,"swap":0,"vmid":"101","nproc":"10","diskread":0,"cpu":0.00183354942808597,"netin":0,"name":"test2.dummy.tld","failcnt":0,"diskwrite":0,"mem":21303296,"type":"openvz","cpus":1},{"maxswap":536870912,"disk":387186688,"ip":"192.168.1.1","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":17120,"swap":0,"vmid":"100","nproc":"17","diskread":0,"cpu":0.000504170031344927,"netin":0,"name":"test.dummy.tld","failcnt":0,"diskwrite":0,"mem":27987968,"type":"openvz","cpus":1}]}' - ) + describe 'openvz_get' do + it 'should get openvz vm list' do + # First VM list + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":[{"maxswap":536870912,"disk":404037632,"ip":"192.168.1.5","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":3847,"swap":0,"vmid":"101","nproc":"10","diskread":0,"cpu":0.00183354942808597,"netin":0,"name":"test2.dummy.tld","failcnt":0,"diskwrite":0,"mem":21303296,"type":"openvz","cpus":1},{"maxswap":536870912,"disk":387186688,"ip":"192.168.1.1","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":17120,"swap":0,"vmid":"100","nproc":"17","diskread":0,"cpu":0.000504170031344927,"netin":0,"name":"test.dummy.tld","failcnt":0,"diskwrite":0,"mem":27987968,"type":"openvz","cpus":1}]}' + ) - # Second VM list - stub_request(:get, "http://localhost:8006/api2/json/nodes/otherone/openvz").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":[{"maxswap":536870912,"disk":404041728,"ip":"192.168.1.5","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":6176,"swap":0,"vmid":"101","nproc":"10","diskread":0,"cpu":0.00161487378340585,"netin":0,"name":"test2.dummy.tld","failcnt":0,"diskwrite":0,"mem":21299200,"type":"openvz","cpus":1},{"maxswap":2147483648,"disk":0,"ip":"10.0.0.1","status":"stopped","netout":0,"maxdisk":10737418240,"maxmem":1073741824,"uptime":0,"swap":0,"vmid":"102","nproc":0,"diskread":0,"cpu":0,"netin":0,"name":"test3.other.domain","failcnt":0,"diskwrite":0,"mem":0,"type":"openvz","cpus":2},{"maxswap":536870912,"disk":387194880,"ip":"192.168.1.1","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":19449,"swap":0,"vmid":"100","nproc":"17","diskread":0,"cpu":0.000589570582552814,"netin":0,"name":"test.dummy.tld","failcnt":0,"diskwrite":0,"mem":28282880,"type":"openvz","cpus":1}]}' - ) + # Second VM list + stub_request(:get, 'http://localhost:8006/api2/json/nodes/otherone/openvz').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":[{"maxswap":536870912,"disk":404041728,"ip":"192.168.1.5","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":6176,"swap":0,"vmid":"101","nproc":"10","diskread":0,"cpu":0.00161487378340585,"netin":0,"name":"test2.dummy.tld","failcnt":0,"diskwrite":0,"mem":21299200,"type":"openvz","cpus":1},{"maxswap":2147483648,"disk":0,"ip":"10.0.0.1","status":"stopped","netout":0,"maxdisk":10737418240,"maxmem":1073741824,"uptime":0,"swap":0,"vmid":"102","nproc":0,"diskread":0,"cpu":0,"netin":0,"name":"test3.other.domain","failcnt":0,"diskwrite":0,"mem":0,"type":"openvz","cpus":2},{"maxswap":536870912,"disk":387194880,"ip":"192.168.1.1","status":"running","netout":272,"maxdisk":4294967296,"maxmem":536870912,"uptime":19449,"swap":0,"vmid":"100","nproc":"17","diskread":0,"cpu":0.000589570582552814,"netin":0,"name":"test.dummy.tld","failcnt":0,"diskwrite":0,"mem":28282880,"type":"openvz","cpus":1}]}' + ) - expect(@server1.openvz_get).to be_an_instance_of Hash - expect(@server1.openvz_get.keys.sort).to be_eql [ '100', '101' ] + expect(@server1.openvz_get).to be_an_instance_of Hash + expect(@server1.openvz_get.keys.sort).to be_eql %w(100 101) - server2 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "otherone", "root", "secret", "pam") - expect(server2.openvz_get).to be_an_instance_of Hash - expect(server2.openvz_get.keys.sort).to be_eql [ '100', '101', '102' ] + server2 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'otherone', 'root', 'secret', 'pam') + expect(server2.openvz_get).to be_an_instance_of Hash + expect(server2.openvz_get.keys.sort).to be_eql %w(100 101 102) + end end - it "should create a container" do - # Create VM - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with( - :body => "vmid=200&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz", - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:"}' - ) + describe 'openvz_post' do + it 'should create a container' do + # Create VM + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with( + body: 'vmid=200&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz', + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:"}' + ) - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with( - :body => "hostname=vm1.domain.com&password=secret&memory=512&swap=512&disk=4&vmid=203&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz", - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:"}' - ) + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with( + body: 'hostname=vm1.domain.com&password=secret&memory=512&swap=512&disk=4&vmid=203&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz', + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:"}' + ) - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with( - :body => "vmid=204&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz", - :headers => @common_headers_in).to_return( - :status => 500, - :headers => { :connection => "close", :server => "pve-api-daemon/3.0", :content_type => "application/json;charset=UTF-8", - }, - :body => 'NOK: error code = 500' - ) + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with( + body: 'vmid=204&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz', + headers: @common_headers_in).to_return( + status: 500, + headers: { connection: 'close', server: 'pve-api-daemon/3.0', content_type: 'application/json;charset=UTF-8' + }, + body: 'NOK: error code = 500' + ) - #Create the vm - expect(@server1.openvz_post("ubuntu-10.04-standard_10.04-4_i386", 200)).to be_eql "UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:" - expect(@server1.openvz_post("ubuntu-10.04-standard_10.04-4_i386", 203, { 'hostname' => 'vm1.domain.com', 'password' => 'secret', 'memory' => 512, 'swap' => 512, 'disk' => 4 })).to be_eql "UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:" - expect(@server1.openvz_post("ubuntu-10.04-standard_10.04-4_i386", 204)).to be_eql "NOK: error code = 500" + # Create the vm + expect(@server1.openvz_post('ubuntu-10.04-standard_10.04-4_i386', 200)).to be_eql 'UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:' + expect(@server1.openvz_post('ubuntu-10.04-standard_10.04-4_i386', 203, 'hostname' => 'vm1.domain.com', 'password' => 'secret', 'memory' => 512, 'swap' => 512, 'disk' => 4)).to be_eql 'UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:' + expect(@server1.openvz_post('ubuntu-10.04-standard_10.04-4_i386', 204)).to be_eql 'NOK: error code = 500' + end end - it "should delete openvz container" do - # Delete VM - stub_request(:delete, "http://localhost:8006/api2/json/nodes/localhost/openvz/200").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:"}' - ) + describe 'openvz_delete' do + it 'should delete openvz container' do + # Delete VM + stub_request(:delete, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:"}' + ) - stub_request(:delete, "http://localhost:8006/api2/json/nodes/localhost/openvz/201").with( - :headers => @common_headers_in).to_return( - :status => 500, - :headers => @common_headers_out, - :body => 'NOK: error code = 500' - ) + stub_request(:delete, 'http://localhost:8006/api2/json/nodes/localhost/openvz/201').with( + headers: @common_headers_in).to_return( + status: 500, + headers: @common_headers_out, + body: 'NOK: error code = 500' + ) - # Delete the vm - expect(@server1.openvz_delete(200)).to be_eql 'UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:' - expect(@server1.openvz_delete(201)).to be_eql 'NOK: error code = 500' + # Delete the vm + expect(@server1.openvz_delete(200)).to be_eql 'UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:' + expect(@server1.openvz_delete(201)).to be_eql 'NOK: error code = 500' + end end - it "should get container status" do - # VM Status - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/current").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":{"maxswap":268435456,"disk":0,"ip":"-","status":"stopped","ha":0,"netout":0,"maxdisk":9.44473296573929e+21,"maxmem":268435456,"uptime":0,"swap":0,"nproc":0,"diskread":0,"cpu":0,"netin":0,"name":"CT200","failcnt":0,"diskwrite":0,"mem":0,"type":"openvz","cpus":1}}' - ) + describe 'openvz_status' do + it 'should get container status' do + # VM Status + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/current').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":{"maxswap":268435456,"disk":0,"ip":"-","status":"stopped","ha":0,"netout":0,"maxdisk":9.44473296573929e+21,"maxmem":268435456,"uptime":0,"swap":0,"nproc":0,"diskread":0,"cpu":0,"netin":0,"name":"CT200","failcnt":0,"diskwrite":0,"mem":0,"type":"openvz","cpus":1}}' + ) - expect(@server1.openvz_status(200)).to be_an_instance_of Hash - expect(@server1.openvz_status(200)['status']).to be_eql "stopped" - expect(@server1.openvz_status(200)['cpus']).to be_eql 1 + expect(@server1.openvz_status(200)).to be_an_instance_of Hash + expect(@server1.openvz_status(200)['status']).to be_eql 'stopped' + expect(@server1.openvz_status(200)['cpus']).to be_eql 1 + end end - it "should start & stop vm" do - # VM Status - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/start").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:"}' - ) + describe 'openvz_start' do + it 'should start vm' do + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/start').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:"}' + ) - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/stop").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:"}' - ) + expect(@server1.openvz_start(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:' + end + end + + describe 'openvz_stop' do + it 'should stop vm' do + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/stop').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:"}' + ) - stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/shutdown").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:"}' - ) + expect(@server1.openvz_stop(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:' + end + end + + describe 'openvz_shutdown' do + it 'should shutdown vm' do + stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/shutdown').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:"}' + ) - expect(@server1.openvz_start(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:" - expect(@server1.openvz_stop(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:" - expect(@server1.openvz_shutdown(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:" + expect(@server1.openvz_shutdown(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:' + end end - it "should get container config" do - # VM config - stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/config").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":{"quotaugidlimit":0,"disk":0,"ostemplate":"ubuntu-10.04-standard_10.04-4_i386.tar.gz","nameserver":"127.0.0.1 192.168.1.1","memory":256,"searchdomain":"domain.com","onboot":0,"cpuunits":1000,"swap":256,"quotatime":0,"digest":"5a6f4052d559d3ecc89c849214f482217018a07e","cpus":1,"storage":"local"}}' - ) + describe 'openvz_config' do + it 'should get container config' do + # VM config + stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/config').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":{"quotaugidlimit":0,"disk":0,"ostemplate":"ubuntu-10.04-standard_10.04-4_i386.tar.gz","nameserver":"127.0.0.1 192.168.1.1","memory":256,"searchdomain":"domain.com","onboot":0,"cpuunits":1000,"swap":256,"quotatime":0,"digest":"5a6f4052d559d3ecc89c849214f482217018a07e","cpus":1,"storage":"local"}}' + ) - expect(@server1.openvz_config(200)).to be_an_instance_of Hash - expect(@server1.openvz_config(200)['searchdomain']).to be_eql "domain.com" - expect(@server1.openvz_config(200)['ostemplate']).to be_eql "ubuntu-10.04-standard_10.04-4_i386.tar.gz" + expect(@server1.openvz_config(200)).to be_an_instance_of Hash + expect(@server1.openvz_config(200)['searchdomain']).to be_eql 'domain.com' + expect(@server1.openvz_config(200)['ostemplate']).to be_eql 'ubuntu-10.04-standard_10.04-4_i386.tar.gz' + end end - it "should modify container config" do - # VM config - stub_request(:put, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/config").with( - :headers => @common_headers_in).to_return( - :status => 200, - :headers => @common_headers_out, - :body => '{"data":null}' - ) + describe 'openvz_config_set' do + it 'should modify container config' do + # VM config + stub_request(:put, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/config').with( + headers: @common_headers_in).to_return( + status: 200, + headers: @common_headers_out, + body: '{"data":null}' + ) - @server1.openvz_config_set(200, { 'searchdomain' => 'other.com' }) + @server1.openvz_config_set(200, 'searchdomain' => 'other.com') + end end end