proxmox 0.0.4 → 0.0.5

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: a0cb791599d7e86814bd315d98332457483388f1
4
- data.tar.gz: 26178642ae7b41d0a78f2616cb4e138ee31cd37a
3
+ metadata.gz: 41abce9de10f96aff6099d9f18f30e8352495a36
4
+ data.tar.gz: 6a5d9657b7197404ca13a7af6ef62a3362e0fc5a
5
5
  SHA512:
6
- metadata.gz: 1b4576b42bc811172fa73f71be042cba8820c0c21b5eceaf7a8e3c767c310083d0cb131441c7d95fe7c89e72f699554a4868d45ebdc3775c7fe9d5a58bc1254e
7
- data.tar.gz: fd4e9e4cad618122de8564cf2bd97b072c85a8355d1b0c1d978659b9e211b0e1f575152edb0688d35e5e5938d4867d5a258467b57e07e7d85ddc844b907c059e
6
+ metadata.gz: fea450ccbebce6fea5403da75b166beed9fb62f104d63876b73577441dae0fb8b2f9c3312db30d21fb0ff3e97cfedf52a1118ccc85d8e7eb0829d58407511efc
7
+ data.tar.gz: 71a920f1a3f8ccc488434b723e5d4ba60341c555cc073ba9bda3d82cb99ada571e6a1b94110c0a6d52c9783ef8450ec6c1eb1cacab2b696e3ff209e184c32c63
@@ -0,0 +1,41 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2015-11-14 20:39:56 -0600 using RuboCop version 0.35.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ Lint/Void:
11
+ Exclude:
12
+ - 'spec/lib/proxmox_spec.rb'
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: CountComments.
16
+ Metrics/ClassLength:
17
+ Max: 130
18
+
19
+ # Offense count: 45
20
+ # Configuration parameters: AllowURI, URISchemes.
21
+ Metrics/LineLength:
22
+ Max: 1094
23
+
24
+ # Offense count: 1
25
+ # Configuration parameters: CountComments.
26
+ Metrics/MethodLength:
27
+ Max: 11
28
+
29
+ # Offense count: 1
30
+ # Configuration parameters: CountKeywordArgs.
31
+ Metrics/ParameterLists:
32
+ Max: 6
33
+
34
+ # Offense count: 1
35
+ # Configuration parameters: Exclude.
36
+ Style/Documentation:
37
+ Exclude:
38
+ - 'spec/**/*'
39
+ - 'test/**/*'
40
+ - 'lib/proxmox/version.rb'
41
+
data/Gemfile CHANGED
@@ -4,24 +4,24 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :developpement do
7
- gem "guard"
8
- gem "guard-rspec"
9
- gem "guard-bundler"
7
+ gem 'guard'
8
+ gem 'guard-rspec'
9
+ gem 'guard-bundler'
10
10
 
11
- gem "growl" if RUBY_PLATFORM =~ /darwin/
12
- gem "wdm" if RUBY_PLATFORM =~ /mingw/
13
- gem "ruby_gntp" if RUBY_PLATFORM =~ /mingw/
11
+ gem 'growl' if RUBY_PLATFORM =~ /darwin/
12
+ gem 'wdm' if RUBY_PLATFORM =~ /mingw/
13
+ gem 'ruby_gntp' if RUBY_PLATFORM =~ /mingw/
14
14
 
15
- gem "guard-spork"
15
+ gem 'guard-spork'
16
16
 
17
- gem "yard"
18
- gem "redcarpet"
19
- gem "guard-yard"
17
+ gem 'yard'
18
+ gem 'redcarpet'
19
+ gem 'guard-yard'
20
20
  end
21
21
 
22
22
  group :test do
23
- gem "spork"
24
- gem "simplecov"
25
- gem "json", '~> 1.7.7'
26
- gem "coveralls"
23
+ gem 'spork'
24
+ gem 'simplecov'
25
+ gem 'json', '~> 1.8.3'
26
+ gem 'coveralls'
27
27
  end
data/Guardfile CHANGED
@@ -9,7 +9,7 @@ end
9
9
  guard :rspec, cmd: 'rspec' do
