opennebula 5.8.5 → 5.9.80.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/CommandManager.rb +13 -0
- data/lib/VirtualMachineDriver.rb +8 -1
- data/lib/cloud/CloudClient.rb +1 -1
- data/lib/opennebula.rb +4 -1
- data/lib/opennebula/cluster.rb +2 -2
- data/lib/opennebula/datastore.rb +2 -2
- data/lib/opennebula/hook.rb +161 -0
- data/lib/opennebula/hook_log.rb +69 -0
- data/lib/opennebula/hook_pool.rb +82 -0
- data/lib/opennebula/host.rb +2 -2
- data/lib/opennebula/pool_element.rb +2 -2
- data/lib/opennebula/server_cipher_auth.rb +2 -2
- data/lib/opennebula/template.rb +4 -4
- data/lib/opennebula/virtual_machine.rb +3 -3
- data/lib/opennebula/virtual_machine_pool.rb +0 -7
- data/lib/opennebula/virtual_network.rb +2 -2
- data/lib/opennebula/vntemplate.rb +3 -3
- data/lib/vcenter_driver.rb +14 -8
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 321f13bb3966469aa1b7b07f8b83287985be6841
|
4
|
+
data.tar.gz: 204f2304bdecee1142c845ee78d6c676de6c4456
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e358e112f2e6f689f45d8aaab0608b972b15165bf1e17e66346df051027faa676d6ed69355f2305832ae024c7088d243d38206248dd709df6d6557520492dd2c
|
7
|
+
data.tar.gz: a299a7153acfb2a60d3dd7731d23c33bd4e2f7685e4e40459ca8f77275c9b42d42dfbef87aa53a9439f72d569f3554be45741f30ee74601ba818ad4ddb7eb607
|
data/lib/CommandManager.rb
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
require 'pp'
|
18
18
|
require 'open3'
|
19
19
|
require 'timeout'
|
20
|
+
require 'base64'
|
20
21
|
|
21
22
|
# Generic command executor that holds the code shared by all the command
|
22
23
|
# executors.
|
@@ -106,6 +107,18 @@ class GenericCommand
|
|
106
107
|
tmp[0].join(' ').strip
|
107
108
|
end
|
108
109
|
|
110
|
+
def to_xml
|
111
|
+
stdout = @stdout.nil? ? '' : @stdout
|
112
|
+
stderr = @stderr.nil? ? '' : @stderr
|
113
|
+
|
114
|
+
'<EXECUTION_RESULT>' \
|
115
|
+
"<COMMAND>#{@command}</COMMAND>" \
|
116
|
+
"<STDOUT>#{Base64.encode64(stdout)}</STDOUT>" \
|
117
|
+
"<STDERR>#{Base64.encode64(stderr)}</STDERR>" \
|
118
|
+
"<CODE>#{@code}</CODE>" \
|
119
|
+
'</EXECUTION_RESULT>'
|
120
|
+
end
|
121
|
+
|
109
122
|
private
|
110
123
|
|
111
124
|
# Low level command execution. This method has to be redefined
|
data/lib/VirtualMachineDriver.rb
CHANGED
@@ -51,7 +51,8 @@ class VirtualMachineDriver < OpenNebulaDriver
|
|
51
51
|
:detach_nic => "DETACHNIC",
|
52
52
|
:disk_snapshot_create => "DISKSNAPSHOTCREATE",
|
53
53
|
:resize_disk => "RESIZEDISK",
|
54
|
-
:update_sg => "UPDATESG"
|
54
|
+
:update_sg => "UPDATESG",
|
55
|
+
:update_conf => "UPDATECONF"
|
55
56
|
}
|
56
57
|
|
57
58
|
POLL_ATTRIBUTE = OpenNebula::VirtualMachine::Driver::POLL_ATTRIBUTE
|
@@ -96,6 +97,7 @@ class VirtualMachineDriver < OpenNebulaDriver
|
|
96
97
|
register_action(ACTION[:disk_snapshot_create].to_sym, method("disk_snapshot_create"))
|
97
98
|
register_action(ACTION[:resize_disk].to_sym, method("resize_disk"))
|
98
99
|
register_action(ACTION[:update_sg].to_sym, method("update_sg"))
|
100
|
+
register_action(ACTION[:update_conf].to_sym, method("update_conf"))
|
99
101
|
end
|
100
102
|
|
101
103
|
# Decodes the encoded XML driver message received from the core
|
@@ -220,6 +222,11 @@ class VirtualMachineDriver < OpenNebulaDriver
|
|
220
222
|
send_message(ACTION[:cleanup],RESULT[:failure],id,error)
|
221
223
|
end
|
222
224
|
|
225
|
+
def update_conf(id, drv_message)
|
226
|
+
error = "Action not implemented by driver #{self.class}"
|
227
|
+
send_message(ACTION[:update_conf],RESULT[:failure],id,error)
|
228
|
+
end
|
229
|
+
|
223
230
|
private
|
224
231
|
|
225
232
|
# Interface to handle the pending events from the ActionManager Interface
|
data/lib/cloud/CloudClient.rb
CHANGED
data/lib/opennebula.rb
CHANGED
@@ -67,9 +67,12 @@ require 'opennebula/vm_group'
|
|
67
67
|
require 'opennebula/vm_group_pool'
|
68
68
|
require 'opennebula/vntemplate'
|
69
69
|
require 'opennebula/vntemplate_pool'
|
70
|
+
require 'opennebula/hook'
|
71
|
+
require 'opennebula/hook_pool'
|
72
|
+
require 'opennebula/hook_log'
|
70
73
|
|
71
74
|
module OpenNebula
|
72
75
|
|
73
76
|
# OpenNebula version
|
74
|
-
VERSION = '5.
|
77
|
+
VERSION = '5.9.80'
|
75
78
|
end
|
data/lib/opennebula/cluster.rb
CHANGED
@@ -64,8 +64,8 @@ module OpenNebula
|
|
64
64
|
#######################################################################
|
65
65
|
|
66
66
|
# Retrieves the information of the given Cluster.
|
67
|
-
def info()
|
68
|
-
super(CLUSTER_METHODS[:info], 'CLUSTER')
|
67
|
+
def info(decrypt = false)
|
68
|
+
super(CLUSTER_METHODS[:info], 'CLUSTER', decrypt)
|
69
69
|
end
|
70
70
|
|
71
71
|
alias_method :info!, :info
|
data/lib/opennebula/datastore.rb
CHANGED
@@ -76,8 +76,8 @@ module OpenNebula
|
|
76
76
|
#######################################################################
|
77
77
|
|
78
78
|
# Retrieves the information of the given Datastore.
|
79
|
-
def info()
|
80
|
-
super(DATASTORE_METHODS[:info], 'DATASTORE')
|
79
|
+
def info(decrypt = false)
|
80
|
+
super(DATASTORE_METHODS[:info], 'DATASTORE', decrypt)
|
81
81
|
end
|
82
82
|
|
83
83
|
alias_method :info!, :info
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# -------------------------------------------------------------------------- #
|
2
|
+
# Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
|
3
|
+
# #
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
|
+
# not use this file except in compliance with the License. You may obtain #
|
6
|
+
# a copy of the License at #
|
7
|
+
# #
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 #
|
9
|
+
# #
|
10
|
+
# Unless required by applicable law or agreed to in writing, software #
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, #
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
13
|
+
# See the License for the specific language governing permissions and #
|
14
|
+
# limitations under the License. #
|
15
|
+
#--------------------------------------------------------------------------- #
|
16
|
+
|
17
|
+
require 'opennebula/pool_element'
|
18
|
+
|
19
|
+
module OpenNebula
|
20
|
+
|
21
|
+
# Class for representing a Hook object.
|
22
|
+
class Hook < PoolElement
|
23
|
+
|
24
|
+
#######################################################################
|
25
|
+
# Constants and Class Methods
|
26
|
+
#######################################################################
|
27
|
+
HOOK_METHODS = {
|
28
|
+
:allocate => 'hook.allocate',
|
29
|
+
:delete => 'hook.delete',
|
30
|
+
:update => 'hook.update',
|
31
|
+
:rename => 'hook.rename',
|
32
|
+
:info => 'hook.info',
|
33
|
+
:lock => 'hook.lock',
|
34
|
+
:unlock => 'hook.unlock',
|
35
|
+
:retry => 'hook.retry'
|
36
|
+
}
|
37
|
+
|
38
|
+
# Creates a Hook description with just its identifier
|
39
|
+
# this method should be used to create plain Hook objects.
|
40
|
+
# +id+ the id of the user
|
41
|
+
#
|
42
|
+
# Example:
|
43
|
+
# hook = Hook.new(Hook.build_xml(3),rpc_client)
|
44
|
+
#
|
45
|
+
def self.build_xml(pe_id = nil)
|
46
|
+
if pe_id
|
47
|
+
obj_xml = "<HOOK><ID>#{pe_id}</ID></HOOK>"
|
48
|
+
else
|
49
|
+
obj_xml = '<HOOK></HOOK>'
|
50
|
+
end
|
51
|
+
|
52
|
+
XMLElement.build_xml(obj_xml, 'HOOK')
|
53
|
+
end
|
54
|
+
|
55
|
+
# Class constructor
|
56
|
+
def initialize(xml, client)
|
57
|
+
super(xml, client)
|
58
|
+
|
59
|
+
@client = client
|
60
|
+
end
|
61
|
+
|
62
|
+
#######################################################################
|
63
|
+
# XML-RPC Methods for the Template Object
|
64
|
+
#######################################################################
|
65
|
+
|
66
|
+
# Retrieves the information of the given Hook.
|
67
|
+
def info
|
68
|
+
return Error.new('ID not defined') unless @pe_id
|
69
|
+
|
70
|
+
rc = @client.call(HOOK_METHODS[:info], @pe_id, false)
|
71
|
+
|
72
|
+
if !OpenNebula.is_error?(rc)
|
73
|
+
initialize_xml(rc, 'HOOK')
|
74
|
+
rc = nil
|
75
|
+
|
76
|
+
@pe_id = self['ID'].to_i if self['ID']
|
77
|
+
@name = self['NAME'] if self['NAME']
|
78
|
+
end
|
79
|
+
|
80
|
+
rc
|
81
|
+
end
|
82
|
+
|
83
|
+
alias :info! info
|
84
|
+
|
85
|
+
# Allocates a new Hook in OpenNebula
|
86
|
+
#
|
87
|
+
# @param template [String] The contents of the Hook template.
|
88
|
+
#
|
89
|
+
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
90
|
+
# otherwise
|
91
|
+
def allocate(template)
|
92
|
+
super(HOOK_METHODS[:allocate], template)
|
93
|
+
end
|
94
|
+
|
95
|
+
# Deletes the Hook
|
96
|
+
#
|
97
|
+
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
98
|
+
# otherwise
|
99
|
+
def delete
|
100
|
+
call(HOOK_METHODS[:delete], @pe_id)
|
101
|
+
end
|
102
|
+
|
103
|
+
# Replaces the Hook contents
|
104
|
+
#
|
105
|
+
# @param new_template [String] New Hook contents
|
106
|
+
# @param append [true, false] True to append new attributes instead of
|
107
|
+
# replace the whole template
|
108
|
+
#
|
109
|
+
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
110
|
+
# otherwise
|
111
|
+
def update(new_template, append = false)
|
112
|
+
super(HOOK_METHODS[:update], new_template, append ? 1 : 0)
|
113
|
+
end
|
114
|
+
|
115
|
+
# Renames this Hook
|
116
|
+
#
|
117
|
+
# @param name [String] New name for the Hook.
|
118
|
+
#
|
119
|
+
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
120
|
+
# otherwise
|
121
|
+
def rename(name)
|
122
|
+
call(HOOK_METHODS[:rename], @pe_id, name)
|
123
|
+
end
|
124
|
+
|
125
|
+
# Retry a previous execution of the hook.
|
126
|
+
#
|
127
|
+
# @param exec_id [int] Hook execution id.
|
128
|
+
#
|
129
|
+
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
130
|
+
# otherwise
|
131
|
+
def retry(exec_id)
|
132
|
+
call(HOOK_METHODS[:retry], @pe_id, exec_id)
|
133
|
+
end
|
134
|
+
|
135
|
+
#######################################################################
|
136
|
+
# Helpers to get Hook information
|
137
|
+
#######################################################################
|
138
|
+
|
139
|
+
# Returns the group identifier
|
140
|
+
# [return] _Integer_ the element's group ID
|
141
|
+
def gid
|
142
|
+
self['GID'].to_i
|
143
|
+
end
|
144
|
+
|
145
|
+
def owner_id
|
146
|
+
self['UID'].to_i
|
147
|
+
end
|
148
|
+
|
149
|
+
# Lock a Hook
|
150
|
+
def lock(level)
|
151
|
+
call(HOOK_METHODS[:lock], @pe_id, level)
|
152
|
+
end
|
153
|
+
|
154
|
+
# Unlock a Hook
|
155
|
+
def unlock
|
156
|
+
call(HOOK_METHODS[:unlock], @pe_id)
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -------------------------------------------------------------------------- #
|
2
|
+
# Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
|
3
|
+
# #
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
|
+
# not use this file except in compliance with the License. You may obtain #
|
6
|
+
# a copy of the License at #
|
7
|
+
# #
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 #
|
9
|
+
# #
|
10
|
+
# Unless required by applicable law or agreed to in writing, software #
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, #
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
13
|
+
# See the License for the specific language governing permissions and #
|
14
|
+
# limitations under the License. #
|
15
|
+
#--------------------------------------------------------------------------- #
|
16
|
+
|
17
|
+
require 'opennebula/xml_utils'
|
18
|
+
|
19
|
+
module OpenNebula
|
20
|
+
|
21
|
+
# Class representing the HookLog
|
22
|
+
class HookLog < XMLElement
|
23
|
+
|
24
|
+
#######################################################################
|
25
|
+
# Constants and Class attribute accessors
|
26
|
+
#######################################################################
|
27
|
+
|
28
|
+
HOOK_LOG_METHODS = {
|
29
|
+
:info => 'hooklog.info'
|
30
|
+
}
|
31
|
+
|
32
|
+
ROOT_NAME = 'HOOKLOG'
|
33
|
+
|
34
|
+
#######################################################################
|
35
|
+
# Class constructor & Methods
|
36
|
+
#######################################################################
|
37
|
+
|
38
|
+
# +client+ a Client object that represents an XML-RPC connection
|
39
|
+
def initialize(client)
|
40
|
+
super(nil)
|
41
|
+
|
42
|
+
@client = client
|
43
|
+
end
|
44
|
+
|
45
|
+
#######################################################################
|
46
|
+
# XML-RPC Methods for the HookLog object
|
47
|
+
#######################################################################
|
48
|
+
|
49
|
+
def info(min_ts, max_ts, hook_id, rc)
|
50
|
+
rc = @client.call(HOOK_LOG_METHODS[:info],
|
51
|
+
min_ts,
|
52
|
+
max_ts,
|
53
|
+
hook_id,
|
54
|
+
rc)
|
55
|
+
|
56
|
+
if !OpenNebula.is_error?(rc)
|
57
|
+
initialize_xml(rc, ROOT_NAME)
|
58
|
+
|
59
|
+
rc = nil
|
60
|
+
end
|
61
|
+
|
62
|
+
rc
|
63
|
+
end
|
64
|
+
|
65
|
+
alias :info! info
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# -------------------------------------------------------------------------- #
|
2
|
+
# Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
|
3
|
+
# #
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
|
+
# not use this file except in compliance with the License. You may obtain #
|
6
|
+
# a copy of the License at #
|
7
|
+
# #
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 #
|
9
|
+
# #
|
10
|
+
# Unless required by applicable law or agreed to in writing, software #
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, #
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
13
|
+
# See the License for the specific language governing permissions and #
|
14
|
+
# limitations under the License. #
|
15
|
+
#--------------------------------------------------------------------------- #
|
16
|
+
|
17
|
+
require 'opennebula/pool'
|
18
|
+
|
19
|
+
module OpenNebula
|
20
|
+
|
21
|
+
# Class representing a HookPool
|
22
|
+
class HookPool < Pool
|
23
|
+
|
24
|
+
#######################################################################
|
25
|
+
# Constants and Class attribute accessors
|
26
|
+
#######################################################################
|
27
|
+
|
28
|
+
HOOK_POOL_METHODS = {
|
29
|
+
:info => 'hookpool.info'
|
30
|
+
}
|
31
|
+
|
32
|
+
#######################################################################
|
33
|
+
# Class constructor & Pool Methods
|
34
|
+
#######################################################################
|
35
|
+
|
36
|
+
# +client+ a Client object that represents an XML-RPC connection
|
37
|
+
# +user_id+ used to refer to a Pool with Templates from that user
|
38
|
+
def initialize(client, user_id = -1)
|
39
|
+
super('HOOK_POOL', 'HOOK', client)
|
40
|
+
|
41
|
+
@user_id = user_id
|
42
|
+
end
|
43
|
+
|
44
|
+
# Factory method to create Template objects
|
45
|
+
def factory(element_xml)
|
46
|
+
OpenNebula::Hook.new(element_xml, @client)
|
47
|
+
end
|
48
|
+
|
49
|
+
#######################################################################
|
50
|
+
# XML-RPC Methods for the Template Object
|
51
|
+
#######################################################################
|
52
|
+
|
53
|
+
# Retrieves all or part of the Templates in the pool.
|
54
|
+
def info(*args)
|
55
|
+
case args.size
|
56
|
+
when 0
|
57
|
+
info_filter(HOOK_POOL_METHODS[:info], @user_id, -1, -1)
|
58
|
+
when 3
|
59
|
+
info_filter(HOOK_POOL_METHODS[:info], args[0], args[1], args[2])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def info_all
|
64
|
+
super(HOOK_POOL_METHODS[:info])
|
65
|
+
end
|
66
|
+
|
67
|
+
def info_mine
|
68
|
+
super(HOOK_POOL_METHODS[:info])
|
69
|
+
end
|
70
|
+
|
71
|
+
def info_group
|
72
|
+
super(HOOK_POOL_METHODS[:info])
|
73
|
+
end
|
74
|
+
|
75
|
+
alias :info! info
|
76
|
+
alias :info_all! info_all
|
77
|
+
alias :info_mine! info_mine
|
78
|
+
alias :info_group! info_group
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
data/lib/opennebula/host.rb
CHANGED
@@ -86,8 +86,8 @@ module OpenNebula
|
|
86
86
|
#######################################################################
|
87
87
|
|
88
88
|
# Retrieves the information of the given Host.
|
89
|
-
def info()
|
90
|
-
super(HOST_METHODS[:info], 'HOST')
|
89
|
+
def info(decrypt = false)
|
90
|
+
super(HOST_METHODS[:info], 'HOST', decrypt)
|
91
91
|
end
|
92
92
|
|
93
93
|
alias_method :info!, :info
|
@@ -65,10 +65,10 @@ module OpenNebula
|
|
65
65
|
#
|
66
66
|
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
67
67
|
# otherwise
|
68
|
-
def info(xml_method, root_element)
|
68
|
+
def info(xml_method, root_element, decrypt = false)
|
69
69
|
return Error.new('ID not defined') if !@pe_id
|
70
70
|
|
71
|
-
rc = @client.call(xml_method, @pe_id)
|
71
|
+
rc = @client.call(xml_method, @pe_id, decrypt)
|
72
72
|
|
73
73
|
if !OpenNebula.is_error?(rc)
|
74
74
|
initialize_xml(rc, root_element)
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#--------------------------------------------------------------------------- #
|
16
16
|
|
17
17
|
require 'openssl'
|
18
|
-
require 'digest/
|
18
|
+
require 'digest/sha2'
|
19
19
|
|
20
20
|
require 'base64'
|
21
21
|
require 'fileutils'
|
@@ -40,7 +40,7 @@ class OpenNebula::ServerCipherAuth
|
|
40
40
|
|
41
41
|
if !srv_passwd.empty?
|
42
42
|
# truncate token to 32-bytes for Ruby >= 2.4
|
43
|
-
@key = Digest::
|
43
|
+
@key = Digest::SHA256.hexdigest(@srv_passwd)[0..31]
|
44
44
|
else
|
45
45
|
@key = ""
|
46
46
|
end
|
data/lib/opennebula/template.rb
CHANGED
@@ -69,10 +69,10 @@ module OpenNebula
|
|
69
69
|
# Retrieves the information of the given Template.
|
70
70
|
# @param extended [true,false] optional flag to process the template and
|
71
71
|
# include extended information, such as the SIZE for each DISK
|
72
|
-
def info(extended=false)
|
72
|
+
def info(extended=false, decrypt=false)
|
73
73
|
return Error.new('ID not defined') if !@pe_id
|
74
74
|
|
75
|
-
rc = @client.call(TEMPLATE_METHODS[:info], @pe_id, extended)
|
75
|
+
rc = @client.call(TEMPLATE_METHODS[:info], @pe_id, extended, decrypt)
|
76
76
|
|
77
77
|
if !OpenNebula.is_error?(rc)
|
78
78
|
initialize_xml(rc, 'VMTEMPLATE')
|
@@ -98,10 +98,10 @@ module OpenNebula
|
|
98
98
|
end
|
99
99
|
|
100
100
|
# Deletes the Template
|
101
|
-
#
|
101
|
+
#
|
102
102
|
# @param recursive [true,false] optional, deletes the template plus
|
103
103
|
# any image defined in DISK.
|
104
|
-
#
|
104
|
+
#
|
105
105
|
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
106
106
|
# otherwise
|
107
107
|
def delete(recursive=false)
|
@@ -277,8 +277,8 @@ module OpenNebula
|
|
277
277
|
#######################################################################
|
278
278
|
|
279
279
|
# Retrieves the information of the given VirtualMachine.
|
280
|
-
def info()
|
281
|
-
super(VM_METHODS[:info], 'VM')
|
280
|
+
def info(decrypt = false)
|
281
|
+
super(VM_METHODS[:info], 'VM', decrypt)
|
282
282
|
end
|
283
283
|
|
284
284
|
alias_method :info!, :info
|
@@ -468,7 +468,7 @@ module OpenNebula
|
|
468
468
|
# overcommited. Defaults to false
|
469
469
|
# @param ds_id [Integer] The System Datastore where to migrate the VM.
|
470
470
|
# To use the current one, set it to -1
|
471
|
-
# @param mtype [Integer] How to perform the cold migration:
|
471
|
+
# @param mtype [Integer] How to perform the cold migration:
|
472
472
|
# - 0: save - restore,
|
473
473
|
# - 1: power off - boot
|
474
474
|
# - 2: power off hard - boot
|
@@ -50,13 +50,6 @@ module OpenNebula
|
|
50
50
|
@user_id = user_id
|
51
51
|
end
|
52
52
|
|
53
|
-
# Get info extended VM
|
54
|
-
def get_hash_extended
|
55
|
-
rc = info_search(:extended => true)
|
56
|
-
return rc if OpenNebula.is_error?(rc)
|
57
|
-
to_hash
|
58
|
-
end
|
59
|
-
|
60
53
|
# Default Factory Method for the Pools
|
61
54
|
def factory(element_xml)
|
62
55
|
OpenNebula::VirtualMachine.new(element_xml,@client)
|
@@ -70,8 +70,8 @@ module OpenNebula
|
|
70
70
|
#######################################################################
|
71
71
|
|
72
72
|
# Retrieves the information of the given VirtualNetwork.
|
73
|
-
def info()
|
74
|
-
super(VN_METHODS[:info], 'VNET')
|
73
|
+
def info(decrypt = false)
|
74
|
+
super(VN_METHODS[:info], 'VNET', decrypt)
|
75
75
|
end
|
76
76
|
|
77
77
|
alias_method :info!, :info
|
@@ -68,10 +68,10 @@ module OpenNebula
|
|
68
68
|
|
69
69
|
# Retrieves the information of the given VNTemplate.
|
70
70
|
# include extended information, such as the SIZE for each DISK
|
71
|
-
def info()
|
71
|
+
def info(decrypt = false)
|
72
72
|
return Error.new('ID not defined') if !@pe_id
|
73
73
|
|
74
|
-
rc = @client.call(TEMPLATE_METHODS[:info], @pe_id,
|
74
|
+
rc = @client.call(TEMPLATE_METHODS[:info], @pe_id, decrypt)
|
75
75
|
|
76
76
|
if !OpenNebula.is_error?(rc)
|
77
77
|
initialize_xml(rc, 'VNTEMPLATE')
|
@@ -97,7 +97,7 @@ module OpenNebula
|
|
97
97
|
end
|
98
98
|
|
99
99
|
# Deletes the Template
|
100
|
-
#
|
100
|
+
#
|
101
101
|
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
102
102
|
# otherwise
|
103
103
|
def delete()
|
data/lib/vcenter_driver.rb
CHANGED
@@ -21,19 +21,25 @@
|
|
21
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
|
+
GEMS_LOCATION = '/usr/share/one/gems' unless defined?(GEMS_LOCATION)
|
28
29
|
else
|
29
|
-
BIN_LOCATION
|
30
|
-
LIB_LOCATION
|
31
|
-
ETC_LOCATION
|
32
|
-
VAR_LOCATION
|
30
|
+
BIN_LOCATION = ONE_LOCATION + '/bin' unless defined?(BIN_LOCATION)
|
31
|
+
LIB_LOCATION = ONE_LOCATION + '/lib' unless defined?(LIB_LOCATION)
|
32
|
+
ETC_LOCATION = ONE_LOCATION + '/etc/' unless defined?(ETC_LOCATION)
|
33
|
+
VAR_LOCATION = ONE_LOCATION + '/var/' unless defined?(VAR_LOCATION)
|
34
|
+
GEMS_LOCATION = ONE_LOCATION + '/share/gems' unless defined?(GEMS_LOCATION)
|
33
35
|
end
|
34
36
|
|
35
37
|
ENV['LANG'] = 'C'
|
36
38
|
|
39
|
+
if File.directory?(GEMS_LOCATION)
|
40
|
+
Gem.use_paths(GEMS_LOCATION)
|
41
|
+
end
|
42
|
+
|
37
43
|
$LOAD_PATH << LIB_LOCATION + '/ruby/vendors/rbvmomi/lib'
|
38
44
|
$LOAD_PATH << LIB_LOCATION + '/ruby'
|
39
45
|
$LOAD_PATH << LIB_LOCATION + '/ruby/vcenter_driver'
|
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.
|
4
|
+
version: 5.9.80.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -79,6 +79,9 @@ files:
|
|
79
79
|
- lib/opennebula/error.rb
|
80
80
|
- lib/opennebula/group.rb
|
81
81
|
- lib/opennebula/group_pool.rb
|
82
|
+
- lib/opennebula/hook.rb
|
83
|
+
- lib/opennebula/hook_log.rb
|
84
|
+
- lib/opennebula/hook_pool.rb
|
82
85
|
- lib/opennebula/host.rb
|
83
86
|
- lib/opennebula/host_pool.rb
|
84
87
|
- lib/opennebula/image.rb
|
@@ -139,9 +142,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
142
|
version: '0'
|
140
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
144
|
requirements:
|
142
|
-
- - '
|
145
|
+
- - '>'
|
143
146
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
147
|
+
version: 1.3.1
|
145
148
|
requirements: []
|
146
149
|
rubyforge_project:
|
147
150
|
rubygems_version: 2.0.14.1
|