opennebula-cli 6.0.1 → 6.1.90.pre
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/bin/oneacct +13 -2
- data/bin/oneacl +13 -2
- data/bin/onecluster +13 -2
- data/bin/onedatastore +13 -2
- data/bin/oneflow +115 -11
- data/bin/oneflow-template +17 -7
- data/bin/onegroup +13 -2
- data/bin/onehook +17 -6
- data/bin/onehost +13 -2
- data/bin/oneimage +19 -8
- data/bin/onemarket +33 -2
- data/bin/onemarketapp +21 -10
- data/bin/onesecgroup +13 -2
- data/bin/oneshowback +13 -2
- data/bin/onetemplate +28 -8
- data/bin/oneuser +13 -2
- data/bin/onevcenter +29 -9
- data/bin/onevdc +13 -2
- data/bin/onevm +141 -36
- data/bin/onevmgroup +17 -6
- data/bin/onevnet +17 -6
- data/bin/onevntemplate +17 -6
- data/bin/onevrouter +17 -6
- data/bin/onezone +34 -3
- data/lib/one_helper/oneacct_helper.rb +5 -1
- data/lib/one_helper/onecluster_helper.rb +75 -42
- data/lib/one_helper/onemarket_helper.rb +12 -1
- data/lib/one_helper/onevcenter_helper.rb +2 -2
- data/lib/one_helper/onevm_helper.rb +118 -36
- data/lib/one_helper/onevnet_helper.rb +173 -151
- data/lib/one_helper/onezone_helper.rb +25 -5
- data/lib/one_helper.rb +119 -131
- data/share/schemas/xsd/api_info.xsd +2 -2
- data/share/schemas/xsd/hook_message_api.xsd +1 -1
- data/share/schemas/xsd/hook_message_state.xsd +1 -1
- data/share/schemas/xsd/host.xsd +21 -1
- data/share/schemas/xsd/marketplace.xsd +1 -0
- data/share/schemas/xsd/monitoring_data.xsd +23 -11
- data/share/schemas/xsd/opennebula_configuration.xsd +1 -0
- data/share/schemas/xsd/showback.xsd +1 -0
- data/share/schemas/xsd/vm.xsd +64 -10
- data/share/schemas/xsd/vm_pool.xsd +3 -26
- data/share/schemas/xsd/vnet.xsd +6 -1
- data/share/schemas/xsd/zone.xsd +1 -0
- data/share/schemas/xsd/zone_pool.xsd +2 -1
- metadata +6 -6
data/bin/oneshowback
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
data/bin/onetemplate
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -214,8 +225,17 @@ CommandParser::CmdParser.new(ARGV) do
|
|
214
225
|
Creates a new VM instance from the given Template. This VM can be
|
215
226
|
managed with the 'onevm' command.
|
216
227
|
|
217
|
-
The source Template can be modified
|
218
|
-
|
228
|
+
The source Template can be modified by replacing existing attributes; or
|
229
|
+
adding new DISK or NIC elements. The new attributes can be specified with the
|
230
|
+
command options or the file argument.
|
231
|
+
|
232
|
+
Example:
|
233
|
+
|
234
|
+
- Instantiate a template and add a new NIC
|
235
|
+
onetemplate instantiate 23 --nic private_net
|
236
|
+
|
237
|
+
- Instantiate a template and replace CONTEXT with a new one
|
238
|
+
onetemplate instantiate 23 --startscript /path/to/my/start_script
|
219
239
|
EOT
|
220
240
|
|
221
241
|
command :instantiate, instantiate_desc, :templateid, [:file, nil],
|
@@ -395,9 +415,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
395
415
|
[Admin]: locks only Admin actions.
|
396
416
|
EOT
|
397
417
|
|
398
|
-
command :lock, lock_desc, :
|
418
|
+
command :lock, lock_desc, [:range, :templateid_list],
|
399
419
|
:options => [USE, MANAGE, ADMIN, ALL] do
|
400
|
-
helper.
|
420
|
+
helper.perform_actions(args[0], options, 'Template locked') do |t|
|
401
421
|
if !options[:use].nil?
|
402
422
|
level = 1
|
403
423
|
elsif !options[:manage].nil?
|
@@ -418,8 +438,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
418
438
|
Valid states are: All.
|
419
439
|
EOT
|
420
440
|
|
421
|
-
command :unlock, unlock_desc, :
|
422
|
-
helper.
|
441
|
+
command :unlock, unlock_desc, [:range, :templateid_list] do
|
442
|
+
helper.perform_actions(args[0], options, 'Template unlocked') do |t|
|
423
443
|
t.unlock
|
424
444
|
end
|
425
445
|
end
|
data/bin/oneuser
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
data/bin/onevcenter
CHANGED
@@ -28,14 +28,25 @@ else
|
|
28
28
|
REMOTES_LOCATION = ONE_LOCATION + '/var/remotes/'
|
29
29
|
end
|
30
30
|
|
31
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
31
32
|
if File.directory?(GEMS_LOCATION)
|
32
33
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
33
34
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
34
35
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
35
|
-
|
36
|
-
|
36
|
+
|
37
|
+
# Suppress warnings from Rubygems
|
38
|
+
# https://github.com/OpenNebula/one/issues/5379
|
39
|
+
begin
|
40
|
+
verb = $VERBOSE
|
41
|
+
$VERBOSE = nil
|
42
|
+
require 'rubygems'
|
43
|
+
Gem.use_paths(real_gems_path)
|
44
|
+
ensure
|
45
|
+
$VERBOSE = verb
|
46
|
+
end
|
37
47
|
end
|
38
48
|
end
|
49
|
+
# %%RUBYGEMS_SETUP_END%%
|
39
50
|
|
40
51
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
41
52
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -154,7 +165,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
154
165
|
|
155
166
|
command :list,
|
156
167
|
list_desc,
|
157
|
-
:options => [OBJECT, HOST, DATASTORE, VCENTER, USER, PASS
|
168
|
+
:options => [OBJECT, HOST, DATASTORE, VCENTER, USER, PASS,
|
169
|
+
CLIHelper::CSV_OPT] do
|
158
170
|
begin
|
159
171
|
args = helper.parse_opts(options)
|
160
172
|
args[:filter] = true
|
@@ -167,7 +179,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
167
179
|
|
168
180
|
helper.list_object(options, list)
|
169
181
|
rescue StandardError => e
|
170
|
-
puts e.message
|
182
|
+
STDERR.puts e.message
|
183
|
+
exit 1
|
171
184
|
end
|
172
185
|
|
173
186
|
exit 0
|
@@ -198,7 +211,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
198
211
|
|
199
212
|
helper.list_object(options, list)
|
200
213
|
rescue StandardError => e
|
201
|
-
puts e.message
|
214
|
+
STDERR.puts e.message
|
215
|
+
exit 1
|
202
216
|
end
|
203
217
|
|
204
218
|
exit 0
|
@@ -245,7 +259,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
245
259
|
|
246
260
|
importer.stdout
|
247
261
|
rescue StandardError => e
|
248
|
-
puts e.message
|
262
|
+
STDERR.puts e.message
|
263
|
+
exit 1
|
249
264
|
end
|
250
265
|
|
251
266
|
exit 0
|
@@ -261,7 +276,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
261
276
|
vi_client,
|
262
277
|
options[:object])
|
263
278
|
|
264
|
-
if options[:object] ==
|
279
|
+
if options[:object] == 'networks' && !args.first.nil?
|
265
280
|
indexes = args.first
|
266
281
|
else
|
267
282
|
importer.retrieve_resources(helper.parse_opts(options))
|
@@ -272,7 +287,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
272
287
|
|
273
288
|
importer.stdout
|
274
289
|
rescue StandardError => e
|
275
|
-
puts e.message
|
290
|
+
STDERR.puts e.message
|
291
|
+
exit 1
|
276
292
|
end
|
277
293
|
|
278
294
|
exit 0
|
@@ -294,7 +310,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
294
310
|
:options => [VCENTER, USER, PASS, USE_DEFAULTS, PORT] do
|
295
311
|
con_ops = helper.connection_options('Hosts', options)
|
296
312
|
|
297
|
-
|
313
|
+
begin
|
314
|
+
VCenterDriver::VcImporter.import_clusters(con_ops, options)
|
315
|
+
rescue StandardError
|
316
|
+
exit 1
|
317
|
+
end
|
298
318
|
|
299
319
|
exit 0
|
300
320
|
end
|
data/bin/onevdc
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
data/bin/onevm
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -207,6 +218,27 @@ CommandParser::CmdParser.new(ARGV) do
|
|
207
218
|
:description => 'Market to save oneshot'
|
208
219
|
}
|
209
220
|
|
221
|
+
NIC_ID = {
|
222
|
+
:name => 'nic_id',
|
223
|
+
:large => '--nic-id nic_id',
|
224
|
+
:format => String,
|
225
|
+
:description => 'NIC to use when SSH'
|
226
|
+
}
|
227
|
+
|
228
|
+
CMD = {
|
229
|
+
:name => 'cmd',
|
230
|
+
:large => '--cmd cmd',
|
231
|
+
:format => String,
|
232
|
+
:description => 'CMD to run when SSH'
|
233
|
+
}
|
234
|
+
|
235
|
+
SSH_OPTS = {
|
236
|
+
:name => 'ssh_opts',
|
237
|
+
:large => '--ssh-options options',
|
238
|
+
:format => String,
|
239
|
+
:description => 'SSH options to use'
|
240
|
+
}
|
241
|
+
|
210
242
|
########################################################################
|
211
243
|
# Global Options
|
212
244
|
########################################################################
|
@@ -1273,7 +1305,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1273
1305
|
CONTEXT (any value, **variable substitution will be made**)
|
1274
1306
|
EOT
|
1275
1307
|
|
1276
|
-
command :updateconf, updateconf_desc, :vmid, [:file, nil]
|
1308
|
+
command :updateconf, updateconf_desc, :vmid, [:file, nil],
|
1309
|
+
:options => OpenNebulaHelper::APPEND do
|
1277
1310
|
template = ''
|
1278
1311
|
|
1279
1312
|
begin
|
@@ -1300,7 +1333,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1300
1333
|
template = OpenNebulaHelper.editor_input(template)
|
1301
1334
|
end
|
1302
1335
|
|
1303
|
-
vm.updateconf(template)
|
1336
|
+
vm.updateconf(template, options[:append])
|
1304
1337
|
end
|
1305
1338
|
end
|
1306
1339
|
|
@@ -1310,9 +1343,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1310
1343
|
Valid states are: All.
|
1311
1344
|
EOT
|
1312
1345
|
|
1313
|
-
command :lock, lock_desc, :
|
1346
|
+
command :lock, lock_desc, [:range, :vmid_list],
|
1314
1347
|
:options => [USE, MANAGE, ADMIN, ALL] do
|
1315
|
-
helper.
|
1348
|
+
helper.perform_actions(args[0], options, 'VM locked') do |vm|
|
1316
1349
|
if !options[:use].nil?
|
1317
1350
|
level = 1
|
1318
1351
|
elsif !options[:manage].nil?
|
@@ -1333,8 +1366,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1333
1366
|
Valid states are: All.
|
1334
1367
|
EOT
|
1335
1368
|
|
1336
|
-
command :unlock, unlock_desc, :
|
1337
|
-
helper.
|
1369
|
+
command :unlock, unlock_desc, [:range, :vmid_list] do
|
1370
|
+
helper.perform_actions(args[0], options, 'VM unlocked') do |vm|
|
1338
1371
|
vm.unlock
|
1339
1372
|
end
|
1340
1373
|
end
|
@@ -1347,7 +1380,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1347
1380
|
You can configure the actions in /etc/one/cli/onevm.yaml
|
1348
1381
|
EOT
|
1349
1382
|
|
1350
|
-
command :'create-chart', create_chart_desc,
|
1383
|
+
command :'create-chart', create_chart_desc, :vmid do
|
1351
1384
|
charters = helper.get_charters
|
1352
1385
|
|
1353
1386
|
if charters.nil?
|
@@ -1361,7 +1394,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1361
1394
|
charters.each do |action, time|
|
1362
1395
|
sched = "+#{time[:time].to_i + acc_t}"
|
1363
1396
|
|
1364
|
-
helper.schedule_actions(args[0],
|
1397
|
+
helper.schedule_actions([args[0]].flatten,
|
1365
1398
|
{ :schedule => sched },
|
1366
1399
|
action.to_s,
|
1367
1400
|
time[:warning][:time] + acc_w)
|
@@ -1379,22 +1412,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1379
1412
|
|
1380
1413
|
command :'delete-chart', delete_chart_desc, :vmid, :sched_id do
|
1381
1414
|
helper.perform_action(args[0], {}, 'Charter deleted') do |vm|
|
1382
|
-
rc = vm.
|
1383
|
-
|
1384
|
-
if OpenNebula.is_error?(rc)
|
1385
|
-
STDERR.puts "Error #{rc.message}"
|
1386
|
-
exit(-1)
|
1387
|
-
end
|
1388
|
-
|
1389
|
-
xpath = "USER_TEMPLATE/SCHED_ACTION[ID=#{args[1]}]"
|
1390
|
-
|
1391
|
-
unless vm.retrieve_elements(xpath)
|
1392
|
-
STDERR.puts "Sched action #{args[1]} not found"
|
1393
|
-
exit(-1)
|
1394
|
-
end
|
1395
|
-
|
1396
|
-
vm.delete_element(xpath)
|
1397
|
-
rc = vm.update(vm.user_template_str)
|
1415
|
+
rc = vm.sched_action_delete(args[1])
|
1398
1416
|
|
1399
1417
|
if OpenNebula.is_error?(rc)
|
1400
1418
|
STDERR.puts "Error deleting: #{rc.message}"
|
@@ -1437,25 +1455,33 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1437
1455
|
helper.perform_action(args[0], options, 'Backup') do |vm|
|
1438
1456
|
vm.extend(OpenNebula::VirtualMachineExt)
|
1439
1457
|
|
1440
|
-
# If logger is specified use it, if not use STDOUT
|
1441
|
-
options[:logger].nil? ? log_to = STDOUT : log_to = options[:logger]
|
1442
|
-
|
1443
1458
|
# Read user options
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1459
|
+
if options[:verbose]
|
1460
|
+
log_to = STDOUT
|
1461
|
+
elsif !options[:logger].nil?
|
1462
|
+
log_to = options[:logger]
|
1463
|
+
end
|
1447
1464
|
|
1448
|
-
|
1449
|
-
|
1465
|
+
keep = options.key?(:keep)
|
1466
|
+
|
1467
|
+
if log_to
|
1468
|
+
logger = Logger.new(log_to)
|
1469
|
+
format = '%Y-%m-%d %H:%M:%S'
|
1470
|
+
|
1471
|
+
logger.formatter = proc do |severity, datetime, _p, msg|
|
1472
|
+
"#{datetime.strftime(format)} " \
|
1473
|
+
"#{severity.ljust(5)} : #{msg}\n"
|
1474
|
+
end
|
1450
1475
|
end
|
1451
1476
|
|
1477
|
+
binfo = {}
|
1478
|
+
binfo[:market] = options[:market]
|
1479
|
+
|
1452
1480
|
if options.key?(:oneshot)
|
1453
|
-
binfo = {}
|
1454
1481
|
binfo[:name] = "VM #{vm.id} BACKUP - " \
|
1455
1482
|
"#{Time.now.strftime('%Y%m%d_%k%M')}"
|
1456
1483
|
binfo[:freq] = 1
|
1457
1484
|
binfo[:last] = Time.now.to_i - 100
|
1458
|
-
binfo[:market] = options[:market]
|
1459
1485
|
end
|
1460
1486
|
|
1461
1487
|
begin
|
@@ -1518,6 +1544,85 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1518
1544
|
end
|
1519
1545
|
end
|
1520
1546
|
|
1547
|
+
ssh_desc = <<-EOT.unindent
|
1548
|
+
SSH into VM
|
1549
|
+
|
1550
|
+
Options example:
|
1551
|
+
|
1552
|
+
'-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
|
1553
|
+
EOT
|
1554
|
+
|
1555
|
+
command :ssh,
|
1556
|
+
ssh_desc,
|
1557
|
+
:vmid,
|
1558
|
+
[:login, nil],
|
1559
|
+
:options => [NIC_ID, CMD, SSH_OPTS] do
|
1560
|
+
helper.ssh(args, options)
|
1561
|
+
end
|
1562
|
+
|
1563
|
+
port_desc = <<-EOT.unindent
|
1564
|
+
Get port forwarding from a NIC, e.g:
|
1565
|
+
|
1566
|
+
1.2.3.4@4000 -> 1, means that to connect to VM port 1, you need to
|
1567
|
+
connect to IP 1.2.3.4 in port 4000
|
1568
|
+
EOT
|
1569
|
+
|
1570
|
+
command :'port-forward',
|
1571
|
+
port_desc,
|
1572
|
+
:vmid,
|
1573
|
+
[:port, nil],
|
1574
|
+
:options => NIC_ID do
|
1575
|
+
helper.perform_action(args[0], options, 'Port Forward') do |vm|
|
1576
|
+
rc = vm.info
|
1577
|
+
|
1578
|
+
if OpenNebula.is_error?(rc)
|
1579
|
+
STDERR.puts rc.message
|
1580
|
+
exit(-1)
|
1581
|
+
end
|
1582
|
+
|
1583
|
+
if options[:nic_id]
|
1584
|
+
nic = vm.retrieve_xmlelements(
|
1585
|
+
"//TEMPLATE/NIC[NIC_ID=\"#{options[:nic_id]}\"]"
|
1586
|
+
)[0]
|
1587
|
+
else
|
1588
|
+
nic = vm.retrieve_xmlelements('//TEMPLATE/NIC[SSH="YES"]')[0]
|
1589
|
+
end
|
1590
|
+
|
1591
|
+
nic = vm.retrieve_xmlelements('//TEMPLATE/NIC[1]')[0] if nic.nil?
|
1592
|
+
|
1593
|
+
if nic.nil?
|
1594
|
+
STDERR.puts 'No NIC found'
|
1595
|
+
exit(-1)
|
1596
|
+
end
|
1597
|
+
|
1598
|
+
if nic['EXTERNAL_PORT_RANGE'].nil?
|
1599
|
+
STDERR.puts 'No PORT_RANGE found'
|
1600
|
+
exit(-1)
|
1601
|
+
end
|
1602
|
+
|
1603
|
+
ip = vm.to_hash['VM']['HISTORY_RECORDS']['HISTORY'][-1]['HOSTNAME']
|
1604
|
+
|
1605
|
+
e_range = nic['EXTERNAL_PORT_RANGE'].split(':')
|
1606
|
+
e_start_p = Integer(e_range[0])
|
1607
|
+
e_end_p = Integer(e_range[1])
|
1608
|
+
|
1609
|
+
i_range = nic['INTERNAL_PORT_RANGE'].split('-')
|
1610
|
+
i_start_p = Integer(i_range[0])
|
1611
|
+
i_end_p = Integer(i_range[1].split('/')[0])
|
1612
|
+
|
1613
|
+
if args[1].nil?
|
1614
|
+
start_r = Array(e_start_p..e_end_p)
|
1615
|
+
end_r = Array(i_start_p..i_end_p)
|
1616
|
+
|
1617
|
+
start_r.zip(end_r) do |p1, p2|
|
1618
|
+
puts "#{ip}@#{p1} -> #{p2}"
|
1619
|
+
end
|
1620
|
+
else
|
1621
|
+
puts "#{ip}@#{e_start_p + Integer(args[1]) - 1} -> #{args[1]}"
|
1622
|
+
end
|
1623
|
+
end
|
1624
|
+
end
|
1625
|
+
|
1521
1626
|
# Deprecated commands
|
1522
1627
|
|
1523
1628
|
deprecated_command(:shutdown, 'terminate')
|
data/bin/onevmgroup
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -231,9 +242,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
231
242
|
[Admin]: locks only Admin actions.
|
232
243
|
EOT
|
233
244
|
|
234
|
-
command :lock, lock_desc, :
|
245
|
+
command :lock, lock_desc, [:range, :vmgroupid_list],
|
235
246
|
:options => [USE, MANAGE, ADMIN, ALL] do
|
236
|
-
helper.
|
247
|
+
helper.perform_actions(args[0], options, 'VMGroup locked') do |vmg|
|
237
248
|
if !options[:use].nil?
|
238
249
|
level = 1
|
239
250
|
elsif !options[:manage].nil?
|
@@ -254,8 +265,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
254
265
|
Valid states are: All.
|
255
266
|
EOT
|
256
267
|
|
257
|
-
command :unlock, unlock_desc, :
|
258
|
-
helper.
|
268
|
+
command :unlock, unlock_desc, [:range, :vmgroupid_list] do
|
269
|
+
helper.perform_actions(args[0], options, 'VMGroup unlocked') do |vmg|
|
259
270
|
vmg.unlock
|
260
271
|
end
|
261
272
|
end
|
data/bin/onevnet
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -379,9 +390,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
379
390
|
[Admin]: locks only Admin actions.
|
380
391
|
EOT
|
381
392
|
|
382
|
-
command :lock, lock_desc, :
|
393
|
+
command :lock, lock_desc, [:range, :vnetid_list],
|
383
394
|
:options => [USE, MANAGE, ADMIN, ALL] do
|
384
|
-
helper.
|
395
|
+
helper.perform_actions(args[0], options, 'VNet locked') do |vnet|
|
385
396
|
if !options[:use].nil?
|
386
397
|
level = 1
|
387
398
|
elsif !options[:manage].nil?
|
@@ -402,8 +413,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
402
413
|
Valid states are: All.
|
403
414
|
EOT
|
404
415
|
|
405
|
-
command :unlock, unlock_desc, :
|
406
|
-
helper.
|
416
|
+
command :unlock, unlock_desc, [:range, :vnetid_list] do
|
417
|
+
helper.perform_actions(args[0], options, 'VNet unlocked') do |vnet|
|
407
418
|
vnet.unlock
|
408
419
|
end
|
409
420
|
end
|
data/bin/onevntemplate
CHANGED
@@ -26,14 +26,25 @@ else
|
|
26
26
|
GEMS_LOCATION = ONE_LOCATION + '/share/gems'
|
27
27
|
end
|
28
28
|
|
29
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
29
30
|
if File.directory?(GEMS_LOCATION)
|
30
31
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
31
32
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
32
33
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
33
|
-
|
34
|
-
|
34
|
+
|
35
|
+
# Suppress warnings from Rubygems
|
36
|
+
# https://github.com/OpenNebula/one/issues/5379
|
37
|
+
begin
|
38
|
+
verb = $VERBOSE
|
39
|
+
$VERBOSE = nil
|
40
|
+
require 'rubygems'
|
41
|
+
Gem.use_paths(real_gems_path)
|
42
|
+
ensure
|
43
|
+
$VERBOSE = verb
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
47
|
+
# %%RUBYGEMS_SETUP_END%%
|
37
48
|
|
38
49
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
39
50
|
$LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
|
@@ -339,9 +350,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
339
350
|
[Admin]: locks only Admin actions.
|
340
351
|
EOT
|
341
352
|
|
342
|
-
command :lock, lock_desc, :
|
353
|
+
command :lock, lock_desc, [:range, :templateid_list],
|
343
354
|
:options => [USE, MANAGE, ADMIN, ALL] do
|
344
|
-
helper.
|
355
|
+
helper.perform_actions(args[0], options, 'VN Template locked') do |t|
|
345
356
|
if !options[:use].nil?
|
346
357
|
level = 1
|
347
358
|
elsif !options[:manage].nil?
|
@@ -362,8 +373,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
362
373
|
Valid states are: All.
|
363
374
|
EOT
|
364
375
|
|
365
|
-
command :unlock, unlock_desc, :
|
366
|
-
helper.
|
376
|
+
command :unlock, unlock_desc, [:range, :templateid_list] do
|
377
|
+
helper.perform_actions(args[0], options, 'VN Template unlocked') do |t|
|
367
378
|
t.unlock
|
368
379
|
end
|
369
380
|
end
|