proxmox 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 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: