opennebula 5.6.0 → 5.6.1
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/cloud/CloudClient.rb +1 -1
- data/lib/opennebula.rb +1 -1
- data/lib/opennebula/ldap_auth.rb +2 -21
- data/lib/opennebula/pool.rb +46 -12
- data/lib/opennebula/xml_element.rb +1 -26
- data/lib/vcenter_driver.rb +16 -16
- 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: bef9b2183a0d6a9255fc9a4304f876b2bb46d7d3
|
4
|
+
data.tar.gz: ef4f6c545dd5d962ff6053c823e2c6933aa3057b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 829850fa4829aacb804c0df3a585dbc6db72430c64f7d86be705a7b02a593a92f867a0e3d42fed0b58b7f6d978b6dbf775aefd7ef36151ccfd40c6169c3517e3
|
7
|
+
data.tar.gz: bd4f6776d73e0091545cc8afacd64a8bcb447a4b23604ed57cfd617bd1b0d9fac8f2594caba70daaf5342283200c1fccce20ede5687b80e5bbed8f82601ca343
|
data/lib/cloud/CloudClient.rb
CHANGED
data/lib/opennebula.rb
CHANGED
data/lib/opennebula/ldap_auth.rb
CHANGED
@@ -131,7 +131,7 @@ class OpenNebula::LdapAuth
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def find_user(name)
|
134
|
-
filter = Net::LDAP::Filter.
|
134
|
+
filter = Net::LDAP::Filter.equals(@options[:user_field], name)
|
135
135
|
|
136
136
|
result = @ldap.search(
|
137
137
|
:base => @options[:base],
|
@@ -194,7 +194,7 @@ class OpenNebula::LdapAuth
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
else
|
197
|
-
filter =
|
197
|
+
filter = Net::LDAP::Filter.equals(@options[:group_field], @user[@options[:user_group_field]].first)
|
198
198
|
@ldap.search(
|
199
199
|
:base => @options[:base],
|
200
200
|
:attributes => [ "dn" ],
|
@@ -209,23 +209,4 @@ class OpenNebula::LdapAuth
|
|
209
209
|
groups.delete(false)
|
210
210
|
groups.compact.uniq
|
211
211
|
end
|
212
|
-
|
213
|
-
private
|
214
|
-
|
215
|
-
# The escapes code has been copied from <net-ldap>/lib/net/ldap/filter.rb
|
216
|
-
FILTER_ESCAPES = {
|
217
|
-
"\0" => '00',
|
218
|
-
'*' => '2A',
|
219
|
-
'(' => '28',
|
220
|
-
')' => '29',
|
221
|
-
'\\' => '5C',
|
222
|
-
'?' => '3F',
|
223
|
-
'=' => '3D'
|
224
|
-
}
|
225
|
-
|
226
|
-
FILTER_ESCAPE_RE = Regexp.new("[" + FILTER_ESCAPES.keys.map { |e| Regexp.escape(e) }.join + "]")
|
227
|
-
|
228
|
-
def escape(string)
|
229
|
-
string.gsub(FILTER_ESCAPE_RE) { |char| "\\" + FILTER_ESCAPES[char] }
|
230
|
-
end
|
231
212
|
end
|
data/lib/opennebula/pool.rb
CHANGED
@@ -24,6 +24,9 @@ module OpenNebula
|
|
24
24
|
include Enumerable
|
25
25
|
alias_method :each_with_xpath, :each
|
26
26
|
|
27
|
+
attr_reader :pool_name
|
28
|
+
attr_reader :element_name
|
29
|
+
|
27
30
|
PAGINATED_POOLS=%w{VM_POOL IMAGE_POOL TEMPLATE_POOL VN_POOL
|
28
31
|
DOCUMENT_POOL SECGROUP_POOL}
|
29
32
|
|
@@ -132,12 +135,13 @@ module OpenNebula
|
|
132
135
|
# xml_method:: _String_ the name of the XML-RPC method
|
133
136
|
# args:: _Array_ with additional arguments for the info call
|
134
137
|
# [return] nil in case of success or an Error object
|
135
|
-
def xmlrpc_info(xml_method
|
136
|
-
rc = @client.call(xml_method
|
138
|
+
def xmlrpc_info(xml_method, *args)
|
139
|
+
rc = @client.call(xml_method, *args)
|
137
140
|
|
138
141
|
if !OpenNebula.is_error?(rc)
|
139
|
-
initialize_xml(rc
|
140
|
-
|
142
|
+
initialize_xml(rc, @pool_name)
|
143
|
+
|
144
|
+
rc = nil
|
141
145
|
end
|
142
146
|
|
143
147
|
return rc
|
@@ -179,14 +183,17 @@ module OpenNebula
|
|
179
183
|
|
180
184
|
if OpenNebula.pool_page_size && allow_paginated &&
|
181
185
|
( ( size && size >= 2 ) || !size )
|
186
|
+
|
182
187
|
size = OpenNebula.pool_page_size if !size
|
183
|
-
hash=info_paginated(size)
|
188
|
+
hash = info_paginated(size)
|
184
189
|
|
185
190
|
return hash if OpenNebula.is_error?(hash)
|
191
|
+
|
186
192
|
{ @pool_name => { @element_name => hash } }
|
187
193
|
else
|
188
|
-
rc=info
|
194
|
+
rc = info
|
189
195
|
return rc if OpenNebula.is_error?(rc)
|
196
|
+
|
190
197
|
to_hash
|
191
198
|
end
|
192
199
|
end
|
@@ -195,14 +202,15 @@ module OpenNebula
|
|
195
202
|
#
|
196
203
|
# size:: _Integer_ size of each page
|
197
204
|
def info_paginated(size)
|
198
|
-
array=Array.new
|
199
|
-
current=0
|
205
|
+
array = Array.new
|
206
|
+
current = 0
|
200
207
|
|
201
|
-
parser=ParsePoolSax.new(@pool_name, @element_name)
|
208
|
+
parser = ParsePoolSax.new(@pool_name, @element_name)
|
202
209
|
|
203
210
|
while true
|
204
|
-
a
|
205
|
-
|
211
|
+
a = @client.call("#{@pool_name.delete('_').downcase}.info",
|
212
|
+
@user_id, current, -size, -1)
|
213
|
+
|
206
214
|
return a if OpenNebula.is_error?(a)
|
207
215
|
|
208
216
|
a_array=parser.parse(a)
|
@@ -214,9 +222,35 @@ module OpenNebula
|
|
214
222
|
end
|
215
223
|
|
216
224
|
array.compact!
|
217
|
-
array=nil if array.length == 0
|
225
|
+
array = nil if array.length == 0
|
218
226
|
|
219
227
|
array
|
220
228
|
end
|
229
|
+
|
230
|
+
# Gets a hash from a info page from pool
|
231
|
+
# size:: nil => default page size
|
232
|
+
# > 0 => page size
|
233
|
+
# current first element of the page
|
234
|
+
# hash:: return page as a hash
|
235
|
+
def get_page(size, current)
|
236
|
+
rc = nil
|
237
|
+
|
238
|
+
if PAGINATED_POOLS.include?(@pool_name)
|
239
|
+
size = OpenNebula.pool_page_size if (!size || size == 0)
|
240
|
+
rc = @client.call("#{@pool_name.delete('_').downcase}.info",
|
241
|
+
@user_id, current, -size, -1)
|
242
|
+
|
243
|
+
initialize_xml(rc, @pool_name)
|
244
|
+
else
|
245
|
+
rc = info
|
246
|
+
end
|
247
|
+
|
248
|
+
return rc
|
249
|
+
end
|
250
|
+
|
251
|
+
# Return true if pool is paginated
|
252
|
+
def is_paginated?
|
253
|
+
PAGINATED_POOLS.include?(@pool_name)
|
254
|
+
end
|
221
255
|
end
|
222
256
|
end
|
@@ -430,30 +430,5 @@ module OpenNebula
|
|
430
430
|
return attr
|
431
431
|
end
|
432
432
|
end
|
433
|
-
|
434
|
-
# The XMLUtilsPool module provides an abstraction of the underlying
|
435
|
-
# XML parser engine. It provides XML-related methods for the Pools
|
436
|
-
class XMLPool < XMLElement
|
437
|
-
|
438
|
-
def initialize(xml=nil)
|
439
|
-
super(xml)
|
440
|
-
end
|
441
|
-
|
442
|
-
#Executes the given block for each element of the Pool
|
443
|
-
#block:: _Block_
|
444
|
-
def each_element(block)
|
445
|
-
if NOKOGIRI
|
446
|
-
@xml.xpath(
|
447
|
-
"#{@element_name}").each {|pelem|
|
448
|
-
block.call self.factory(pelem)
|
449
|
-
}
|
450
|
-
else
|
451
|
-
@xml.elements.each(
|
452
|
-
"#{@element_name}") {|pelem|
|
453
|
-
block.call self.factory(pelem)
|
454
|
-
}
|
455
|
-
end
|
456
|
-
end
|
457
|
-
end
|
458
|
-
|
459
433
|
end
|
434
|
+
|
data/lib/vcenter_driver.rb
CHANGED
@@ -18,25 +18,25 @@
|
|
18
18
|
# Set up the environment for the driver #
|
19
19
|
# ---------------------------------------------------------------------------- #
|
20
20
|
|
21
|
-
ONE_LOCATION = ENV[
|
21
|
+
ONE_LOCATION = ENV['ONE_LOCATION'] unless defined?(ONE_LOCATION)
|
22
22
|
|
23
23
|
if !ONE_LOCATION
|
24
|
-
BIN_LOCATION =
|
25
|
-
LIB_LOCATION =
|
26
|
-
ETC_LOCATION =
|
27
|
-
VAR_LOCATION =
|
24
|
+
BIN_LOCATION = '/usr/bin' unless defined?(BIN_LOCATION)
|
25
|
+
LIB_LOCATION = '/usr/lib/one' unless defined?(LIB_LOCATION)
|
26
|
+
ETC_LOCATION = '/etc/one/' unless defined?(ETC_LOCATION)
|
27
|
+
VAR_LOCATION = '/var/lib/one' unless defined?(VAR_LOCATION)
|
28
28
|
else
|
29
|
-
BIN_LOCATION = ONE_LOCATION +
|
30
|
-
LIB_LOCATION = ONE_LOCATION +
|
31
|
-
ETC_LOCATION = ONE_LOCATION +
|
32
|
-
VAR_LOCATION = ONE_LOCATION +
|
29
|
+
BIN_LOCATION = ONE_LOCATION + '/bin' unless defined?(BIN_LOCATION)
|
30
|
+
LIB_LOCATION = ONE_LOCATION + '/lib' unless defined?(LIB_LOCATION)
|
31
|
+
ETC_LOCATION = ONE_LOCATION + '/etc/' unless defined?(ETC_LOCATION)
|
32
|
+
VAR_LOCATION = ONE_LOCATION + '/var/' unless defined?(VAR_LOCATION)
|
33
33
|
end
|
34
34
|
|
35
35
|
ENV['LANG'] = 'C'
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
$LOAD_PATH << LIB_LOCATION + '/ruby/vendors/rbvmomi/lib'
|
38
|
+
$LOAD_PATH << LIB_LOCATION + '/ruby'
|
39
|
+
$LOAD_PATH << LIB_LOCATION + '/ruby/vcenter_driver'
|
40
40
|
|
41
41
|
require 'rbvmomi'
|
42
42
|
require 'yaml'
|
@@ -70,13 +70,13 @@ def error_message(message)
|
|
70
70
|
error_str << message
|
71
71
|
error_str << "\nERROR MESSAGE ------>8--"
|
72
72
|
|
73
|
-
|
73
|
+
error_str
|
74
74
|
end
|
75
75
|
|
76
76
|
def check_valid(parameter, label)
|
77
77
|
if parameter.nil? || parameter.empty?
|
78
78
|
STDERR.puts error_message("The parameter '#{label}' is required for this action.")
|
79
|
-
exit
|
79
|
+
exit(-1)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -85,11 +85,11 @@ def check_item(item, target_class)
|
|
85
85
|
item.name if CHECK_REFS
|
86
86
|
if target_class
|
87
87
|
if !item.instance_of?(target_class)
|
88
|
-
raise "Expecting type 'RbVmomi::VIM::#{target_class}'. "
|
88
|
+
raise "Expecting type 'RbVmomi::VIM::#{target_class}'. " \
|
89
89
|
"Got '#{item.class} instead."
|
90
90
|
end
|
91
91
|
end
|
92
92
|
rescue RbVmomi::Fault => e
|
93
|
-
raise "Reference \"#{item._ref}\" error. The reference does not exist"
|
93
|
+
raise "Reference \"#{item._ref}\" error [#{e.message}]. The reference does not exist"
|
94
94
|
end
|
95
95
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opennebula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.6.
|
4
|
+
version: 5.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|