10
10
  watch(%r{^spec/.+_spec\.rb$})
11
11
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
12
- watch('spec/spec_helper.rb') { "spec" }
12
+ watch('spec/spec_helper.rb') { 'spec' }
13
13
  end
14
14
 
15
15
  group :docs do
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -34,6 +34,22 @@ module Proxmox
34
34
  @auth_params = create_ticket
35
35
  end
36
36
 
37
+ def get(path, args = {})
38
+ http_action_get(path, args)
39
+ end
40
+
41
+ def post(path, args = {})
42
+ http_action_post(path, args)
43
+ end
44
+
45
+ def put(path, args = {})
46
+ http_action_put(path, args)
47
+ end
48
+
49
+ def delete(path)
50
+ http_action_delete(path)
51
+ end
52
+
37
53
  # Get task status
38
54
  #
39
55
  # :call-seq:
@@ -51,7 +67,7 @@ module Proxmox
51
67
  # - stopped:OK
52
68
  #
53
69
  def task_status(upid)
54
- data = http_action_get "nodes/#{@node}/tasks/#{URI::encode upid}/status"
70
+ data = http_action_get "nodes/#{@node}/tasks/#{URI.encode upid}/status"
55
71
  status = data['status']
56
72
  exitstatus = data['exitstatus']
57
73
  if exitstatus
@@ -93,7 +109,7 @@ module Proxmox
93
109
  data = http_action_get "nodes/#{@node}/storage/local/content"
94
110
  template_list = {}
95
111
  data.each do |ve|
96
- name = ve['volid'].gsub(/^local:vztmpl\/(.*).tar.gz$/, '\1')
112
+ name = ve['volid'].gsub(%r{local:vztmpl\/(.*).tar.gz}, '\1')
97
113
  template_list[name] = ve
98
114
  end
99
115
  template_list
@@ -323,7 +339,7 @@ module Proxmox
323
339
  # Methods manages auth
324
340
  def create_ticket
325
341
  post_param = { username: @username, realm: @realm, password: @password }
326
- @site['access/ticket'].post post_param do |response, request, result, &block|
342
+ @site['access/ticket'].post post_param do |response, _request, _result, &_block|
327
343
  if response.code == 200
328
344
  extract_ticket response
329
345
  else
@@ -357,26 +373,26 @@ module Proxmox
357
373
  end
358
374
 
359
375
  # Methods manage http dialogs
360
- def http_action_post(url, data = '')
361
- @site[url].post data, @auth_params do |response, request, result, &block|
376
+ def http_action_post(url, data = {})
377
+ @site[url].post data, @auth_params do |response, _request, _result, &_block|
362
378
  check_response response
363
379
  end
364
380
  end
365
381
 
366
- def http_action_put(url, data = '')
367
- @site[url].put data, @auth_params do |response, request, result, &block|
382
+ def http_action_put(url, data = {})
383
+ @site[url].put data, @auth_params do |response, _request, _result, &_block|
368
384
  check_response response
369
385
  end
370
386
  end
371
387
 
372
- def http_action_get(url)
373
- @site[url].get @auth_params do |response, request, result, &block|
388
+ def http_action_get(url, data = {})
389
+ @site[url].get @auth_params.merge(data) do |response, _request, _result, &_block|
374
390
  check_response response
375
391
  end
376
392
  end
377
393
 
378
394
  def http_action_delete(url)
379
- @site[url].delete @auth_params do |response, request, result, &block|
395
+ @site[url].delete @auth_params do |response, _request, _result, &_block|
380
396
  check_response response
381
397
  end
382
398
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Proxmox
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
@@ -4,23 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'proxmox/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "proxmox"
7
+ spec.name = 'proxmox'
8
8
  spec.version = Proxmox::VERSION
