rbovirt 0.0.15 → 0.0.16
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rbovirt might be problematic. Click here for more details.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/client/cluster_api.rb +4 -3
- data/lib/client/host_api.rb +3 -2
- data/lib/client/storage_domain_api.rb +4 -3
- data/lib/client/template_api.rb +4 -3
- data/lib/client/vm_api.rb +3 -2
- data/lib/ovirt/host.rb +4 -3
- data/lib/ovirt/vm.rb +1 -1
- data/lib/rbovirt.rb +16 -7
- data/rbovirt.gemspec +2 -2
- data/spec/integration/api_spec.rb +52 -21
- data/spec/integration/vm_crud_spec.rb +72 -52
- data/spec/lib/endpoint.rb +7 -3
- metadata +112 -120
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ require 'jeweler'
|
|
15
15
|
Jeweler::Tasks.new do |gem|
|
16
16
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
17
|
gem.name = "rbovirt"
|
18
|
-
gem.homepage = "http://github.com/
|
18
|
+
gem.homepage = "http://github.com/abenari/rbovirt"
|
19
19
|
gem.license = "MIT"
|
20
20
|
gem.summary = %Q{A Ruby client for oVirt REST API}
|
21
21
|
gem.description = %Q{A Ruby client for oVirt REST API}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.16
|
data/lib/client/cluster_api.rb
CHANGED
@@ -12,11 +12,12 @@ module OVIRT
|
|
12
12
|
|
13
13
|
def clusters(opts={})
|
14
14
|
headers = {:accept => "application/xml; detail=datacenters"}
|
15
|
-
|
16
|
-
|
15
|
+
path = "/clusters"
|
16
|
+
path += search_url(opts) unless filtered_api
|
17
|
+
http_get(path, headers).xpath('/clusters/cluster').collect do |cl|
|
17
18
|
cluster = OVIRT::Cluster.new(self, cl)
|
18
19
|
#the following line is needed as a work-around a bug in RHEV 3.0 rest-api
|
19
|
-
cluster if cluster.datacenter.id == current_datacenter.id
|
20
|
+
cluster if !filtered_api || (cluster.datacenter.id == current_datacenter.id)
|
20
21
|
end.compact
|
21
22
|
end
|
22
23
|
|
data/lib/client/host_api.rb
CHANGED
@@ -6,8 +6,9 @@ module OVIRT
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def hosts(opts={})
|
9
|
-
|
10
|
-
|
9
|
+
path = "/hosts"
|
10
|
+
path += search_url(opts) unless filtered_api
|
11
|
+
http_get(path).xpath('/hosts/host').collect do |h|
|
11
12
|
OVIRT::Host::new(self, h)
|
12
13
|
end
|
13
14
|
end
|
@@ -6,12 +6,13 @@ module OVIRT
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def storagedomains(opts={})
|
9
|
-
|
10
|
-
|
9
|
+
path = "/storagedomains"
|
10
|
+
path += search_url(opts) unless filtered_api
|
11
|
+
http_get(path).xpath('/storage_domains/storage_domain').collect do |sd|
|
11
12
|
storage_domain = OVIRT::StorageDomain::new(self, sd)
|
12
13
|
#filter by role is not supported by the search language. The work around is to list all, then filter.
|
13
14
|
(opts[:role].nil? || storage_domain.role == opts[:role]) ? storage_domain : nil
|
14
15
|
end.compact
|
15
16
|
end
|
16
17
|
end
|
17
|
-
end
|
18
|
+
end
|
data/lib/client/template_api.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module OVIRT
|
2
2
|
class Client
|
3
3
|
def templates(opts={})
|
4
|
-
|
5
|
-
|
4
|
+
path = "/templates"
|
5
|
+
path += search_url(opts) unless filtered_api
|
6
|
+
http_get(path).xpath('/templates/template').collect do |t|
|
6
7
|
OVIRT::Template::new(self, t)
|
7
8
|
end.compact
|
8
9
|
end
|
@@ -34,4 +35,4 @@ module OVIRT
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
37
|
-
end
|
38
|
+
end
|
data/lib/client/vm_api.rb
CHANGED
@@ -7,8 +7,9 @@ module OVIRT
|
|
7
7
|
|
8
8
|
def vms(opts={})
|
9
9
|
headers = {:accept => "application/xml; detail=disks; detail=nics; detail=hosts"}
|
10
|
-
|
11
|
-
|
10
|
+
path = "/vms"
|
11
|
+
path += search_url(opts) unless filtered_api
|
12
|
+
http_get(path, headers).xpath('/vms/vm').collect do |vm|
|
12
13
|
OVIRT::VM::new(self, vm)
|
13
14
|
end
|
14
15
|
end
|
data/lib/ovirt/host.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module OVIRT
|
2
|
-
|
3
|
-
attr_reader :description, :status, :cluster
|
2
|
+
class Host < BaseObject
|
3
|
+
attr_reader :description, :status, :cluster, :address
|
4
4
|
|
5
5
|
def initialize(client, xml)
|
6
6
|
super(client, xml[:id], xml[:href], (xml/'name').first.text)
|
@@ -12,8 +12,9 @@ module OVIRT
|
|
12
12
|
|
13
13
|
def parse_xml_attributes!(xml)
|
14
14
|
@description = ((xml/'description').first.text rescue nil)
|
15
|
+
@address = ((xml/'address').first.text rescue nil)
|
15
16
|
@status = (xml/'status').first.text
|
16
|
-
@
|
17
|
+
@cluster = Link::new(@client, (xml/'cluster').first[:id], (xml/'cluster').first[:href])
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
data/lib/ovirt/vm.rb
CHANGED
data/lib/rbovirt.rb
CHANGED
@@ -35,13 +35,14 @@ module OVIRT
|
|
35
35
|
|
36
36
|
class Client
|
37
37
|
|
38
|
-
attr_reader :credentials, :api_entrypoint, :datacenter_id, :cluster_id
|
38
|
+
attr_reader :credentials, :api_entrypoint, :datacenter_id, :cluster_id, :filtered_api
|
39
39
|
|
40
|
-
def initialize(username, password, api_entrypoint, datacenter_id=nil, cluster_id=nil)
|
40
|
+
def initialize(username, password, api_entrypoint, datacenter_id=nil, cluster_id=nil, filtered_api = false)
|
41
41
|
@credentials = { :username => username, :password => password }
|
42
42
|
@datacenter_id = datacenter_id
|
43
43
|
@cluster_id = cluster_id
|
44
44
|
@api_entrypoint = api_entrypoint
|
45
|
+
@filtered_api = filtered_api
|
45
46
|
end
|
46
47
|
|
47
48
|
def api_version
|
@@ -60,6 +61,11 @@ module OVIRT
|
|
60
61
|
end
|
61
62
|
|
62
63
|
private
|
64
|
+
def search_url opts
|
65
|
+
search = opts[:search] || ("datacenter=%s" % current_datacenter.name)
|
66
|
+
"?search=%s" % CGI.escape(search)
|
67
|
+
end
|
68
|
+
|
63
69
|
def current_datacenter
|
64
70
|
@current_datacenter ||= self.datacenter_id ? datacenter(self.datacenter_id) : datacenters.first
|
65
71
|
end
|
@@ -94,7 +100,7 @@ module OVIRT
|
|
94
100
|
|
95
101
|
def http_delete(suburl)
|
96
102
|
begin
|
97
|
-
headers = {:accept => 'application/xml'}.merge(auth_header)
|
103
|
+
headers = {:accept => 'application/xml'}.merge(auth_header).merge(filter_header)
|
98
104
|
Nokogiri::XML(RestClient::Resource.new(@api_entrypoint)[suburl].delete(headers))
|
99
105
|
rescue
|
100
106
|
handle_fault $!
|
@@ -107,6 +113,10 @@ module OVIRT
|
|
107
113
|
{ :authorization => "Basic " + encoded_credentials }
|
108
114
|
end
|
109
115
|
|
116
|
+
def filter_header
|
117
|
+
filtered_api ? { :filter => "true" } : {}
|
118
|
+
end
|
119
|
+
|
110
120
|
def base_url
|
111
121
|
url = URI.parse(@api_entrypoint)
|
112
122
|
"#{url.scheme}://#{url.host}:#{url.port}"
|
@@ -117,15 +127,14 @@ module OVIRT
|
|
117
127
|
end
|
118
128
|
|
119
129
|
def has_datacenter?(vm)
|
120
|
-
|
121
|
-
value
|
130
|
+
(vm/'data_center').any?
|
122
131
|
end
|
123
132
|
|
124
133
|
def http_headers(headers ={})
|
125
134
|
headers.merge({
|
126
135
|
:content_type => 'application/xml',
|
127
|
-
:accept => 'application/xml'
|
128
|
-
}).merge(auth_header)
|
136
|
+
:accept => 'application/xml',
|
137
|
+
}).merge(auth_header).merge(filter_header)
|
129
138
|
end
|
130
139
|
|
131
140
|
def handle_fault(f)
|
data/rbovirt.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rbovirt"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.16"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Amos Benari"]
|
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
|
|
48
48
|
"spec/spec_helper.rb",
|
49
49
|
"spec/unit/vm_spec.rb"
|
50
50
|
]
|
51
|
-
s.homepage = "http://github.com/
|
51
|
+
s.homepage = "http://github.com/abenari/rbovirt"
|
52
52
|
s.licenses = ["MIT"]
|
53
53
|
s.require_paths = ["lib"]
|
54
54
|
s.rubygems_version = "1.8.24"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/../spec_helper"
|
2
2
|
|
3
|
-
|
3
|
+
shared_examples_for "API" do
|
4
4
|
|
5
5
|
# This spec requires the API to be stable, so that projects using
|
6
6
|
# OVIRT do not have to update their code if a new (minor)
|
@@ -13,38 +13,69 @@ describe OVIRT, "API" do
|
|
13
13
|
# Because of the API stability guarantee, these spec's may only
|
14
14
|
# be changed for new major releases.
|
15
15
|
|
16
|
+
it "test_should_return_a_version" do
|
17
|
+
@client.api_version.class.should eql(String)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "test_should_return_datacenters" do
|
21
|
+
@client.datacenters.class.should eql(Array)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "test_should_return_clusters" do
|
25
|
+
@client.clusters.class.should eql(Array)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "test_should_return_templates" do
|
29
|
+
@client.templates.class.should eql(Array)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "test_should_return_vms" do
|
33
|
+
@client.vms.class.should eql(Array)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "test_should_return_storage" do
|
37
|
+
@client.storagedomains.class.should eql(Array)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe OVIRT, "Admin API" do
|
42
|
+
|
16
43
|
before(:all) do
|
17
44
|
user, password, url = endpoint
|
18
|
-
@client = ::OVIRT::Client.new(user, password, url)
|
45
|
+
@client = ::OVIRT::Client.new(user, password, url, nil, nil, false)
|
19
46
|
end
|
20
47
|
|
21
48
|
after(:all) do
|
22
49
|
end
|
23
50
|
|
24
|
-
context 'basic api and listing' do
|
25
|
-
|
26
|
-
@client.api_version.class.should eql(String)
|
27
|
-
end
|
51
|
+
context 'basic admin api and listing' do
|
52
|
+
it_behaves_like "API"
|
28
53
|
|
29
|
-
it "
|
30
|
-
@client.
|
54
|
+
it "test_should_return_hosts" do
|
55
|
+
@client.hosts.class.should eql(Array)
|
31
56
|
end
|
57
|
+
end
|
32
58
|
|
33
|
-
|
34
|
-
@client.clusters.class.should eql(Array)
|
35
|
-
end
|
59
|
+
end
|
36
60
|
|
37
|
-
|
38
|
-
@client.templates.class.should eql(Array)
|
39
|
-
end
|
61
|
+
describe OVIRT, "User API" do
|
40
62
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
@client.storagedomains.class.should eql(Array)
|
46
|
-
end
|
63
|
+
before(:all) do
|
64
|
+
user, password, url = endpoint
|
65
|
+
@client = ::OVIRT::Client.new(user, password, url, nil, nil, support_user_level_api)
|
66
|
+
end
|
47
67
|
|
68
|
+
after(:all) do
|
48
69
|
end
|
49
70
|
|
50
|
-
|
71
|
+
context 'basic user api and listing' do
|
72
|
+
it_behaves_like "API"
|
73
|
+
#User level API doesn't support returning hosts
|
74
|
+
it "test_should_not_return_hosts" do
|
75
|
+
if support_user_level_api
|
76
|
+
expect {@client.hosts}.to raise_error
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -1,73 +1,93 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/../spec_helper"
|
2
2
|
|
3
|
-
|
3
|
+
shared_examples_for "Basic VM Life cycle" do
|
4
4
|
|
5
5
|
before(:all) do
|
6
|
-
|
7
|
-
@
|
6
|
+
@blank_template_id = "00000000-0000-0000-0000-000000000000"
|
7
|
+
@cluster = @client.clusters.first.id
|
8
|
+
name = 'vm-'+Time.now.to_i.to_s
|
9
|
+
@vm = @client.create_vm(:name => name, :template => @blank_template_id, :cluster => @cluster)
|
10
|
+
@client.add_volume(@vm.id)
|
11
|
+
@client.add_interface(@vm.id)
|
12
|
+
while !@client.vm(@vm.id).ready? do
|
13
|
+
end
|
8
14
|
end
|
9
15
|
|
10
|
-
|
16
|
+
after(:all) do
|
17
|
+
@client.destroy_vm(@vm.id)
|
18
|
+
end
|
11
19
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
while !@client.vm(@vm.id).ready? do
|
18
|
-
end
|
20
|
+
it "test_should_create_template" do
|
21
|
+
template_name = "tmplt-"+Time.now.to_i.to_s
|
22
|
+
template = @client.create_template(:vm => @vm.id, :name => template_name, :description => "test_template")
|
23
|
+
template.class.to_s.should eql("OVIRT::Template")
|
24
|
+
while !@client.vm(@vm.id).ready? do
|
19
25
|
end
|
26
|
+
@client.destroy_template(template.id)
|
27
|
+
end
|
20
28
|
|
21
|
-
|
22
|
-
|
23
|
-
|
29
|
+
it "test_should_return_a_template" do
|
30
|
+
@client.template(@blank_template_id).id.should eql(@blank_template_id)
|
31
|
+
end
|
24
32
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
template.class.to_s.should eql("OVIRT::Template")
|
29
|
-
while !@client.vm(@vm.id).ready? do
|
30
|
-
end
|
31
|
-
@client.destroy_template(template.id)
|
32
|
-
end
|
33
|
+
it "test_should_return_a_vm" do
|
34
|
+
@client.vm(@vm.id).id.should eql(@vm.id)
|
35
|
+
end
|
33
36
|
|
34
|
-
|
35
|
-
|
37
|
+
it "test_should_start_and_stop_vm" do
|
38
|
+
@client.vm_action(@vm.id, :start)
|
39
|
+
while !@client.vm(@vm.id).running? do
|
36
40
|
end
|
41
|
+
@client.vm_action(@vm.id, :shutdown)
|
42
|
+
end
|
37
43
|
|
38
|
-
|
39
|
-
|
44
|
+
it "test_should_set_vm_ticket" do
|
45
|
+
@client.vm_action(@vm.id, :start)
|
46
|
+
while !@client.vm(@vm.id).running? do
|
40
47
|
end
|
48
|
+
@client.set_ticket(@vm.id)
|
49
|
+
@client.vm_action(@vm.id, :shutdown)
|
50
|
+
end
|
41
51
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
52
|
+
it "test_should_destroy_vm" do
|
53
|
+
name = 'd-'+Time.now.to_i.to_s
|
54
|
+
vm = @client.create_vm(:name => name, :template =>@blank_template_id, :cluster => @cluster)
|
55
|
+
@client.destroy_vm(vm.id)
|
56
|
+
end
|
46
57
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
@client.set_ticket(@vm.id)
|
52
|
-
@client.vm_action(@vm.id, :shutdown)
|
53
|
-
end
|
58
|
+
it "test_should_update_vm" do
|
59
|
+
name = 'u-'+Time.now.to_i.to_s
|
60
|
+
@client.update_vm(:id => @vm.id, :name=> name, :cluster => @cluster)
|
61
|
+
end
|
54
62
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
63
|
+
it "test_should_create_a_vm" do
|
64
|
+
name = 'c-'+Time.now.to_i.to_s
|
65
|
+
vm = @client.create_vm(:name => name, :template => @blank_template_id, :cluster => @cluster)
|
66
|
+
vm.class.to_s.should eql("OVIRT::VM")
|
67
|
+
@client.destroy_vm(vm.id)
|
68
|
+
end
|
69
|
+
end
|
60
70
|
|
61
|
-
|
62
|
-
name = 'u-'+Time.now.to_i.to_s
|
63
|
-
@client.update_vm(:id => @vm.id, :name=> name)
|
64
|
-
end
|
71
|
+
describe "Admin API VM Life cycle" do
|
65
72
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
73
|
+
before(:all) do
|
74
|
+
user, password, url = endpoint
|
75
|
+
@client = ::OVIRT::Client.new(user, password, url, nil, nil, false)
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'admin basic vm and templates operations' do
|
79
|
+
it_behaves_like "Basic VM Life cycle"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "User API VM Life cycle" do
|
84
|
+
|
85
|
+
before(:all) do
|
86
|
+
user, password, url = endpoint
|
87
|
+
@client = ::OVIRT::Client.new(user, password, url, nil, nil, support_user_level_api)
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'user basic vm and templates operations' do
|
91
|
+
it_behaves_like "Basic VM Life cycle"
|
72
92
|
end
|
73
93
|
end
|
data/spec/lib/endpoint.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module OVIRT::RSpec::Endpoint
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
def endpoint
|
4
|
+
file = File.expand_path("../endpoint.yml", File.dirname(__FILE__))
|
5
|
+
@endpoint ||= YAML.load(File.read(file))
|
6
6
|
user = @endpoint['user']
|
7
7
|
password= @endpoint['password']
|
8
8
|
hostname = @endpoint['hostname']
|
@@ -11,4 +11,8 @@ module OVIRT::RSpec::Endpoint
|
|
11
11
|
return user, password, url
|
12
12
|
end
|
13
13
|
|
14
|
+
def support_user_level_api
|
15
|
+
@endpoint['version'] && @endpoint['version'] > 3.1
|
16
|
+
end
|
17
|
+
|
14
18
|
end
|
metadata
CHANGED
@@ -1,135 +1,136 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbovirt
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.16
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 15
|
10
|
-
version: 0.0.15
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Amos Benari
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
type: :runtime
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
version_requirements: *id001
|
12
|
+
date: 2012-11-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
32
15
|
name: nokogiri
|
33
|
-
|
34
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
35
22
|
type: :runtime
|
36
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
25
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
- 0
|
44
|
-
version: "0"
|
45
|
-
version_requirements: *id002
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
46
31
|
name: rest-client
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
47
39
|
prerelease: false
|
48
|
-
|
49
|
-
type: :development
|
50
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
41
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
|
57
|
-
- 0
|
58
|
-
version: "0"
|
59
|
-
version_requirements: *id003
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
60
47
|
name: shoulda
|
61
|
-
|
62
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
63
54
|
type: :development
|
64
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
|
-
requirements:
|
66
|
+
requirements:
|
67
67
|
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
hash: 23
|
70
|
-
segments:
|
71
|
-
- 1
|
72
|
-
- 0
|
73
|
-
- 0
|
68
|
+
- !ruby/object:Gem::Version
|
74
69
|
version: 1.0.0
|
75
|
-
version_requirements: *id004
|
76
|
-
name: bundler
|
77
|
-
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
70
|
type: :development
|
80
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
73
|
none: false
|
82
|
-
requirements:
|
74
|
+
requirements:
|
83
75
|
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
|
86
|
-
|
87
|
-
- 1
|
88
|
-
- 6
|
89
|
-
- 4
|
90
|
-
version: 1.6.4
|
91
|
-
version_requirements: *id005
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
92
79
|
name: jeweler
|
93
|
-
|
94
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.6.4
|
95
86
|
type: :development
|
96
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
89
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
|
103
|
-
- 0
|
104
|
-
version: "0"
|
105
|
-
version_requirements: *id006
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.6.4
|
94
|
+
- !ruby/object:Gem::Dependency
|
106
95
|
name: rcov
|
107
|
-
|
108
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
109
102
|
type: :development
|
110
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
105
|
none: false
|
112
|
-
requirements:
|
113
|
-
- -
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
|
116
|
-
|
117
|
-
- 2
|
118
|
-
- 6
|
119
|
-
version: "2.6"
|
120
|
-
version_requirements: *id007
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
121
111
|
name: rspec-rails
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.6'
|
118
|
+
type: :development
|
122
119
|
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '2.6'
|
123
126
|
description: A Ruby client for oVirt REST API
|
124
127
|
email: abenari@redhat.com
|
125
128
|
executables: []
|
126
|
-
|
127
129
|
extensions: []
|
128
|
-
|
129
|
-
extra_rdoc_files:
|
130
|
+
extra_rdoc_files:
|
130
131
|
- LICENSE.txt
|
131
132
|
- README.rdoc
|
132
|
-
files:
|
133
|
+
files:
|
133
134
|
- .document
|
134
135
|
- Gemfile
|
135
136
|
- LICENSE.txt
|
@@ -160,38 +161,29 @@ files:
|
|
160
161
|
- spec/lib/endpoint.rb
|
161
162
|
- spec/spec_helper.rb
|
162
163
|
- spec/unit/vm_spec.rb
|
163
|
-
homepage: http://github.com/
|
164
|
-
licenses:
|
164
|
+
homepage: http://github.com/abenari/rbovirt
|
165
|
+
licenses:
|
165
166
|
- MIT
|
166
167
|
post_install_message:
|
167
168
|
rdoc_options: []
|
168
|
-
|
169
|
-
require_paths:
|
169
|
+
require_paths:
|
170
170
|
- lib
|
171
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
172
172
|
none: false
|
173
|
-
requirements:
|
174
|
-
- -
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
|
177
|
-
|
178
|
-
- 0
|
179
|
-
version: "0"
|
180
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ! '>='
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
178
|
none: false
|
182
|
-
requirements:
|
183
|
-
- -
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
|
186
|
-
segments:
|
187
|
-
- 0
|
188
|
-
version: "0"
|
179
|
+
requirements:
|
180
|
+
- - ! '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
189
183
|
requirements: []
|
190
|
-
|
191
184
|
rubyforge_project:
|
192
|
-
rubygems_version: 1.8.
|
185
|
+
rubygems_version: 1.8.23
|
193
186
|
signing_key:
|
194
187
|
specification_version: 3
|
195
188
|
summary: A Ruby client for oVirt REST API
|
196
189
|
test_files: []
|
197
|
-
|