rbovirt 0.1.2 → 0.1.3
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 +4 -4
- data/lib/ovirt/network.rb +4 -1
- data/lib/ovirt/version.rb +1 -1
- data/lib/ovirt/vm.rb +12 -8
- data/spec/integration/vm_crud_spec.rb +24 -0
- data/spec/unit/vm_spec.rb +85 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af1cb013363d659b947761e3e38126834c084042
|
4
|
+
data.tar.gz: c4ac3c8988f2951bd0eb99e38a5a4db7e219be60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46c76b24ab5c95762920ddea7c1a44fee65df4fe951b1a4e1fbc9307d3993178e8f7cf87d63c8e87e9ccf8a7da318905a7b8d10ad80c72e0ca754b8d457fb6fd
|
7
|
+
data.tar.gz: 751efa86aebe75dda8afd43dca666ad23ba1d1958734ff7d9f7715a1c22685ea06387e4f262195d63f02b65ada7b246625099b80c2499656791ec76a4ce04b06
|
data/lib/ovirt/network.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module OVIRT
|
2
2
|
class Network < BaseObject
|
3
|
-
attr_reader :description, :datacenter, :cluster, :stp, :status
|
3
|
+
attr_reader :description, :datacenter, :cluster, :vlan_id, :mtu, :stp, :usages, :status
|
4
4
|
|
5
5
|
def initialize(client, xml)
|
6
6
|
super(client, xml[:id], xml[:href], (xml/'name').first.text)
|
@@ -13,6 +13,9 @@ module OVIRT
|
|
13
13
|
def parse_xml_attributes!(xml)
|
14
14
|
@description = ((xml/'description').first.text rescue nil)
|
15
15
|
@stp = ((xml/'stp').first.text rescue false)
|
16
|
+
@mtu = ((xml/'mtu').first.text rescue nil)
|
17
|
+
@vlan_id = ((xml/'vlan').first[:id] rescue nil)
|
18
|
+
@usages = ((xml/'usages/usage').collect{ |usage| usage.text } rescue [])
|
16
19
|
@datacenter = Link::new(@client, (xml/'data_center').first[:id], (xml/'data_center').first[:href]) unless (xml/'data_center').empty?
|
17
20
|
@cluster = Link::new(@client, (xml/'cluster').first[:id], (xml/'cluster').first[:href]) unless (xml/'cluster').empty?
|
18
21
|
@status = ((xml/'status/state').first.text rescue nil)
|
data/lib/ovirt/version.rb
CHANGED
data/lib/ovirt/vm.rb
CHANGED
@@ -4,7 +4,7 @@ module OVIRT
|
|
4
4
|
FILEINJECT_PATH = "user-data.txt"
|
5
5
|
|
6
6
|
class VM < BaseObject
|
7
|
-
attr_reader :description, :status, :memory, :profile, :display, :host, :cluster, :template
|
7
|
+
attr_reader :description, :status, :memory, :profile, :display, :host, :cluster, :template, :instance_type
|
8
8
|
attr_reader :storage, :cores, :creation_time, :os, :ha, :ha_priority, :ips, :vnc, :quota, :clone
|
9
9
|
attr_accessor :comment, :interfaces, :volumes
|
10
10
|
|
@@ -61,6 +61,9 @@ module OVIRT
|
|
61
61
|
else
|
62
62
|
template_{name_('Blank')}
|
63
63
|
end
|
64
|
+
if opts[:instance_type] && !opts[:instance_type].empty?
|
65
|
+
instance_type( :id => opts[:instance_type])
|
66
|
+
end
|
64
67
|
if opts[:quota]
|
65
68
|
quota_( :id => opts[:quota])
|
66
69
|
end
|
@@ -260,15 +263,15 @@ module OVIRT
|
|
260
263
|
}
|
261
264
|
end
|
262
265
|
dns {
|
263
|
-
|
264
|
-
servers {
|
265
|
-
|
266
|
-
|
267
|
-
end
|
268
|
-
}
|
266
|
+
if dns.is_a?(String)
|
267
|
+
servers { host { address dns }}
|
268
|
+
elsif dns.is_a?(Array) && dns.all? {|n| n.is_a?(String) }
|
269
|
+
servers { host { address dns.join(' ') }}
|
269
270
|
end
|
270
|
-
|
271
|
+
if domain.is_a?(String)
|
271
272
|
search_domains { host { address domain }}
|
273
|
+
elsif domain.is_a?(Array) && domain.all? {|n| n.is_a?(String) }
|
274
|
+
search_domains { host { address domain.join(' ')}}
|
272
275
|
end
|
273
276
|
}
|
274
277
|
}
|
@@ -308,6 +311,7 @@ module OVIRT
|
|
308
311
|
@memory = (xml/'memory').first.text
|
309
312
|
@profile = (xml/'type').first.text
|
310
313
|
@template = Link::new(@client, (xml/'template').first[:id], (xml/'template').first[:href])
|
314
|
+
@instance_type = Link::new(@client, (xml/'instance_type').first[:id], (xml/'instance_type').first[:href]) rescue nil
|
311
315
|
@host = Link::new(@client, (xml/'host').first[:id], (xml/'host').first[:href]) rescue nil
|
312
316
|
@cluster = Link::new(@client, (xml/'cluster').first[:id], (xml/'cluster').first[:href])
|
313
317
|
@display = {
|
@@ -119,6 +119,30 @@ shared_examples_for "VM Life cycle without template" do
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
describe "Basic VM creation with instance type" do
|
123
|
+
before(:all) do
|
124
|
+
setup_client
|
125
|
+
@name = 'vm-'+Time.now.to_i.to_s
|
126
|
+
@cluster = @client.clusters.select{|c| c.name == cluster_name}.first.id
|
127
|
+
if @config['instance_type']
|
128
|
+
@instance_type = @client.instance_type(@config['instance_type'])
|
129
|
+
else
|
130
|
+
@instance_type = @client.instance_types.first
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
it "test_should_create_vm_with_instance_type" do
|
135
|
+
if @instance_type
|
136
|
+
@vm = @client.create_vm(:name => @name, :instance_type => @instance_type.id, :cluster => @cluster)
|
137
|
+
@vm.should_not be_nil
|
138
|
+
while !@client.vm(@vm.id).ready? do
|
139
|
+
end
|
140
|
+
@client.destroy_vm(@vm.id) if @vm
|
141
|
+
else
|
142
|
+
skip "No instance type found, skip VM creation based on instance type"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
122
146
|
|
123
147
|
describe "Admin API VM Life cycle" do
|
124
148
|
|
data/spec/unit/vm_spec.rb
CHANGED
@@ -107,6 +107,68 @@ describe OVIRT::VM do
|
|
107
107
|
</vm>
|
108
108
|
END_HEREDOC
|
109
109
|
|
110
|
+
@min_instance_type_xml = <<END_HEREDOC
|
111
|
+
<vm id="76d29095-bc27-4cd0-8178-07e942aea549" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549">
|
112
|
+
<name>c-1326980484</name>
|
113
|
+
<actions>
|
114
|
+
<link rel="shutdown" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/shutdown"/>
|
115
|
+
<link rel="start" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/start"/>
|
116
|
+
<link rel="stop" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/stop"/>
|
117
|
+
<link rel="suspend" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/suspend"/>
|
118
|
+
<link rel="detach" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/detach"/>
|
119
|
+
<link rel="export" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/export"/>
|
120
|
+
<link rel="move" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/move"/>
|
121
|
+
<link rel="ticket" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/ticket"/>
|
122
|
+
<link rel="migrate" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/migrate"/>
|
123
|
+
<link rel="cancelmigration" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/cancelmigration"/>
|
124
|
+
</actions>
|
125
|
+
<link rel="disks" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/disks"/>
|
126
|
+
<link rel="nics" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/nics"/>
|
127
|
+
<link rel="cdroms" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/cdroms"/>
|
128
|
+
<link rel="snapshots" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/snapshots"/>
|
129
|
+
<link rel="tags" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/tags"/>
|
130
|
+
<link rel="permissions" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/permissions"/>
|
131
|
+
<link rel="statistics" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549/statistics"/>
|
132
|
+
<type>server</type>
|
133
|
+
<status>
|
134
|
+
<state>up</state>
|
135
|
+
</status>
|
136
|
+
<memory>536870912</memory>
|
137
|
+
<cpu>
|
138
|
+
<topology cores="1" sockets="1"/>
|
139
|
+
</cpu>
|
140
|
+
<os type="unassigned">
|
141
|
+
<boot dev="network"/>
|
142
|
+
<boot dev="hd"/>
|
143
|
+
</os>
|
144
|
+
<high_availability>
|
145
|
+
<enabled>false</enabled>
|
146
|
+
<priority>0</priority>
|
147
|
+
</high_availability>
|
148
|
+
<display>
|
149
|
+
<type>vnc</type>
|
150
|
+
<monitors>1</monitors>
|
151
|
+
</display>
|
152
|
+
<cluster id="b68980dc-3ab8-11e1-bcbf-5254005f0f6f" href="/api/clusters/b68980dc-3ab8-11e1-bcbf-5254005f0f6f"/>
|
153
|
+
<template id="00000000-0000-0000-0000-000000000000" href="/api/templates/00000000-0000-0000-0000-000000000000"/>
|
154
|
+
<instance_type id="00000000-0000-0000-0000-000000000001" href="/api/instancetypes/00000000-0000-0000-0000-000000000001"/>
|
155
|
+
<start_time>2012-01-19T14:41:58.428Z</start_time>
|
156
|
+
<creation_time>2012-01-19T13:41:24.405Z</creation_time>
|
157
|
+
<origin>rhev</origin>
|
158
|
+
<stateless>false</stateless>
|
159
|
+
<placement_policy>
|
160
|
+
<affinity>migratable</affinity>
|
161
|
+
</placement_policy>
|
162
|
+
<memory_policy>
|
163
|
+
<guaranteed>536870912</guaranteed>
|
164
|
+
</memory_policy>
|
165
|
+
<usb>
|
166
|
+
<enabled>true</enabled>
|
167
|
+
</usb>
|
168
|
+
</vm>
|
169
|
+
END_HEREDOC
|
170
|
+
|
171
|
+
|
110
172
|
@min_xml = <<END_HEREDOC
|
111
173
|
<vm id="76d29095-bc27-4cd0-8178-07e942aea549" href="/api/vms/76d29095-bc27-4cd0-8178-07e942aea549">
|
112
174
|
<name>c-1326980484</name>
|
@@ -276,6 +338,24 @@ END_HEREDOC
|
|
276
338
|
Nokogiri::XML(xml).xpath("//disks/disk/storage_domains/storage_domain[contains(@id,'#{storagedomain}')]").length.should eql(1)
|
277
339
|
end
|
278
340
|
|
341
|
+
it "create vm xml without instance_type" do
|
342
|
+
opts = {:cluster_name=>'cluster'}
|
343
|
+
xml = OVIRT::VM.to_xml(opts)
|
344
|
+
xml.nil?.should eql(false)
|
345
|
+
Nokogiri::XML(xml).xpath("//instance_type").length.should eql(0)
|
346
|
+
end
|
347
|
+
|
348
|
+
it "create vm xml with instance_type" do
|
349
|
+
instance_type = "00000000-0000-0000-0000-000000000001"
|
350
|
+
opts = {:cluster_name => 'cluster', :instance_type => instance_type}
|
351
|
+
xml = OVIRT::VM.to_xml(opts)
|
352
|
+
puts xml
|
353
|
+
xml.nil?.should eql(false)
|
354
|
+
Nokogiri::XML(xml).xpath("//instance_type").length.should eql(1)
|
355
|
+
Nokogiri::XML(xml).xpath("//instance_type[contains(@id,'#{instance_type}')]").length.should eql(1)
|
356
|
+
end
|
357
|
+
|
358
|
+
|
279
359
|
it "should be running" do
|
280
360
|
vm = OVIRT::VM.new(nil, Nokogiri::XML(@xml).xpath('/').first)
|
281
361
|
vm.running?.should eql(true)
|
@@ -303,6 +383,11 @@ END_HEREDOC
|
|
303
383
|
disk.interface.should eql('virtio')
|
304
384
|
end
|
305
385
|
|
386
|
+
it "should have instance_type" do
|
387
|
+
vm = OVIRT::VM.new(nil, Nokogiri::XML(@min_instance_type_xml).xpath('/').first)
|
388
|
+
vm.instance_type.id.should eql('00000000-0000-0000-0000-000000000001')
|
389
|
+
end
|
390
|
+
|
306
391
|
it "should still fallback to the client" do
|
307
392
|
vm = OVIRT::VM.new(@mock_client, Nokogiri::XML(@min_xml).xpath('/').first)
|
308
393
|
vm.volumes.length.should eql(1)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbovirt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amos Benari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|