9
- spec.authors = ["Nicolas Ledez"]
10
- spec.email = ["github@ledez.net"]
11
- spec.description = %q{A library to drive a Proxmox host}
12
- spec.summary = %q{You need to manage a proxmox host with Ruby? This library is for you.}
13
- spec.homepage = "https://github.com/nledez/proxmox"
14
- spec.license = "MIT"
9
+ spec.authors = ['Nicolas Ledez']
10
+ spec.email = ['github@ledez.net']
11
+ spec.description = 'A library to drive a Proxmox host'
12
+ spec.summary = 'You need to manage a proxmox host with Ruby? This library is for you.'
13
+ spec.homepage = 'https://github.com/nledez/proxmox'
14
+ spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.add_dependency "rest-client", ">=1.6.7"
20
- spec.require_paths = ["lib"]
19
+ spec.add_dependency 'rest-client', '>=1.6.7'
20
+ spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.3"
23
- spec.add_development_dependency "rake"
24
- spec.add_development_dependency "rspec"
25
- spec.add_development_dependency "webmock"
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'rake'
24
+ spec.add_development_dependency 'rspec'
25
+ spec.add_development_dependency 'webmock'
26
26
  end
@@ -5,235 +5,290 @@ require 'proxmox'
5
5
  describe Proxmox do
6
6
  before(:each) do
7
7
  @common_headers_in = { 'User-Agent' => 'Ruby',
8
- 'Cookie' => /.*/,
9
- 'Csrfpreventiontoken' => /.*/ }
10
- @common_headers_out = { :connection => "close",
11
- :server => "pve-api-daemon/3.0",
12
- :content_type => "application/json;charset=UTF-8" }
8
+ 'Cookie' => /.*/,
9
+ 'Csrfpreventiontoken' => /.*/ }
10
+ @common_headers_out = { connection: 'close',
11
+ server: 'pve-api-daemon/3.0',
12
+ content_type: 'application/json;charset=UTF-8' }
13
13
 
14
14
  # Common auth
15
- stub_request(:post, "http://localhost:8006/api2/json/access/ticket").with(
16
- :headers => {
15
+ stub_request(:post, 'http://localhost:8006/api2/json/access/ticket').with(
16
+ headers: {
17
17
  'Content-Type' => 'application/x-www-form-urlencoded',
18
18
  'User-Agent' => 'Ruby'
19
19
  },
20
- :body => {
21
- "username" => "root",
22
- "password" => "secret",
23
- "realm" => "pam"
20
+ body: {
21
+ 'username' => 'root',
22
+ 'password' => 'secret',
23
+ 'realm' => 'pam'
24
24
  }
25
25
  ).to_return(
26
- :status => 200,
27
- :headers => @common_headers_out,
28
- :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"}}'
26
+ status: 200,
27
+ headers: @common_headers_out,
28
+ 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"}}'
29
29
  )
30
30
 
31
- @server1 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "localhost", "root", "secret", "pam")
31
+ @server1 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'localhost', 'root', 'secret', 'pam')
32
32
  end
33
33
 
34
+ describe 'get' do
35
+ it 'calls http_action_get' do
36
+ expect(@server1).to receive(:http_action_get).with("version", {})
37
+ @server1.get("version")
38
+ end
39
+ end
40
+
41
+ describe 'post' do
42
+ it 'calls http_action_post' do
43
+ expect(@server1).to receive(:http_action_post).with("version", {})
44
+ @server1.post("version")
45
+ end
46
+ end
47
+
48
+ describe 'put' do
49
+ it 'calls http_action_put' do
50
+ expect(@server1).to receive(:http_action_put).with("version", {})
51
+ @server1.put("version")
52
+ end
53
+ end
54
+
55
+ describe 'delete' do
56
+ it 'calls http_action_delete' do
57
+ expect(@server1).to receive(:http_action_delete).with("version")
58
+ @server1.delete("version")
59
+ end
60
+ end
61
+
34
62
  it 'should connect to Proxmox server' do
35
63
  # Bad auth
36
- stub_request(:post, "http://localhost:8006/api2/json/access/ticket").with(
37
- :headers => {
64
+ stub_request(:post, 'http://localhost:8006/api2/json/access/ticket').with(
65
+ headers: {
38
66
  'Content-Type' => 'application/x-www-form-urlencoded',
39
67
  'User-Agent' => 'Ruby'
40
68
  },
41
- :body => {
42
- "username" => "root",
43
- "password" => "bad",
44
- "realm" => "pam"
69
+ body: {
70
+ 'username' => 'root',
71
+ 'password' => 'bad',
72
+ 'realm' => 'pam'
45
73
  }
46
74
  ).to_return(
47
- :status => 500,
48
- :headers => @common_headers_out,
49
- :body => '{"data":null}'
75
+ status: 500,
76
+ headers: @common_headers_out,
77
+ body: '{"data":null}'
50
78
  )
51
- expect(@server1.connection_status).to eq "connected"
79
+ expect(@server1.connection_status).to eq 'connected'
52
80
 
53
- server2 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "localhost", "root", "bad", "pam")
54
- expect(server2.connection_status).to eq "error"
81
+ server2 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'localhost', 'root', 'bad', 'pam')
82
+ expect(server2.connection_status).to eq 'error'
55
83
  end
56
84
 
57
- it "should get task status" do
58
- # Status done
59
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:/status").with(
60
- :headers => @common_headers_in).to_return(
61
- :status => 200,
62
- :headers => {
63
- :connection => "close", :server => "pve-api-daemon/3.0", :content_type => "application/json;charset=UTF-8", },
64
- :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}}'
65
- )
85
+ describe 'task_status' do
86
+ it 'should get task status' do
87
+ # Status done
88
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:/status').with(
89
+ headers: @common_headers_in).to_return(
90
+ status: 200,
91
+ headers: {
92
+ connection: 'close', server: 'pve-api-daemon/3.0', content_type: 'application/json;charset=UTF-8' },
93
+ 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}}'
94
+ )
66
95
 
