ovirt 0.12.1 → 0.13.0
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/host.rb +1 -1
- data/lib/ovirt/version.rb +1 -1
- data/lib/ovirt.rb +0 -1
- metadata +4 -17
- data/lib/ovirt/inventory.rb +0 -207
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c82f2d658955528e5e35c3c3eceafa20d0757168
|
|
4
|
+
data.tar.gz: 73b2a0d08d55af23d29d8cda5efc7d2a942b78ef
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64f341695af226e85a2ed87d237e5481ace077c554f2180219665b523d27ed2148d21dfda1182189bb476c3f353f3f71a48a6063a361290af3852ed5e97db025
|
|
7
|
+
data.tar.gz: 7e181ac7fbdd65a6a0a123d4dabb41d55733df29b6d0850a8b3577a3e0eb04ee24e5f134e88f2d28b3b7ac8c6284698390b221f9e516e838b72fe253edb6b813
|
data/lib/ovirt/host.rb
CHANGED
|
@@ -54,7 +54,7 @@ module Ovirt
|
|
|
54
54
|
|
|
55
55
|
if has_first_node?(node, 'os/version')
|
|
56
56
|
parse_first_node_with_hash(node, 'os/version', hash.store_path(:os, :version, {}),
|
|
57
|
-
:attribute => [:full_version])
|
|
57
|
+
:attribute => [:full_version, :major, :minor, :build])
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
parse_first_node(node, :libvirt_version, hash,
|
data/lib/ovirt/version.rb
CHANGED
data/lib/ovirt.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ovirt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jason Frey
|
|
@@ -21,10 +21,11 @@ authors:
|
|
|
21
21
|
- Martin Betak
|
|
22
22
|
- Tomas Jelinek
|
|
23
23
|
- Piotr Kliczewski
|
|
24
|
+
- Moti Asayag
|
|
24
25
|
autorequire:
|
|
25
26
|
bindir: bin
|
|
26
27
|
cert_chain: []
|
|
27
|
-
date: 2016-08-
|
|
28
|
+
date: 2016-08-23 00:00:00.000000000 Z
|
|
28
29
|
dependencies:
|
|
29
30
|
- !ruby/object:Gem::Dependency
|
|
30
31
|
name: activesupport
|
|
@@ -138,20 +139,6 @@ dependencies:
|
|
|
138
139
|
- - ">="
|
|
139
140
|
- !ruby/object:Gem::Version
|
|
140
141
|
version: 1.6.8
|
|
141
|
-
- !ruby/object:Gem::Dependency
|
|
142
|
-
name: parallel
|
|
143
|
-
requirement: !ruby/object:Gem::Requirement
|
|
144
|
-
requirements:
|
|
145
|
-
- - ">="
|
|
146
|
-
- !ruby/object:Gem::Version
|
|
147
|
-
version: '0'
|
|
148
|
-
type: :runtime
|
|
149
|
-
prerelease: false
|
|
150
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
151
|
-
requirements:
|
|
152
|
-
- - ">="
|
|
153
|
-
- !ruby/object:Gem::Version
|
|
154
|
-
version: '0'
|
|
155
142
|
- !ruby/object:Gem::Dependency
|
|
156
143
|
name: rest-client
|
|
157
144
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,6 +173,7 @@ email:
|
|
|
186
173
|
- mbetak@redhat.com
|
|
187
174
|
- tjelinek@redhat.com
|
|
188
175
|
- piotr.kliczewski@gmail.com
|
|
176
|
+
- masayag@redhat.com
|
|
189
177
|
executables: []
|
|
190
178
|
extensions: []
|
|
191
179
|
extra_rdoc_files: []
|
|
@@ -207,7 +195,6 @@ files:
|
|
|
207
195
|
- lib/ovirt/group.rb
|
|
208
196
|
- lib/ovirt/host.rb
|
|
209
197
|
- lib/ovirt/host_nic.rb
|
|
210
|
-
- lib/ovirt/inventory.rb
|
|
211
198
|
- lib/ovirt/legacy_support/cloud_init_via_floppy_payload.rb
|
|
212
199
|
- lib/ovirt/logging.rb
|
|
213
200
|
- lib/ovirt/network.rb
|
data/lib/ovirt/inventory.rb
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
module Ovirt
|
|
2
|
-
class Inventory
|
|
3
|
-
attr_accessor :service
|
|
4
|
-
|
|
5
|
-
def initialize(options = {})
|
|
6
|
-
@service = Service.new(options)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def api
|
|
10
|
-
standard_collection('api').first
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def capabilities
|
|
14
|
-
standard_collection("capabilities")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def clusters
|
|
18
|
-
standard_collection("clusters")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def datacenters
|
|
22
|
-
standard_collection("datacenters", "data_center")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def domains
|
|
26
|
-
standard_collection("domains")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def events(options = {})
|
|
30
|
-
if options[:since]
|
|
31
|
-
standard_collection("events?from=#{options[:since]}", "event")
|
|
32
|
-
elsif options[:max]
|
|
33
|
-
standard_collection("events;max=#{options[:max]}", "event", false, "time", :desc)
|
|
34
|
-
else
|
|
35
|
-
standard_collection("events")
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def groups
|
|
40
|
-
standard_collection("groups")
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def hosts
|
|
44
|
-
standard_collection("hosts", nil, true)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def networks
|
|
48
|
-
standard_collection("networks")
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def roles
|
|
52
|
-
standard_collection("roles")
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def storagedomains
|
|
56
|
-
standard_collection("storagedomains", "storage_domain", true)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def tags
|
|
60
|
-
standard_collection("tags")
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def templates
|
|
64
|
-
standard_collection("templates")
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def users
|
|
68
|
-
standard_collection("users")
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def vms
|
|
72
|
-
standard_collection("vms", nil, true)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def vmpools
|
|
76
|
-
standard_collection("vmpools")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def get_vm(path)
|
|
80
|
-
vm_guid = ::File.basename(path, '.*')
|
|
81
|
-
vm = get_resource_by_ems_ref("/api/vms/#{vm_guid}") rescue nil
|
|
82
|
-
vm = get_resource_by_ems_ref("/api/templates/#{vm_guid}") if vm.blank?
|
|
83
|
-
vm
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def get_resource_by_ems_ref(uri_suffix, element_name = nil)
|
|
87
|
-
@service.get_resource_by_ems_ref(uri_suffix, element_name)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def get_resources_by_uri_path(uri_suffix, element_name = nil)
|
|
91
|
-
@service.get_resources_by_uri_path(uri_suffix, element_name)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def refresh
|
|
95
|
-
# TODO: Change to not return native objects to the caller. The caller
|
|
96
|
-
# should just expect raw data.
|
|
97
|
-
primary_items = collect_primary_jobs(primary_item_jobs)
|
|
98
|
-
collect_secondary_items(primary_items, SECONDARY_ITEMS)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def targeted_refresh(methods)
|
|
102
|
-
primary_items = collect_primary_targeted_jobs(methods[:primary].to_a)
|
|
103
|
-
collect_secondary_items(primary_items, methods[:secondary])
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def api_path
|
|
107
|
-
@service.api_path
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
private
|
|
111
|
-
|
|
112
|
-
def standard_collection(uri_suffix, element_name = nil, paginate = false, sort_by = :name, direction = :asc)
|
|
113
|
-
@service.standard_collection(uri_suffix, element_name, paginate, sort_by, direction)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# TODO: Remove this key/method translation and just use the method name as
|
|
117
|
-
# the key directly.
|
|
118
|
-
PRIMARY_ITEMS = {
|
|
119
|
-
# Key RHEVM API method
|
|
120
|
-
:cluster => :clusters,
|
|
121
|
-
:vmpool => :vmpools,
|
|
122
|
-
:network => :networks,
|
|
123
|
-
:storage => :storagedomains,
|
|
124
|
-
:datacenter => :datacenters,
|
|
125
|
-
:host => :hosts,
|
|
126
|
-
:vm => :vms,
|
|
127
|
-
:template => :templates
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
SECONDARY_ITEMS = {
|
|
131
|
-
# Key RHEVM API methods
|
|
132
|
-
:datacenter => [:storagedomains],
|
|
133
|
-
:host => [:statistics, :host_nics], # :cdroms, tags
|
|
134
|
-
:vm => [:disks, :snapshots, :nics],
|
|
135
|
-
:template => [:disks]
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
def primary_item_jobs
|
|
139
|
-
PRIMARY_ITEMS.to_a
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# Returns all combinations of primary resources and the methods to run on those resources.
|
|
143
|
-
#
|
|
144
|
-
# > secondary_item_jobs({:vm, => [v1, v2]})
|
|
145
|
-
# => [[v1, :disks], [v1, :snapshots], [v1, :nics], [v2, :disks], [v2, :snapshots], [v2, :nics]]
|
|
146
|
-
def secondary_item_jobs(primary_items, secondary_items)
|
|
147
|
-
secondary_items.flat_map do |key, methods|
|
|
148
|
-
primary_items[key].product(methods)
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def collect_primary_jobs(jobs)
|
|
153
|
-
results = collect_in_parallel(jobs) do |_, method|
|
|
154
|
-
send(method)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
jobs.zip(results).each_with_object({}) do |((key, _), result), hash|
|
|
158
|
-
hash[key] = result
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def collect_primary_targeted_jobs(jobs)
|
|
163
|
-
results = collect_in_parallel(jobs) do |key, ems_ref|
|
|
164
|
-
if ems_ref.kind_of?(Array)
|
|
165
|
-
ems_ref.flat_map { |item| get_resources_by_uri_path(item) rescue Array.new }
|
|
166
|
-
elsif ems_ref.kind_of?(Hash)
|
|
167
|
-
collection, element_name = ems_ref.first
|
|
168
|
-
standard_collection(collection, element_name, true)
|
|
169
|
-
else
|
|
170
|
-
get_resources_by_uri_path(ems_ref) rescue Array.new
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
jobs.zip(results).each_with_object({}) do |((key, _), result), hash|
|
|
175
|
-
hash[key] = result
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def collect_secondary_items(primary_items, secondary_items)
|
|
180
|
-
jobs = secondary_item_jobs(primary_items, secondary_items)
|
|
181
|
-
|
|
182
|
-
results = collect_in_parallel(jobs) do |resource, method|
|
|
183
|
-
resource.send(method) rescue nil
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
jobs.zip(results).each do |(resource, method), result|
|
|
187
|
-
resource.attributes[method] = result
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
primary_items
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
def collect_in_parallel(jobs, &block)
|
|
194
|
-
require 'parallel'
|
|
195
|
-
Parallel.map(jobs, :in_threads => num_threads, &block)
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def num_threads
|
|
199
|
-
use_threads? ? 8 : 0
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# HACK: VCR is not threadsafe, and so tests running under VCR fail
|
|
203
|
-
def use_threads?
|
|
204
|
-
!defined?(VCR)
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|