opennebula 4.5.80.beta → 4.5.85.rc1
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.
- data/lib/opennebula.rb +1 -1
- data/lib/opennebula/group.rb +56 -64
- data/lib/opennebula/virtual_machine.rb +6 -3
- metadata +50 -44
- checksums.yaml +0 -7
data/lib/opennebula.rb
CHANGED
data/lib/opennebula/group.rb
CHANGED
|
@@ -37,7 +37,7 @@ module OpenNebula
|
|
|
37
37
|
SELF = -1
|
|
38
38
|
|
|
39
39
|
# Default resource ACL's for group users (create)
|
|
40
|
-
GROUP_DEFAULT_ACLS = "VM+IMAGE+
|
|
40
|
+
GROUP_DEFAULT_ACLS = "VM+IMAGE+TEMPLATE+DOCUMENT"
|
|
41
41
|
ALL_CLUSTERS_IN_ZONE = 10
|
|
42
42
|
|
|
43
43
|
# The default view for group and group admins, must be defined in
|
|
@@ -79,34 +79,29 @@ module OpenNebula
|
|
|
79
79
|
alias_method :info!, :info
|
|
80
80
|
|
|
81
81
|
# Creates a group based in a group definition hash
|
|
82
|
-
# group_hash[:name]
|
|
83
|
-
# group_hash[:
|
|
84
|
-
#
|
|
85
|
-
# group_hash[:user][:password]
|
|
82
|
+
# group_hash[:name] the group name
|
|
83
|
+
# group_hash[:group_admin] the admin user definition hash, see def
|
|
84
|
+
# create_admin_user function description for details.
|
|
86
85
|
# group_hash[:resource_providers]
|
|
87
86
|
# group_hash[:resource_providers][:zone_id]
|
|
88
87
|
# group_hash[:resource_providers][:cluster_id]
|
|
89
88
|
#
|
|
90
89
|
def create(group_hash)
|
|
91
90
|
# Check arguments
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if group_hash[:user][:name] and !group_hash[:admin_group]
|
|
96
|
-
return -1, "Admin user defined but not admin group"
|
|
97
|
-
end
|
|
91
|
+
if !group_hash[:name]
|
|
92
|
+
return OpenNebula::Error.new("Group name not defined")
|
|
93
|
+
end
|
|
98
94
|
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
if group_hash[:group_admin]
|
|
96
|
+
if group_hash[:group_admin][:name] && !group_hash[:group_admin][:password]
|
|
97
|
+
error_msg = "Admin user password not defined"
|
|
98
|
+
return OpenNebula::Error.new(error_msg)
|
|
101
99
|
end
|
|
102
100
|
end
|
|
103
101
|
|
|
104
102
|
# Allocate group
|
|
105
103
|
rc = self.allocate(group_hash[:name])
|
|
106
|
-
|
|
107
|
-
if OpenNebula.is_error?(rc)
|
|
108
|
-
return -1, "Error allocating group: #{rc.message}"
|
|
109
|
-
end
|
|
104
|
+
return rc if OpenNebula.is_error?(rc)
|
|
110
105
|
|
|
111
106
|
# Handle resource providers
|
|
112
107
|
group_hash[:resource_providers].each { |rp|
|
|
@@ -123,24 +118,26 @@ module OpenNebula
|
|
|
123
118
|
rc, msg = create_default_acls(group_hash[:resources])
|
|
124
119
|
|
|
125
120
|
if OpenNebula.is_error?(rc)
|
|
126
|
-
|
|
127
|
-
return
|
|
121
|
+
error_msg = "Error creating group ACL's: #{rc.message}"
|
|
122
|
+
return OpenNebula::Error.new(error_msg)
|
|
128
123
|
end
|
|
129
124
|
|
|
130
|
-
# Create associated admin
|
|
131
|
-
rc =
|
|
125
|
+
# Create associated group admin if needed
|
|
126
|
+
rc = create_admin_user(group_hash)
|
|
132
127
|
|
|
133
128
|
if OpenNebula.is_error?(rc)
|
|
134
129
|
self.delete
|
|
135
|
-
|
|
130
|
+
error_msg = "Error creating admin group: #{rc.message}"
|
|
131
|
+
return OpenNebula::Error.new(error_msg)
|
|
136
132
|
end
|
|
137
133
|
|
|
138
134
|
# Add default Sunstone views for the group
|
|
139
135
|
if group_hash[:views]
|
|
140
|
-
|
|
136
|
+
str = "SUNSTONE_VIEWS=\"#{group_hash[:views].join(",")}\"\n"
|
|
137
|
+
self.update(str, true)
|
|
141
138
|
end
|
|
142
139
|
|
|
143
|
-
return 0
|
|
140
|
+
return 0
|
|
144
141
|
end
|
|
145
142
|
|
|
146
143
|
# Allocates a new Group in OpenNebula
|
|
@@ -264,81 +261,76 @@ module OpenNebula
|
|
|
264
261
|
|
|
265
262
|
# Creates a group admin and user based on the group definition hash
|
|
266
263
|
# @param gdef [Hash] keys are ruby sumbols
|
|
267
|
-
# gdef[:
|
|
268
|
-
# gdef[:
|
|
269
|
-
# gdef[:
|
|
270
|
-
# gdef[:
|
|
271
|
-
# gdef[:
|
|
272
|
-
# gdef[:
|
|
273
|
-
#
|
|
264
|
+
# gdef[:group_admin] the group admin hash
|
|
265
|
+
# gdef[:group_admin][:name] username for group admin
|
|
266
|
+
# gdef[:group_admin][:password] password for group admin
|
|
267
|
+
# gdef[:group_admin][:auth_driver] auth driver for group admin
|
|
268
|
+
# gdef[:group_admin][:resources] resources that group admin manage
|
|
269
|
+
# gdef[:group_admin][:manage_resources] whether group admin manages
|
|
270
|
+
# group users
|
|
271
|
+
# gdef[:resources] resources that group users manage
|
|
274
272
|
#
|
|
275
273
|
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
|
276
|
-
def
|
|
274
|
+
def create_admin_user(gdef)
|
|
277
275
|
|
|
278
|
-
return nil if gdef[:
|
|
276
|
+
return nil if gdef[:group_admin].nil? || gdef[:group_admin][:name].nil?
|
|
279
277
|
|
|
280
|
-
#
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return rc if OpenNebula.is_error?(rc)
|
|
285
|
-
|
|
286
|
-
# Create group admin user
|
|
287
|
-
uadmin = gdef[:user][:name] if gdef[:user]
|
|
288
|
-
upasswd = gdef[:user][:password] if gdef[:user]
|
|
289
|
-
udriver = gdef[:user][:auth_driver] if gdef[:user]
|
|
278
|
+
# Create group admin
|
|
279
|
+
uadmin = gdef[:group_admin][:name]
|
|
280
|
+
upasswd = gdef[:group_admin][:password]
|
|
281
|
+
udriver = gdef[:group_admin][:auth_driver]
|
|
290
282
|
|
|
291
283
|
if !uadmin.nil? && !upasswd.nil?
|
|
292
284
|
|
|
293
|
-
|
|
294
|
-
|
|
285
|
+
group_admin = OpenNebula::User.new(OpenNebula::User.build_xml,
|
|
286
|
+
@client)
|
|
295
287
|
|
|
296
288
|
if udriver
|
|
297
|
-
rc =
|
|
289
|
+
rc = group_admin.allocate(uadmin, upasswd, udriver)
|
|
298
290
|
else
|
|
299
|
-
rc =
|
|
291
|
+
rc = group_admin.allocate(uadmin, upasswd)
|
|
300
292
|
end
|
|
301
293
|
|
|
302
294
|
if OpenNebula.is_error?(rc)
|
|
303
|
-
gadmin.delete
|
|
304
295
|
return rc
|
|
305
296
|
end
|
|
297
|
+
end
|
|
306
298
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
rc = user.addgroup(gadmin.id) if !OpenNebula.is_error?(rc)
|
|
299
|
+
# Set admin user groups to self
|
|
300
|
+
rc = group_admin.chgrp(self.id)
|
|
310
301
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
return rc
|
|
315
|
-
end
|
|
302
|
+
if OpenNebula.is_error?(rc)
|
|
303
|
+
group_admin.delete
|
|
304
|
+
return rc
|
|
316
305
|
end
|
|
317
306
|
|
|
318
307
|
#Create admin group acls
|
|
319
308
|
acls = Array.new
|
|
320
309
|
|
|
321
|
-
acls_str = gdef[:
|
|
310
|
+
acls_str = (gdef[:group_admin][:resources] || \
|
|
311
|
+
gdef[:resources] || GROUP_DEFAULT_ACLS)
|
|
322
312
|
|
|
323
|
-
manage_users = gdef[:
|
|
313
|
+
manage_users = gdef[:group_admin][:manage_users] || "YES"
|
|
324
314
|
|
|
325
315
|
if manage_users.upcase == "YES"
|
|
326
|
-
acls << "
|
|
327
|
-
acls << "@#{gadmin.id} USER/@#{self.id} USE+MANAGE+ADMIN"
|
|
316
|
+
acls << "##{group_admin.id} USER/@#{self.id} CREATE+USE+MANAGE+ADMIN"
|
|
328
317
|
end
|
|
329
318
|
|
|
330
|
-
acls << "
|
|
319
|
+
acls << "##{group_admin.id} #{acls_str}/@#{self.id} " +
|
|
320
|
+
"CREATE+USE+MANAGE"
|
|
331
321
|
|
|
332
322
|
rc, tmp = create_group_acls(acls)
|
|
333
323
|
|
|
334
324
|
if OpenNebula.is_error?(rc)
|
|
335
|
-
|
|
336
|
-
gadmin.delete
|
|
325
|
+
group_admin.delete
|
|
337
326
|
return rc
|
|
338
327
|
end
|
|
339
328
|
|
|
340
329
|
#Set Sunstone Views for the group
|
|
341
|
-
|
|
330
|
+
gtmpl = "GROUP_ADMINS=#{gdef[:group_admin][:name]}\n"
|
|
331
|
+
gtmpl << "GROUP_ADMIN_VIEWS=#{GROUP_ADMIN_SUNSTONE_VIEWS}\n"
|
|
332
|
+
|
|
333
|
+
self.update(gtmpl, true)
|
|
342
334
|
|
|
343
335
|
return nil
|
|
344
336
|
end
|
|
@@ -391,10 +391,13 @@ module OpenNebula
|
|
|
391
391
|
# to use the default type
|
|
392
392
|
# @param hot [true|false] True to save the disk immediately, false will
|
|
393
393
|
# perform the operation when the VM shuts down
|
|
394
|
+
# @param do_template [true|false] True to clone also the VM originating
|
|
395
|
+
# template and replace the disk with the saved image
|
|
394
396
|
#
|
|
395
397
|
# @return [Integer, OpenNebula::Error] the new Image ID in case of
|
|
396
398
|
# success, error otherwise
|
|
397
|
-
def disk_snapshot(disk_id, image_name, image_type="", hot=false
|
|
399
|
+
def disk_snapshot(disk_id, image_name, image_type="", hot=false,
|
|
400
|
+
do_template=false)
|
|
398
401
|
return Error.new('ID not defined') if !@pe_id
|
|
399
402
|
|
|
400
403
|
rc = @client.call(VM_METHODS[:savedisk],
|
|
@@ -402,8 +405,8 @@ module OpenNebula
|
|
|
402
405
|
disk_id,
|
|
403
406
|
image_name,
|
|
404
407
|
image_type,
|
|
405
|
-
hot
|
|
406
|
-
|
|
408
|
+
hot,
|
|
409
|
+
do_template)
|
|
407
410
|
return rc
|
|
408
411
|
end
|
|
409
412
|
|
metadata
CHANGED
|
@@ -1,41 +1,46 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opennebula
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.5.
|
|
4
|
+
version: 4.5.85.rc1
|
|
5
|
+
prerelease: 7
|
|
5
6
|
platform: ruby
|
|
6
7
|
authors:
|
|
7
8
|
- OpenNebula
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
12
|
+
date: 2014-04-11 00:00:00.000000000 Z
|
|
12
13
|
dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
|
14
15
|
name: nokogiri
|
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
16
18
|
requirements:
|
|
17
|
-
- -
|
|
19
|
+
- - ! '>='
|
|
18
20
|
- !ruby/object:Gem::Version
|
|
19
21
|
version: '0'
|
|
20
22
|
type: :runtime
|
|
21
23
|
prerelease: false
|
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
23
26
|
requirements:
|
|
24
|
-
- -
|
|
27
|
+
- - ! '>='
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
29
|
version: '0'
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
|
28
31
|
name: json
|
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
30
34
|
requirements:
|
|
31
|
-
- -
|
|
35
|
+
- - ! '>='
|
|
32
36
|
- !ruby/object:Gem::Version
|
|
33
37
|
version: '0'
|
|
34
38
|
type: :runtime
|
|
35
39
|
prerelease: false
|
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
37
42
|
requirements:
|
|
38
|
-
- -
|
|
43
|
+
- - ! '>='
|
|
39
44
|
- !ruby/object:Gem::Version
|
|
40
45
|
version: '0'
|
|
41
46
|
description: Libraries needed to talk to OpenNebula
|
|
@@ -44,72 +49,73 @@ executables: []
|
|
|
44
49
|
extensions: []
|
|
45
50
|
extra_rdoc_files: []
|
|
46
51
|
files:
|
|
47
|
-
- LICENSE
|
|
48
|
-
- NOTICE
|
|
49
52
|
- lib/opennebula.rb
|
|
50
|
-
- lib/opennebula/
|
|
51
|
-
- lib/opennebula/
|
|
52
|
-
- lib/opennebula/
|
|
53
|
-
- lib/opennebula/
|
|
53
|
+
- lib/opennebula/document_json.rb
|
|
54
|
+
- lib/opennebula/host.rb
|
|
55
|
+
- lib/opennebula/group_pool.rb
|
|
56
|
+
- lib/opennebula/user_pool.rb
|
|
57
|
+
- lib/opennebula/pool.rb
|
|
54
58
|
- lib/opennebula/cluster_pool.rb
|
|
59
|
+
- lib/opennebula/template_pool.rb
|
|
60
|
+
- lib/opennebula/document_pool.rb
|
|
55
61
|
- lib/opennebula/datastore.rb
|
|
56
62
|
- lib/opennebula/datastore_pool.rb
|
|
57
|
-
- lib/opennebula/
|
|
58
|
-
- lib/opennebula/
|
|
59
|
-
- lib/opennebula/document_pool.rb
|
|
63
|
+
- lib/opennebula/xml_pool.rb
|
|
64
|
+
- lib/opennebula/xml_utils.rb
|
|
60
65
|
- lib/opennebula/document_pool_json.rb
|
|
66
|
+
- lib/opennebula/acl_pool.rb
|
|
67
|
+
- lib/opennebula/template.rb
|
|
68
|
+
- lib/opennebula/zone.rb
|
|
69
|
+
- lib/opennebula/client.rb
|
|
70
|
+
- lib/opennebula/cluster.rb
|
|
71
|
+
- lib/opennebula/pool_element.rb
|
|
72
|
+
- lib/opennebula/virtual_machine.rb
|
|
73
|
+
- lib/opennebula/user.rb
|
|
61
74
|
- lib/opennebula/error.rb
|
|
62
|
-
- lib/opennebula/group.rb
|
|
63
|
-
- lib/opennebula/group_pool.rb
|
|
64
|
-
- lib/opennebula/host.rb
|
|
65
|
-
- lib/opennebula/host_pool.rb
|
|
66
75
|
- lib/opennebula/image.rb
|
|
67
|
-
- lib/opennebula/
|
|
68
|
-
- lib/opennebula/
|
|
69
|
-
- lib/opennebula/
|
|
76
|
+
- lib/opennebula/host_pool.rb
|
|
77
|
+
- lib/opennebula/document.rb
|
|
78
|
+
- lib/opennebula/xml_element.rb
|
|
70
79
|
- lib/opennebula/oneflow_client.rb
|
|
71
|
-
- lib/opennebula/pool.rb
|
|
72
|
-
- lib/opennebula/pool_element.rb
|
|
73
|
-
- lib/opennebula/server_cipher_auth.rb
|
|
74
|
-
- lib/opennebula/server_x509_auth.rb
|
|
75
|
-
- lib/opennebula/ssh_auth.rb
|
|
76
|
-
- lib/opennebula/system.rb
|
|
77
|
-
- lib/opennebula/template.rb
|
|
78
|
-
- lib/opennebula/template_pool.rb
|
|
79
|
-
- lib/opennebula/user.rb
|
|
80
|
-
- lib/opennebula/user_pool.rb
|
|
81
|
-
- lib/opennebula/virtual_machine.rb
|
|
82
|
-
- lib/opennebula/virtual_machine_pool.rb
|
|
83
80
|
- lib/opennebula/virtual_network.rb
|
|
81
|
+
- lib/opennebula/image_pool.rb
|
|
84
82
|
- lib/opennebula/virtual_network_pool.rb
|
|
85
|
-
- lib/opennebula/x509_auth.rb
|
|
86
|
-
- lib/opennebula/xml_element.rb
|
|
87
|
-
- lib/opennebula/xml_pool.rb
|
|
88
|
-
- lib/opennebula/xml_utils.rb
|
|
89
|
-
- lib/opennebula/zone.rb
|
|
90
83
|
- lib/opennebula/zone_pool.rb
|
|
84
|
+
- lib/opennebula/group.rb
|
|
85
|
+
- lib/opennebula/system.rb
|
|
86
|
+
- lib/opennebula/virtual_machine_pool.rb
|
|
87
|
+
- lib/opennebula/acl.rb
|
|
88
|
+
- lib/opennebula/ldap_auth.rb
|
|
89
|
+
- lib/opennebula/ldap_auth_spec.rb
|
|
90
|
+
- lib/opennebula/x509_auth.rb
|
|
91
|
+
- lib/opennebula/ssh_auth.rb
|
|
92
|
+
- lib/opennebula/server_x509_auth.rb
|
|
93
|
+
- lib/opennebula/server_cipher_auth.rb
|
|
94
|
+
- NOTICE
|
|
95
|
+
- LICENSE
|
|
91
96
|
homepage: http://opennebula.org
|
|
92
97
|
licenses: []
|
|
93
|
-
metadata: {}
|
|
94
98
|
post_install_message:
|
|
95
99
|
rdoc_options: []
|
|
96
100
|
require_paths:
|
|
97
101
|
- lib
|
|
98
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
|
+
none: false
|
|
99
104
|
requirements:
|
|
100
|
-
- -
|
|
105
|
+
- - ! '>='
|
|
101
106
|
- !ruby/object:Gem::Version
|
|
102
107
|
version: '0'
|
|
103
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
|
+
none: false
|
|
104
110
|
requirements:
|
|
105
|
-
- -
|
|
111
|
+
- - ! '>'
|
|
106
112
|
- !ruby/object:Gem::Version
|
|
107
113
|
version: 1.3.1
|
|
108
114
|
requirements: []
|
|
109
115
|
rubyforge_project:
|
|
110
|
-
rubygems_version:
|
|
116
|
+
rubygems_version: 1.8.23
|
|
111
117
|
signing_key:
|
|
112
|
-
specification_version:
|
|
118
|
+
specification_version: 3
|
|
113
119
|
summary: OpenNebula Client API
|
|
114
120
|
test_files: []
|
|
115
121
|
has_rdoc:
|
checksums.yaml
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
SHA1:
|
|
3
|
-
metadata.gz: 5feec17aea93ff26ef9c4ca5d190709ba5b12c3b
|
|
4
|
-
data.tar.gz: 218fa42198d3b3165ec54bd43fa20028402c8b7f
|
|
5
|
-
SHA512:
|
|
6
|
-
metadata.gz: 4ed7c74a0a4e33a5f23075db69be3d5d8c947f24b1257389ffd8f388fd4463c78f80bdb9dd9d921668a3b02a3647ae8074103b74a6f35553617dbfeffdc3f05a
|
|
7
|
-
data.tar.gz: 11736f325b3b49d35916d0a000a2519de8ea1b925720897914890bd0d9b8d35812bf7634d35b1e6333017106585e00f5ad59526fbb48fafeb4b7ee0e101c03f8
|