67
- # Status running
68
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:/status").with(
69
- :headers => @common_headers_in).to_return(
70
- :status => 200,
71
- :headers => @common_headers_out,
72
- :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}}'
73
- )
96
+ # Status running
97
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/tasks/UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:/status').with(
98
+ headers: @common_headers_in).to_return(
99
+ status: 200,
100
+ headers: @common_headers_out,
101
+ 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}}'
102
+ )
74
103
 
75
- # Get status
76
- expect(@server1.task_status("UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:")).to be_eql "stopped:OK"
77
- expect(@server1.task_status("UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:")).to be_eql "running"
104
+ # Get status
105
+ expect(@server1.task_status('UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:')).to be_eql 'stopped:OK'
106
+ expect(@server1.task_status('UPID:localhost:00055DDA:11A99D07:521CE71F:vzcreate:200:root@pam:')).to be_eql 'running'
107
+ end
78
108
  end
79
109
 
80
- it "should get template list" do
81
- # First template list
82
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/storage/local/content").with(
83
- :headers => @common_headers_in).to_return(
84
- :status => 200,
85
- :headers => @common_headers_out,
86
- :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}]}'
87
- )
110
+ describe 'templates' do
111
+ it 'should get template list' do
112
+ # First template list
113
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/storage/local/content').with(
114
+ headers: @common_headers_in).to_return(
115
+ status: 200,
116
+ headers: @common_headers_out,
117
+ 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}]}'
118
+ )
88
119
 
89
- expect(@server1.templates).to be_an_instance_of Hash
90
- expect(@server1.templates.keys.sort).to be_eql [ 'ubuntu-10.04-standard_10.04-4_i386', 'ubuntu-12.04-standard_12.04-1_i386' ]
120
+ expect(@server1.templates).to be_an_instance_of Hash
121
+ expect(@server1.templates.keys.sort).to be_eql ['ubuntu-10.04-standard_10.04-4_i386', 'ubuntu-12.04-standard_12.04-1_i386']
122
+ end
91
123
  end
92
124
 
93
- it "should get openvz vm list" do
94
- # First VM list
95
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz").with(
96
- :headers => @common_headers_in).to_return(
97
- :status => 200,
98
- :headers => @common_headers_out,
99
- :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}]}'
100
- )
125
+ describe 'openvz_get' do
126
+ it 'should get openvz vm list' do
127
+ # First VM list
128
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with(
129
+ headers: @common_headers_in).to_return(
130
+ status: 200,
131
+ headers: @common_headers_out,
132
+ 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}]}'
133
+ )
101
134
 
