rbovirt 0.0.29 → 0.0.30

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: 0bc880c41ea4532df8b68011f5d9f68b8118b403
4
- data.tar.gz: 58445a4c11abd89d373b40448b327167a6f95915
3
+ metadata.gz: 9848bea2f871ad9d719fe767623cb5a90693e1a6
4
+ data.tar.gz: bb231cd4f28257c2bae9d76cc721be3d39e5c705
5
5
  SHA512:
6
- metadata.gz: 84fb76a2e15e4c715390fb51c8485099d2fda933e219cc687b4dc23948335a998cd9140b57c3faa8cd4d82629851457b83fdd6df5bbc2dab3ed4635c20ea263d
7
- data.tar.gz: bbd004504dba3fd58ef03a51b310970ee1b3d069daa753e4085c46e02c96deb0863893caaf5e36a24cb35b4acf0ac6a937c8e7f4c55d12b4d7358a3ca54784f9
6
+ metadata.gz: 0c08516ba05303b32daeee352a0ca5230447b820bbf4e781248af4bfbc01b8dfd3cf6d9c0385fee0cfa7ad2e0a3359a377be5793ca87ab82c1d505cd457ca15a
7
+ data.tar.gz: 00b59b5b92ebdb2f889b0dc7b6e0b0745ba0dc143cfabd7ea986e4f59c747981975a316048ab88664d14d9210e4ed2578f9f83f35a91bf1aa879381917e3e0c7
data/CHANGES.rdoc ADDED
@@ -0,0 +1,18 @@
1
+ == Changes
2
+
3
+ This document describes the relevant changes beween releases of the
4
+ _rbovirt_ project.
5
+
6
+ Note that this list of changes was added with the 0.0.30 release,
7
+ previous releases aren't described here.
8
+
9
+ == 0.0.30 / 2014-11-25
10
+
11
+ New features:
12
+
13
+ * Added support for updating disks.
14
+ * Added support for the data center +local+ attribute.
15
+
16
+ Bug fixes:
17
+
18
+ * Parse correctly the +status+ element.
data/README.rdoc CHANGED
@@ -16,14 +16,18 @@ A Ruby client for oVirt.
16
16
 
17
17
  * Copy the file spec/endpoint.yml.example to spec/endpoint.yml
18
18
  * Edit the endpoint properties (user, password and host name)
19
- * `wget --no-check-certificate -O spec/ca_cert.pem https://host/ca.crt`
20
19
  * From command line run => rake spec
21
20
 
22
- RHEV/oVirt can be installed with all-in-one setup, but host certificate must be self-signed otherwise one test will fail.
21
+ RHEV/oVirt can be installed with all-in-one setup, but host certificate must be
22
+ self-signed otherwise one test will fail.
23
+
24
+ Also note that oVirt must be configured with correct certificate (hostname must
25
+ match, must be valid and oVirt must return correct CA under /ca.crt URL).
23
26
 
24
27
  == Logging
25
28
 
26
- If you want to see API requests and responses, use the following environment variables:
29
+ If you want to see API requests and responses, use the following environment
30
+ variables:
27
31
 
28
32
  RESTCLIENT_LOG=stdout RBOVIRT_LOG_RESPONSE=1 rake spec
29
33
 
data/lib/client/vm_api.rb CHANGED
@@ -73,14 +73,25 @@ module OVIRT
73
73
 
74
74
  def add_volume(vm_id, opts={})
75
75
  search = opts[:search] || ("datacenter=%s" % current_datacenter.name)
76
- storage_domain_id = opts[:storage_domain] || storagedomains(:role => 'data', :search => search).first.id
77
- http_post("/vms/%s/disks" % vm_id, OVIRT::Volume.to_xml(storage_domain_id, opts))
76
+ opts[:storage_domain_id] = opts[:storage_domain] || storagedomains(:role => 'data', :search => search).first.id
77
+ # If no size is given, default to a volume size of 8GB
78
+ opts[:size] = 8 * 1024 * 1024 * 1024 unless opts[:size]
79
+ opts[:type] = 'data' unless opts[:type]
80
+ opts[:bootable] = 'true' unless opts[:bootable]
81
+ opts[:interface] = 'virtio' unless opts[:interface]
82
+ opts[:format] = 'cow' unless opts[:format]
83
+ opts[:sparse] = 'true' unless opts[:sparse]
84
+ http_post("/vms/%s/disks" % vm_id, OVIRT::Volume.to_xml(opts))
78
85
  end
79
86
 
80
87
  def destroy_volume(vm_id, vol_id)
81
88
  http_delete("/vms/%s/disks/%s" % [vm_id, vol_id])