102
- # Second VM list
103
- stub_request(:get, "http://localhost:8006/api2/json/nodes/otherone/openvz").with(
104
- :headers => @common_headers_in).to_return(
105
- :status => 200,
106
- :headers => @common_headers_out,
107
- :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}]}'
108
- )
135
+ # Second VM list
136
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/otherone/openvz').with(
137
+ headers: @common_headers_in).to_return(
138
+ status: 200,
139
+ headers: @common_headers_out,
140
+ 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}]}'
141
+ )
109
142
 
110
- expect(@server1.openvz_get).to be_an_instance_of Hash
111
- expect(@server1.openvz_get.keys.sort).to be_eql [ '100', '101' ]
143
+ expect(@server1.openvz_get).to be_an_instance_of Hash
144
+ expect(@server1.openvz_get.keys.sort).to be_eql %w(100 101)
112
145
 
113
- server2 = Proxmox::Proxmox.new("http://localhost:8006/api2/json/", "otherone", "root", "secret", "pam")
114
- expect(server2.openvz_get).to be_an_instance_of Hash
115
- expect(server2.openvz_get.keys.sort).to be_eql [ '100', '101', '102' ]
146
+ server2 = Proxmox::Proxmox.new('http://localhost:8006/api2/json/', 'otherone', 'root', 'secret', 'pam')
147
+ expect(server2.openvz_get).to be_an_instance_of Hash
148
+ expect(server2.openvz_get.keys.sort).to be_eql %w(100 101 102)
149
+ end
116
150
  end
117
151
 
118
- it "should create a container" do
119
- # Create VM
120
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with(
121
- :body => "vmid=200&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz",
122
- :headers => @common_headers_in).to_return(
123
- :status => 200,
124
- :headers => @common_headers_out,
125
- :body => '{"data":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:"}'
126
- )
152
+ describe 'openvz_post' do
153
+ it 'should create a container' do
154
+ # Create VM
155
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with(
156
+ body: 'vmid=200&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz',
157
+ headers: @common_headers_in).to_return(
158
+ status: 200,
159
+ headers: @common_headers_out,
160
+ body: '{"data":"UPID:localhost:00051DA0:119EAABB:521CCB19:vzcreate:200:root@pam:"}'
161
+ )
127
162
 
128
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with(
129
- :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",
130
- :headers => @common_headers_in).to_return(
131
- :status => 200,
132
- :headers => @common_headers_out,
133
- :body => '{"data":"UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:"}'
134
- )
163
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with(
164
+ 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',
165
+ headers: @common_headers_in).to_return(
166
+ status: 200,
167
+ headers: @common_headers_out,
168
+ body: '{"data":"UPID:localhost:00051DA0:119EAABC:521CCB19:vzcreate:203:root@pam:"}'
169
+ )
135
170
 
136
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz").with(
137
- :body => "vmid=204&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz",
138
- :headers => @common_headers_in).to_return(
139
- :status => 500,
140
- :headers => { :connection => "close", :server => "pve-api-daemon/3.0", :content_type => "application/json;charset=UTF-8",
141
- },
142
- :body => 'NOK: error code = 500'
143
- )
171
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz').with(
172
+ body: 'vmid=204&ostemplate=local%3Avztmpl%2Fubuntu-10.04-standard_10.04-4_i386.tar.gz',
173
+ headers: @common_headers_in).to_return(
174
+ status: 500,
175
+ headers: { connection: 'close', server: 'pve-api-daemon/3.0', content_type: 'application/json;charset=UTF-8'
176
+ },
177
+ body: 'NOK: error code = 500'
178
+ )
144
179
 
145
- #Create the vm
146
- 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:"
147
- 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:"
148
- expect(@server1.openvz_post("ubuntu-10.04-standard_10.04-4_i386", 204)).to be_eql "NOK: error code = 500"
180
+ # Create the vm
181
+ 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:'
182
+ 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:'
183
+ expect(@server1.openvz_post('ubuntu-10.04-standard_10.04-4_i386', 204)).to be_eql 'NOK: error code = 500'
184
+ end
149
185
  end
150
186
 
151
- it "should delete openvz container" do
152
- # Delete VM
153
- stub_request(:delete, "http://localhost:8006/api2/json/nodes/localhost/openvz/200").with(
154
- :headers => @common_headers_in).to_return(
155
- :status => 200,
156
- :headers => @common_headers_out,
157
- :body => '{"data":"UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:"}'
158
- )
187
+ describe 'openvz_delete' do
188
+ it 'should delete openvz container' do
189
+ # Delete VM
190
+ stub_request(:delete, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200').with(
191
+ headers: @common_headers_in).to_return(
192
+ status: 200,
193
+ headers: @common_headers_out,
194
+ body: '{"data":"UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:"}'
195
+ )
159
196
 
160
- stub_request(:delete, "http://localhost:8006/api2/json/nodes/localhost/openvz/201").with(
161
- :headers => @common_headers_in).to_return(
162
- :status => 500,
163
- :headers => @common_headers_out,
164
- :body => 'NOK: error code = 500'
165
- )
197
+ stub_request(:delete, 'http://localhost:8006/api2/json/nodes/localhost/openvz/201').with(
198
+ headers: @common_headers_in).to_return(
199
+ status: 500,
200
+ headers: @common_headers_out,
201
+ body: 'NOK: error code = 500'
202
+ )
166
203
 
167
- # Delete the vm
168
- expect(@server1.openvz_delete(200)).to be_eql 'UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:'
169
- expect(@server1.openvz_delete(201)).to be_eql 'NOK: error code = 500'
204
+ # Delete the vm
205
+ expect(@server1.openvz_delete(200)).to be_eql 'UPID:localhost:0005C1EB:11BAA4EB:521D12B8:vzdestroy:200:root@pam:'
206
+ expect(@server1.openvz_delete(201)).to be_eql 'NOK: error code = 500'
207
+ end
170
208
  end
171
209
 
172
- it "should get container status" do
173
- # VM Status
174
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/current").with(
175
- :headers => @common_headers_in).to_return(
176
- :status => 200,
177
- :headers => @common_headers_out,
178
- :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}}'
179
- )
210
+ describe 'openvz_status' do
211
+ it 'should get container status' do
212
+ # VM Status
213
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/current').with(
214
+ headers: @common_headers_in).to_return(
215
+ status: 200,
216
+ headers: @common_headers_out,
217
+ 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}}'
218
+ )
180
219
 
181
- expect(@server1.openvz_status(200)).to be_an_instance_of Hash
182
- expect(@server1.openvz_status(200)['status']).to be_eql "stopped"
183
- expect(@server1.openvz_status(200)['cpus']).to be_eql 1
220
+ expect(@server1.openvz_status(200)).to be_an_instance_of Hash
221
+ expect(@server1.openvz_status(200)['status']).to be_eql 'stopped'
222
+ expect(@server1.openvz_status(200)['cpus']).to be_eql 1
223
+ end
184
224
  end
185
225
 
186
- it "should start & stop vm" do
187
- # VM Status
188
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/start").with(
189
- :headers => @common_headers_in).to_return(
190
- :status => 200,
191
- :headers => @common_headers_out,
192
- :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:"}'
193
- )
226
+ describe 'openvz_start' do
227
+ it 'should start vm' do
228
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/start').with(
229
+ headers: @common_headers_in).to_return(
230
+ status: 200,
231
+ headers: @common_headers_out,
232
+ body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:"}'
233
+ )
194
234
 