82
89
  end
83
90
 
91
+ def update_volume(vm_id, vol_id, opts={})
92
+ http_put("/vms/%s/disks/%s" % [vm_id, vol_id], OVIRT::Volume.to_xml(opts))
93
+ end
94
+
84
95
  def vm_action(id, action, opts={})
85
96
  xml_response = http_post("/vms/%s/%s" % [id, action],'<action/>', opts)
86
97
  return (xml_response/'action/status').first.text.strip.upcase=="COMPLETE"
@@ -12,5 +12,11 @@ module OVIRT
12
12
  def parse_version xml
13
13
  (xml/'version').first[:major] +"."+ (xml/'version').first[:minor]
14
14
  end
15
+
16
+ def parse_bool text
17
+ return true if text =~ /^true$/i
18
+ return false if text =~ /^false$/i
19
+ raise ArgumentError.new %Q[The string "#{text}" isn't a valid boolean, it should be "true" or "false"]
20
+ end
15
21
  end
16
- end
22
+ end
@@ -1,7 +1,7 @@
1
1
 
2
2
  module OVIRT
3
3
  class DataCenter < BaseObject
4
- attr_reader :description, :status, :storage_type, :storage_format, :supported_versions, :version
4
+ attr_reader :description, :status, :local, :storage_type, :storage_format, :supported_versions, :version
5
5
 
6
6
  def initialize(client, xml)
7
7
  super(client, xml[:id], xml[:href], (xml/'name').first.text)
@@ -14,6 +14,7 @@ module OVIRT
14
14
  def parse_xml_attributes!(xml)
15
15
  @description = (xml/'description').first.text rescue nil
16
16
  @status = (xml/'status').first.text.strip
17
+ @local = parse_bool((xml/'local').first.text) rescue nil
17
18
  @storage_type = (xml/'storage_type').first.text rescue nil
18
19
  @storage_format = (xml/'storage_format').first.text rescue nil
19
20
  @supported_versions = (xml/'supported_versions').collect { |v|
data/lib/ovirt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OVIRT
2
- VERSION = "0.0.29"
3
- end
2
+ VERSION = "0.0.30"
3
+ end
data/lib/ovirt/volume.rb CHANGED
@@ -9,18 +9,32 @@ module OVIRT
9
9
  self
10
10
  end
11
11
 
12
- def self.to_xml(storage_domain_id,opts={})
12
+ def self.to_xml(opts={})
13
13
  builder = Nokogiri::XML::Builder.new do
14
14
  disk_{
15
- storage_domains_{
16
- storage_domain_(:id => storage_domain_id)
17
- }
18
- size_(opts[:size] || 8589934592)
19
- type_(opts[:type] || 'data')
20
- bootable_(opts[:bootable] || 'true')
21
- interface_(opts[:interface] || 'virtio')
22
- format_(opts[:format] || 'cow')
23
- sparse_(opts[:sparse] || 'true')
15
+ if opts[:storage_domain_id]
16
+ storage_domains_{
17
+ storage_domain_(:id => opts[:storage_domain_id])
18
+ }
19
+ end
20
+ if opts[:size]
21
+ size_(opts[:size])
22
+ end
23
+ if opts[:type]
24
+ type_(opts[:type])
25
+ end
26
+ if opts[:bootable]
27
+ bootable_(opts[:bootable])
28
+ end
29
+ if opts[:interface]
30
+ interface_(opts[:interface])
31
+ end
32
+ if opts[:format]
33
+ format_(opts[:format])
34
+ end
35
+ if opts[:sparse]
36
+ sparse_(opts[:sparse])
37
+ end
24
38
  if opts[:quota]
25
39
  quota_( :id => opts[:quota])
26
40
  end
@@ -37,8 +51,7 @@ module OVIRT
37
51
  @interface = (xml/'interface').first.text
38
52
  @format = ((xml/'format').first.text rescue nil)
39
53
  @sparse = ((xml/'sparse').first.text rescue nil)
40
- @status = ((xml/'status').first.text rescue nil)
41
- @status ||= ((xml/'status/state').first.text rescue nil)
54
+ @status = ((xml/'status/state').first.text rescue nil)
42
55
  @vm = Link::new(@client, (xml/'vm').first[:id], (xml/'vm').first[:href]) rescue nil
43
56
  @quota = ((xml/'quota').first[:id] rescue nil)
44
57
  end
data/rbovirt.gemspec CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |gem|
26
26
  gem.add_development_dependency('rake')
27
27
 
28
28
  gem.rdoc_options << '--title' << gem.name << '--main' << 'README.rdoc' << '--line-numbers' << '--inline-source'
29
- gem.extra_rdoc_files = ['README.rdoc']
30
- end
29
+ gem.extra_rdoc_files = ['README.rdoc', 'CHANGES.rdoc']
30
+ end
@@ -66,6 +66,13 @@ shared_examples_for "Basic VM Life cycle" do
66
66
  vm.class.to_s.should eql("OVIRT::VM")
67
67
  @client.destroy_vm(vm.id)
68
68
  end
69
+
70
+ it "test_should_update_volume" do
71
+ @client.update_volume(@vm.id, @vm.volumes.first.id, :size => 10737418240)
72
+ while @client.vm(@vm.id).volumes.first.status != 'ok' do
73
+ end
74
+ @client.vm(@vm.id).volumes.first.size.should eql("10737418240")
75
+ end
69
76
  end
70
77
 
71
78
  shared_examples_for "VM Life cycle without template" do
data/spec/spec_helper.rb CHANGED
@@ -19,9 +19,9 @@ module OVIRT::RSpec
19
19
 
20
20
  def setup_client(options = {})
21
21
  user, password, url, datacenter = endpoint
22
- opts = {
23
- :ca_cert_file => "#{File.dirname(__FILE__)}/ca_cert.pem"
24
- }
22
+ cert = ca_cert(url)
23
+ store = OpenSSL::X509::Store.new().add_cert(OpenSSL::X509::Certificate.new(cert))
24
+ opts = { :ca_cert_store => store }
25
25
  @client = ::OVIRT::Client.new(user, password, url, opts)
26
26
  datacenter_id = @client.datacenters.find{|x| x.name == datacenter}.id rescue raise("Cannot find datacenter #{datacenter}")
27
27
  opts.merge!(:datacenter_id => datacenter_id)
data/spec/unit/vm_spec.rb CHANGED
@@ -171,7 +171,7 @@ END_HEREDOC
171
171
 
172
172
  before(:each) do
173
173
  @mock_client = double("mock_client")
174
- allow(@mock_client).to receive(:vm_interfaces) do
174
+ @mock_client.stub(:vm_interfaces) do
175
175
  xml = <<END_HEREDOC
176
176
  <nic href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/nics/12345678-1234-1234-1234-123456789012" id="12345678-1234-1234-1234-123456789012">
177
177
  <actions>
@@ -190,7 +190,7 @@ END_HEREDOC
190
190
  END_HEREDOC
191
191
  [OVIRT::Interface::new(nil, Nokogiri::XML(xml).xpath('/').first)]
192
192
  end
193
- allow(@mock_client).to receive(:vm_volumes) do
193
+ @mock_client.stub(:vm_volumes) do
194
194
  xml = <<END_HEREDOC
195
195
  <disk href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/nics/12345678-1234-1234-1234-123456789012" id="12345678-1234-1234-1234-123456789012">
196
196
  <actions>
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbovirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.0.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amos Benari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-01 00:00:00.000000000 Z
11
+ date: 2014-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: shoulda
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.6'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: |2
@@ -88,9 +88,11 @@ executables: []
88
88
  extensions: []
89
89
  extra_rdoc_files:
90
90
  - README.rdoc
91
+ - CHANGES.rdoc
91
92
  files:
92
- - ".document"
93
- - ".gitignore"
93
+ - .document
94
+ - .gitignore
95
+ - CHANGES.rdoc
94
96
  - Gemfile
95
97
  - LICENSE.txt
96
98
  - README.rdoc
@@ -128,27 +130,27 @@ licenses: []
128
130
  metadata: {}
129
131
  post_install_message:
130
132
  rdoc_options:
131
- - "--title"
133
+ - --title
132
134
  - rbovirt
133
- - "--main"
135
+ - --main
134
136
  - README.rdoc
135
- - "--line-numbers"
136
- - "--inline-source"
137
+ - --line-numbers
138
+ - --inline-source
137
139
  require_paths:
138
140
  - lib
139
141
  required_ruby_version: !ruby/object:Gem::Requirement
140
142
  requirements:
141
- - - ">="
143
+ - - '>='
142
144
  - !ruby/object:Gem::Version
143
145
  version: '0'
144
146
  required_rubygems_version: !ruby/object:Gem::Requirement
145
147
  requirements:
146
- - - ">="
148
+ - - '>='
147
149
  - !ruby/object:Gem::Version
148
150
  version: '0'
149
151
  requirements: []
150
152
  rubyforge_project:
151
- rubygems_version: 2.2.2
153
+ rubygems_version: 2.1.11
152
154
  signing_key:
153
155
  specification_version: 4
154
156
  summary: A Ruby client for oVirt REST API