195
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/stop").with(
196
- :headers => @common_headers_in).to_return(
197
- :status => 200,
198
- :headers => @common_headers_out,
199
- :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:"}'
200
- )
235
+ expect(@server1.openvz_start(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:'
236
+ end
237
+ end
238
+
239
+ describe 'openvz_stop' do
240
+ it 'should stop vm' do
241
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/stop').with(
242
+ headers: @common_headers_in).to_return(
243
+ status: 200,
244
+ headers: @common_headers_out,
245
+ body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:"}'
246
+ )
201
247
 
202
- stub_request(:post, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/shutdown").with(
203
- :headers => @common_headers_in).to_return(
204
- :status => 200,
205
- :headers => @common_headers_out,
206
- :body => '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:"}'
207
- )
248
+ expect(@server1.openvz_stop(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:'
249
+ end
250
+ end
251
+
252
+ describe 'openvz_shutdown' do
253
+ it 'should shutdown vm' do
254
+ stub_request(:post, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/status/shutdown').with(
255
+ headers: @common_headers_in).to_return(
256
+ status: 200,
257
+ headers: @common_headers_out,
258
+ body: '{"data":"UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:"}'
259
+ )
208
260
 
209
- expect(@server1.openvz_start(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstart:200:root@pam:"
210
- expect(@server1.openvz_stop(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzstop:200:root@pam:"
211
- expect(@server1.openvz_shutdown(200)).to be_eql "UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:"
261
+ expect(@server1.openvz_shutdown(200)).to be_eql 'UPID:ks311324:0005D91C:11BE5277:521D1C23:vzshutdown:200:root@pam:'
262
+ end
212
263
  end
213
264
 
214
- it "should get container config" do
215
- # VM config
216
- stub_request(:get, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/config").with(
217
- :headers => @common_headers_in).to_return(
218
- :status => 200,
219
- :headers => @common_headers_out,
220
- :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"}}'
221
- )
265
+ describe 'openvz_config' do
266
+ it 'should get container config' do
267
+ # VM config
268
+ stub_request(:get, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/config').with(
269
+ headers: @common_headers_in).to_return(
270
+ status: 200,
271
+ headers: @common_headers_out,
272
+ 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"}}'
273
+ )
222
274
 
223
- expect(@server1.openvz_config(200)).to be_an_instance_of Hash
224
- expect(@server1.openvz_config(200)['searchdomain']).to be_eql "domain.com"
225
- expect(@server1.openvz_config(200)['ostemplate']).to be_eql "ubuntu-10.04-standard_10.04-4_i386.tar.gz"
275
+ expect(@server1.openvz_config(200)).to be_an_instance_of Hash
276
+ expect(@server1.openvz_config(200)['searchdomain']).to be_eql 'domain.com'
277
+ expect(@server1.openvz_config(200)['ostemplate']).to be_eql 'ubuntu-10.04-standard_10.04-4_i386.tar.gz'
278
+ end
226
279
  end
227
280
 
228
- it "should modify container config" do
229
- # VM config
230
- stub_request(:put, "http://localhost:8006/api2/json/nodes/localhost/openvz/200/config").with(
231
- :headers => @common_headers_in).to_return(
232
- :status => 200,
233
- :headers => @common_headers_out,
234
- :body => '{"data":null}'
235
- )
281
+ describe 'openvz_config_set' do
282
+ it 'should modify container config' do
283
+ # VM config
284
+ stub_request(:put, 'http://localhost:8006/api2/json/nodes/localhost/openvz/200/config').with(
285
+ headers: @common_headers_in).to_return(
286
+ status: 200,
287
+ headers: @common_headers_out,
288
+ body: '{"data":null}'
289
+ )
236
290
 
237
- @server1.openvz_config_set(200, { 'searchdomain' => 'other.com' })
291
+ @server1.openvz_config_set(200, 'searchdomain' => 'other.com')
292
+ end
238
293
  end
239
294
  end
@@ -15,7 +15,7 @@ Spork.each_run do
15
15
  end
16
16
  end
17
17
 
18
- if ENV["CI"]
18
+ if ENV['CI']
19
19
  require 'coveralls'
20
20
  Coveralls.wear!
21
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proxmox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Ledez
@@ -89,6 +89,7 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
+ - ".rubocop.yml"
92
93
  - ".travis.yml"
93
94
  - Gemfile
94
95
  - Guardfile
@@ -127,3 +128,4 @@ summary: You need to manage a proxmox host with Ruby? This library is for you.
127
128
  test_files:
128
129
  - spec/lib/proxmox_spec.rb
129
130
  - spec/spec_helper.rb
131
+ has_rdoc: