opennebula-cli 6.4.6 → 6.5.80.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/oneacct +2 -2
- data/bin/oneacl +1 -1
- data/bin/onecluster +1 -1
- data/bin/onedatastore +1 -1
- data/bin/oneflow +2 -3
- data/bin/oneflow-template +2 -2
- data/bin/onegroup +1 -1
- data/bin/onehook +1 -1
- data/bin/onehost +1 -1
- data/bin/oneimage +52 -3
- data/bin/oneirb +1 -1
- data/bin/onelog +1 -1
- data/bin/onemarket +1 -1
- data/bin/onemarketapp +1 -1
- data/bin/onesecgroup +1 -1
- data/bin/oneshowback +2 -2
- data/bin/onetemplate +1 -1
- data/bin/oneuser +4 -4
- data/bin/onevcenter +2 -2
- data/bin/onevdc +1 -1
- data/bin/onevm +146 -161
- data/bin/onevmgroup +1 -1
- data/bin/onevnet +16 -4
- data/bin/onevntemplate +1 -1
- data/bin/onevrouter +1 -1
- data/bin/onezone +6 -2
- data/lib/cli_helper.rb +20 -20
- data/lib/command_parser.rb +1 -1
- data/lib/one_helper/oneacct_helper.rb +1 -1
- data/lib/one_helper/oneacl_helper.rb +1 -1
- data/lib/one_helper/onecluster_helper.rb +1 -1
- data/lib/one_helper/onedatastore_helper.rb +1 -1
- data/lib/one_helper/oneflow_helper.rb +2 -2
- data/lib/one_helper/oneflowtemplate_helper.rb +2 -2
- data/lib/one_helper/onegroup_helper.rb +1 -1
- data/lib/one_helper/onehook_helper.rb +1 -1
- data/lib/one_helper/onehost_helper.rb +15 -60
- data/lib/one_helper/oneimage_helper.rb +73 -12
- data/lib/one_helper/onemarket_helper.rb +1 -1
- data/lib/one_helper/onemarketapp_helper.rb +3 -3
- data/lib/one_helper/onequota_helper.rb +1 -1
- data/lib/one_helper/onesecgroup_helper.rb +1 -1
- data/lib/one_helper/onetemplate_helper.rb +1 -2
- data/lib/one_helper/oneuser_helper.rb +1 -1
- data/lib/one_helper/onevcenter_helper.rb +7 -7
- data/lib/one_helper/onevdc_helper.rb +1 -1
- data/lib/one_helper/onevm_helper.rb +68 -57
- data/lib/one_helper/onevmgroup_helper.rb +1 -1
- data/lib/one_helper/onevnet_helper.rb +37 -3
- data/lib/one_helper/onevntemplate_helper.rb +1 -1
- data/lib/one_helper/onevrouter_helper.rb +1 -1
- data/lib/one_helper/onezone_helper.rb +1 -1
- data/lib/one_helper.rb +7 -8
- data/share/schemas/xsd/acct.xsd +28 -0
- data/share/schemas/xsd/hook_message_state.xsd +5 -1
- data/share/schemas/xsd/host.xsd +3 -23
- data/share/schemas/xsd/image.xsd +18 -0
- data/share/schemas/xsd/opennebula_configuration.xsd +2 -0
- data/share/schemas/xsd/vm.xsd +30 -0
- data/share/schemas/xsd/vnet.xsd +28 -0
- data/share/schemas/xsd/vnet_pool.xsd +28 -0
- metadata +6 -6
data/bin/onevm
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -195,32 +195,6 @@ CommandParser::CmdParser.new(ARGV) do
|
|
195
195
|
:description => 'lock all actions'
|
196
196
|
}
|
197
197
|
|
198
|
-
LOGGER = {
|
199
|
-
:name => 'logger',
|
200
|
-
:large => '--logger logger',
|
201
|
-
:format => String,
|
202
|
-
:description => 'Set logger to STDOUT or FILE'
|
203
|
-
}
|
204
|
-
|
205
|
-
KEEP = {
|
206
|
-
:name => 'keep',
|
207
|
-
:large => '--keep-backup',
|
208
|
-
:description => 'Keep previous backup when creating a new one'
|
209
|
-
}
|
210
|
-
|
211
|
-
ONESHOT = {
|
212
|
-
:name => 'oneshot',
|
213
|
-
:large => '--oneshot',
|
214
|
-
:description => 'Take an snapshot of the VM without saving backup info'
|
215
|
-
}
|
216
|
-
|
217
|
-
MARKET = {
|
218
|
-
:name => 'market',
|
219
|
-
:large => '--market market_id',
|
220
|
-
:format => Integer,
|
221
|
-
:description => 'Market to save oneshot'
|
222
|
-
}
|
223
|
-
|
224
198
|
NIC_ID = {
|
225
199
|
:name => 'nic_id',
|
226
200
|
:large => '--nic-id nic_id',
|
@@ -249,8 +223,42 @@ CommandParser::CmdParser.new(ARGV) do
|
|
249
223
|
:description => 'VNC client to use'
|
250
224
|
}
|
251
225
|
|
226
|
+
PCI = {
|
227
|
+
:name => 'pci',
|
228
|
+
:large => '--pci short_address',
|
229
|
+
:format => String,
|
230
|
+
:description => 'Select PCI device by its short address'
|
231
|
+
}
|
232
|
+
|
233
|
+
PCI_DEVICE = {
|
234
|
+
:name => 'pci_device',
|
235
|
+
:large => '--pci_device device ID',
|
236
|
+
:format => String,
|
237
|
+
:description => 'Select PCI device by its device ID'
|
238
|
+
}
|
239
|
+
|
240
|
+
PCI_VENDOR = {
|
241
|
+
:name => 'pci_vendor',
|
242
|
+
:large => '--pci_vendor vendor ID',
|
243
|
+
:format => String,
|
244
|
+
:description => 'Select PCI device by its vendor ID'
|
245
|
+
}
|
246
|
+
|
247
|
+
PCI_CLASS = {
|
248
|
+
:name => 'pci_class',
|
249
|
+
:large => '--pci_class class ID',
|
250
|
+
:format => String,
|
251
|
+
:description => 'Select PCI device by its class ID'
|
252
|
+
}
|
253
|
+
|
254
|
+
RESET_BACKUP = {
|
255
|
+
:name => 'reset',
|
256
|
+
:large => '--reset',
|
257
|
+
:description => 'Creates a new backup image, from a new full backup (only for incremental)'
|
258
|
+
}
|
259
|
+
|
252
260
|
OpenNebulaHelper::TEMPLATE_OPTIONS_VM.delete_if do |v|
|
253
|
-
[
|
261
|
+
%w[as_gid as_uid].include?(v[:name])
|
254
262
|
end
|
255
263
|
|
256
264
|
########################################################################
|
@@ -713,7 +721,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
713
721
|
end
|
714
722
|
|
715
723
|
resume_desc = <<-EOT.unindent
|
716
|
-
Resumes the execution of a saved VM
|
724
|
+
Resumes the execution of the a saved VM
|
717
725
|
|
718
726
|
States: STOPPED, SUSPENDED, UNDEPLOYED, POWEROFF, UNKNOWN
|
719
727
|
EOT
|
@@ -747,7 +755,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
747
755
|
States for success/failure recovers: Any ACTIVE state.
|
748
756
|
States for a retry recover: Any *FAILURE state
|
749
757
|
States for delete: Any
|
750
|
-
States for recreate: Any but
|
758
|
+
States for delete-recreate: Any but STOP/UNDEPLOYED
|
751
759
|
States for delete-db: Any
|
752
760
|
EOT
|
753
761
|
|
@@ -853,8 +861,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
853
861
|
end
|
854
862
|
|
855
863
|
nic_attach_desc = <<-EOT.unindent
|
856
|
-
Attaches a NIC to a
|
857
|
-
|
864
|
+
Attaches a NIC to a VM. When using --file add only one NIC instance.
|
865
|
+
|
866
|
+
To hotplug a PCI device and use it as a NIC interface in the VM select
|
867
|
+
it with --pci (short_address) or --pci_device (device ID),
|
868
|
+
--pci_class (class ID) and/or --pci_vendor (vendor ID).
|
858
869
|
|
859
870
|
To attach a nic alias, use --file or --alias option.
|
860
871
|
|
@@ -866,7 +877,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
866
877
|
OneVMHelper::NETWORK,
|
867
878
|
OneVMHelper::IP,
|
868
879
|
OneVMHelper::ALIAS,
|
869
|
-
OneVMHelper::NIC_NAME
|
880
|
+
OneVMHelper::NIC_NAME,
|
881
|
+
PCI,
|
882
|
+
PCI_CLASS,
|
883
|
+
PCI_VENDOR,
|
884
|
+
PCI_DEVICE] do
|
870
885
|
if options[:file].nil? && options[:network].nil?
|
871
886
|
STDERR.puts 'Provide a template file or a network:'
|
872
887
|
STDERR.puts "\t--file <file>"
|
@@ -878,36 +893,36 @@ CommandParser::CmdParser.new(ARGV) do
|
|
878
893
|
template = File.read(options[:file])
|
879
894
|
else
|
880
895
|
network_id = options[:network]
|
881
|
-
ip
|
882
|
-
nic_alias
|
883
|
-
nic_name
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
896
|
+
ip = options[:ip]
|
897
|
+
nic_alias = options[:alias]
|
898
|
+
nic_name = options[:nic_name]
|
899
|
+
|
900
|
+
is_pci = [:pci, :pci_device, :pci_vendor, :pci_class].any? do |o|
|
901
|
+
!options[o].nil?
|
902
|
+
end
|
903
|
+
|
904
|
+
if is_pci
|
905
|
+
pcia = options[:pci]
|
906
|
+
pcid = options[:pci_device]
|
907
|
+
pcic = options[:pci_class]
|
908
|
+
pciv = options[:pci_vendor]
|
909
|
+
|
910
|
+
template = 'PCI = [ TYPE = NIC'
|
911
|
+
template << ", NETWORK_ID = #{network_id}"
|
912
|
+
template << ", SHORT_ADDRESS = \"#{pcia}\"" if pcia
|
913
|
+
template << ", DEVICE = \"#{pcid}\"" if pcid
|
914
|
+
template << ", CLASS = \"#{pcic}\"" if pcic
|
915
|
+
template << ", VENDOR = \"#{pciv}\"" if pciv
|
916
|
+
elsif nic_alias
|
917
|
+
template = "NIC_ALIAS = [ PARENT = #{nic_alias}"
|
918
|
+
template << ", NETWORK_ID = #{network_id}"
|
899
919
|
else
|
900
|
-
|
901
|
-
template = "NIC = [ NETWORK_ID = #{network_id} ]"
|
902
|
-
elsif !nic_alias && nic_name
|
903
|
-
template = "NIC = [ NETWORK_ID = #{network_id},
|
904
|
-
NAME = #{nic_name} ]"
|
905
|
-
else
|
906
|
-
template = "NIC_ALIAS = \
|
907
|
-
[ NETWORK_ID = #{network_id},\
|
908
|
-
PARENT = #{nic_alias} ]"
|
909
|
-
end
|
920
|
+
template = "NIC = [ NETWORK_ID = #{network_id}"
|
910
921
|
end
|
922
|
+
|
923
|
+
template << ", IP = #{ip}" if ip
|
924
|
+
template << ", NAME = #{nic_name}" if nic_name
|
925
|
+
template << ']'
|
911
926
|
end
|
912
927
|
|
913
928
|
helper.perform_action(args[0], options, 'Attaching NIC') do |vm|
|
@@ -929,6 +944,40 @@ CommandParser::CmdParser.new(ARGV) do
|
|
929
944
|
end
|
930
945
|
end
|
931
946
|
|
947
|
+
nic_update_desc = <<-EOT.unindent
|
948
|
+
Updates a NIC for a VM. In case the VM is running, trigger NIC update on the host.
|
949
|
+
|
950
|
+
States: Almost all, except BOOT*, MIGRATE and HOTPLUG-NIC
|
951
|
+
EOT
|
952
|
+
|
953
|
+
command :"nic-update", nic_update_desc, :vmid, :nicid,
|
954
|
+
[:file, nil], :options => OpenNebulaHelper::APPEND do
|
955
|
+
vm_id = args[0].to_i
|
956
|
+
nic_id = args[1].to_i
|
957
|
+
file = args[2]
|
958
|
+
helper.perform_action(vm_id, options, 'Updating VM NIC') do |obj|
|
959
|
+
if options[:append]
|
960
|
+
str = OpenNebulaHelper
|
961
|
+
.append_template(vm_id, obj, file,
|
962
|
+
"TEMPLATE/NIC[NIC_ID=#{nic_id}]")
|
963
|
+
else
|
964
|
+
str = OpenNebulaHelper
|
965
|
+
.update_template(vm_id, obj, file,
|
966
|
+
"TEMPLATE/NIC[NIC_ID=#{nic_id}]")
|
967
|
+
end
|
968
|
+
|
969
|
+
# Ensure the updated attributes are in NIC section
|
970
|
+
unless str.gsub(' ', '').match(/NIC=\[/)
|
971
|
+
str = "NIC=[\n#{str.split("\n").join(",\n")}]"
|
972
|
+
end
|
973
|
+
|
974
|
+
helper.set_client(options)
|
975
|
+
obj = helper.retrieve_resource(obj.id)
|
976
|
+
|
977
|
+
obj.nic_update(nic_id, str, options[:append])
|
978
|
+
end
|
979
|
+
end
|
980
|
+
|
932
981
|
sg_attach_desc = <<-EOT.unindent
|
933
982
|
Attaches a Security Group to a VM.
|
934
983
|
|
@@ -1252,10 +1301,6 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1252
1301
|
|
1253
1302
|
if options[:xml]
|
1254
1303
|
puts pool.to_xml
|
1255
|
-
elsif options[:json]
|
1256
|
-
puts JSON.pretty_generate(pool.to_hash)
|
1257
|
-
elsif options[:yaml]
|
1258
|
-
puts pool.to_hash.to_yaml
|
1259
1304
|
else
|
1260
1305
|
table.show(pool.to_hash, options)
|
1261
1306
|
end
|
@@ -1285,7 +1330,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1285
1330
|
end
|
1286
1331
|
|
1287
1332
|
resize_desc = <<-EOT.unindent
|
1288
|
-
Resizes the capacity of a Virtual Machine
|
1333
|
+
Resizes the capacity of a Virtual Machine (offline, the VM cannot be
|
1334
|
+
RUNNING)
|
1289
1335
|
|
1290
1336
|
EOT
|
1291
1337
|
|
@@ -1343,8 +1389,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1343
1389
|
updateconf_desc = <<-EOT.unindent
|
1344
1390
|
Updates the configuration of a VM. Valid states are: running, pending,
|
1345
1391
|
failure, poweroff, undeploy, hold or cloning.
|
1346
|
-
In running state only changes in CONTEXT take effect
|
1347
|
-
other values may need a VM restart.
|
1392
|
+
In running state only changes in CONTEXT and BACKUP_CONFIG take effect
|
1393
|
+
immediately, other values may need a VM restart.
|
1348
1394
|
|
1349
1395
|
This command accepts a template file or opens an editor, the full list of
|
1350
1396
|
configuration attributes are:
|
@@ -1355,6 +1401,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1355
1401
|
GRAPHICS = ["TYPE", "LISTEN", "PASSWD", "KEYMAP" ]
|
1356
1402
|
RAW = ["DATA", "DATA_VMX", "TYPE", "VALIDATE"]
|
1357
1403
|
CPU_MODEL = ["MODEL"]
|
1404
|
+
BACKUP_CONFIG = ["FS_FREEZE", "KEEP_LAST", "BACKUP_VOLATILE", "MODE"]
|
1358
1405
|
CONTEXT (any value, **variable substitution will be made**)
|
1359
1406
|
EOT
|
1360
1407
|
|
@@ -1379,10 +1426,15 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1379
1426
|
exit(-1)
|
1380
1427
|
end
|
1381
1428
|
|
1429
|
+
backup = vm.template_like_str('BACKUPS', true,
|
1430
|
+
'BACKUP_CONFIG')
|
1382
1431
|
template = vm.template_like_str('TEMPLATE', true,
|
1383
1432
|
'OS | FEATURES | INPUT | '\
|
1384
1433
|
'GRAPHICS | RAW | CONTEXT | '\
|
1385
1434
|
'CPU_MODEL')
|
1435
|
+
|
1436
|
+
template << "\n" << backup
|
1437
|
+
|
1386
1438
|
template = OpenNebulaHelper.editor_input(template)
|
1387
1439
|
end
|
1388
1440
|
|
@@ -1455,12 +1507,10 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1455
1507
|
charters.each do |action, time|
|
1456
1508
|
sched = "+#{time[:time].to_i + acc_t + diff_stime}"
|
1457
1509
|
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
exit(-1) if rc < 0
|
1510
|
+
helper.schedule_actions([args[0]].flatten,
|
1511
|
+
{ :schedule => sched },
|
1512
|
+
action.to_s,
|
1513
|
+
time[:warning][:time] + acc_w)
|
1464
1514
|
|
1465
1515
|
acc_t += time[:time].to_i
|
1466
1516
|
acc_w += time[:warning][:time].to_i
|
@@ -1502,108 +1552,43 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1502
1552
|
end
|
1503
1553
|
|
1504
1554
|
backup_vm_desc = <<-EOT.unindent
|
1505
|
-
Creates a VM backup
|
1555
|
+
Creates a VM backup on the given datastore
|
1556
|
+
|
1557
|
+
States: RUNNING, POWEROFF
|
1506
1558
|
EOT
|
1507
1559
|
|
1508
1560
|
command :backup,
|
1509
1561
|
backup_vm_desc,
|
1510
1562
|
:vmid,
|
1511
|
-
:options => [
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
# Read user options
|
1523
|
-
if options[:verbose]
|
1524
|
-
log_to = STDOUT
|
1525
|
-
elsif !options[:logger].nil?
|
1526
|
-
log_to = options[:logger]
|
1527
|
-
end
|
1528
|
-
|
1529
|
-
keep = options.key?(:keep)
|
1530
|
-
|
1531
|
-
if log_to
|
1532
|
-
logger = Logger.new(log_to)
|
1533
|
-
format = '%Y-%m-%d %H:%M:%S'
|
1534
|
-
|
1535
|
-
logger.formatter = proc do |severity, datetime, _p, msg|
|
1536
|
-
"#{datetime.strftime(format)} " \
|
1537
|
-
"#{severity.ljust(5)} : #{msg}\n"
|
1538
|
-
end
|
1539
|
-
end
|
1540
|
-
|
1541
|
-
binfo = {}
|
1542
|
-
binfo[:market] = options[:market]
|
1543
|
-
|
1544
|
-
if options.key?(:oneshot)
|
1545
|
-
binfo[:name] = "VM #{vm.id} BACKUP - " \
|
1546
|
-
"#{Time.now.strftime('%Y%m%d_%k%M')}"
|
1547
|
-
binfo[:freq] = 1
|
1548
|
-
binfo[:last] = Time.now.to_i - 100
|
1549
|
-
end
|
1550
|
-
|
1551
|
-
begin
|
1552
|
-
rc = vm.backup(keep, logger, binfo)
|
1553
|
-
|
1554
|
-
if OpenNebula.is_error?(rc)
|
1555
|
-
STDERR.puts rc.message
|
1556
|
-
exit(-1)
|
1557
|
-
else
|
1558
|
-
0
|
1559
|
-
end
|
1560
|
-
rescue StandardError => e
|
1561
|
-
STDERR.puts e
|
1562
|
-
exit(-1)
|
1563
|
-
end
|
1564
|
-
end
|
1565
|
-
end
|
1566
|
-
|
1567
|
-
restore_vm_desc = <<-EOT.unindent
|
1568
|
-
Restores a VM from a previous backup
|
1569
|
-
EOT
|
1570
|
-
|
1571
|
-
command :restore,
|
1572
|
-
restore_vm_desc,
|
1573
|
-
:vmid,
|
1574
|
-
:options => [OneDatastoreHelper::DATASTORE, LOGGER] do
|
1575
|
-
require 'logger'
|
1576
|
-
|
1577
|
-
unless options[:datastore]
|
1578
|
-
STDERR.puts 'ERROR: no datastore given'
|
1563
|
+
:options => [RESET_BACKUP,
|
1564
|
+
OneDatastoreHelper::DATASTORE,
|
1565
|
+
OneVMHelper::SCHEDULE,
|
1566
|
+
OneVMHelper::WEEKLY,
|
1567
|
+
OneVMHelper::MONTHLY,
|
1568
|
+
OneVMHelper::YEARLY,
|
1569
|
+
OneVMHelper::HOURLY,
|
1570
|
+
OneVMHelper::END_TIME] do
|
1571
|
+
if options[:datastore].nil?
|
1572
|
+
STDERR.puts 'Datastore to save the backup is mandatory: '
|
1573
|
+
STDERR.puts "\t -d datastore_id | name"
|
1579
1574
|
exit(-1)
|
1580
1575
|
end
|
1581
1576
|
|
1582
|
-
|
1583
|
-
vm.extend(OpenNebula::VirtualMachineExt)
|
1577
|
+
reset = options[:reset] == true
|
1584
1578
|
|
1585
|
-
|
1586
|
-
options[:
|
1587
|
-
logger = Logger.new(log_to)
|
1588
|
-
format = '%Y-%m-%d %H:%M:%S'
|
1579
|
+
if !options[:schedule].nil?
|
1580
|
+
options[:args] = options[:datastore]
|
1589
1581
|
|
1590
|
-
|
1591
|
-
|
1592
|
-
end
|
1582
|
+
helper.schedule_actions([args[0]], options, @comm_name)
|
1583
|
+
else
|
1593
1584
|
|
1594
|
-
|
1595
|
-
rc = vm.
|
1585
|
+
helper.perform_action(args[0], options, 'Backup') do |vm|
|
1586
|
+
rc = vm.backup(options[:datastore], reset)
|
1596
1587
|
|
1597
1588
|
if OpenNebula.is_error?(rc)
|
1598
|
-
STDERR.puts rc.message
|
1589
|
+
STDERR.puts "Error creating VM backup: #{rc.message}"
|
1599
1590
|
exit(-1)
|
1600
|
-
else
|
1601
|
-
puts "ID: #{rc}"
|
1602
|
-
0
|
1603
1591
|
end
|
1604
|
-
rescue StandardError => e
|
1605
|
-
STDERR.puts e
|
1606
|
-
exit(-1)
|
1607
1592
|
end
|
1608
1593
|
end
|
1609
1594
|
end
|
data/bin/onevmgroup
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
data/bin/onevnet
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -114,6 +114,13 @@ CommandParser::CmdParser.new(ARGV) do
|
|
114
114
|
:description => 'No recover action possible, delete the Virtual Network'
|
115
115
|
}
|
116
116
|
|
117
|
+
RETRY = {
|
118
|
+
:name => 'retry',
|
119
|
+
:large => '--retry',
|
120
|
+
:description => 'Recover a Virtual Network by retrying the last ' \
|
121
|
+
'failed action'
|
122
|
+
}
|
123
|
+
|
117
124
|
########################################################################
|
118
125
|
# Global Options
|
119
126
|
########################################################################
|
@@ -363,6 +370,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
363
370
|
update_desc = <<-EOT.unindent
|
364
371
|
Update the template contents. If a path is not provided the editor will
|
365
372
|
be launched to modify the current content.
|
373
|
+
|
374
|
+
Note: Triggers Virtual Machine updates for used leases.
|
366
375
|
EOT
|
367
376
|
|
368
377
|
command :update, update_desc, :vnetid, [:file, nil],
|
@@ -456,19 +465,22 @@ CommandParser::CmdParser.new(ARGV) do
|
|
456
465
|
YOU NEED TO MANUALLY CHECK THE VN STATUS, to decide if the
|
457
466
|
operation was successful or not, or if it can be retried.
|
458
467
|
|
459
|
-
States for success
|
460
|
-
States for
|
468
|
+
States for success recovers: LOCK_CREATE, LOCK_DELETE, UPDATE_FAILURE state.
|
469
|
+
States for failure recovers: LOCK_CREATE, LOCK_DELETE state.
|
470
|
+
States for a retry recover: UPDATE_FAILURE
|
461
471
|
States for delete: Any but READY
|
462
472
|
EOT
|
463
473
|
|
464
474
|
command :recover, recover_desc, [:range, :vmid_list],
|
465
|
-
:options => [SUCCESS, FAILURE, DELETE] do
|
475
|
+
:options => [SUCCESS, FAILURE, DELETE, RETRY] do
|
466
476
|
if !options[:success].nil?
|
467
477
|
result = 1
|
468
478
|
elsif !options[:failure].nil?
|
469
479
|
result = 0
|
470
480
|
elsif !options[:delete].nil?
|
471
481
|
result = 2
|
482
|
+
elsif !options[:retry].nil?
|
483
|
+
result = 3
|
472
484
|
else
|
473
485
|
error_message = <<-EOT.unindent
|
474
486
|
Need to specify the result of the pending action.
|
data/bin/onevntemplate
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
data/bin/onevrouter
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
data/bin/onezone
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# -------------------------------------------------------------------------- #
|
4
|
-
# Copyright 2002-
|
4
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
5
5
|
# #
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
7
7
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -246,11 +246,15 @@ CommandParser::CmdParser.new(ARGV) do
|
|
246
246
|
|
247
247
|
command :serversync, sync_desc, :server, :options => [DATABASE] do
|
248
248
|
begin
|
249
|
+
# Suppress augeas require warning message
|
250
|
+
$VERBOSE = nil
|
251
|
+
|
252
|
+
gem 'augeas', '~> 0.6'
|
249
253
|
require 'augeas'
|
250
254
|
rescue Gem::LoadError
|
251
255
|
STDERR.puts(
|
252
256
|
'Augeas gem is not installed, run `gem install ' \
|
253
|
-
'
|
257
|
+
'augeas -v \'0.6\'` to install it'
|
254
258
|
)
|
255
259
|
exit(-1)
|
256
260
|
end
|
data/lib/cli_helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -20,7 +20,7 @@ require 'csv'
|
|
20
20
|
module CLIHelper
|
21
21
|
|
22
22
|
# Available operators for filtering operations
|
23
|
-
FILTER_OPS = [
|
23
|
+
FILTER_OPS = %w[= != < <= > >= ~]
|
24
24
|
|
25
25
|
# CLI general options
|
26
26
|
LIST = {
|
@@ -182,23 +182,23 @@ module CLIHelper
|
|
182
182
|
ANSI_YELLOW = "\33[33m"
|
183
183
|
|
184
184
|
# CLI states
|
185
|
-
OK_STATES = [
|
186
|
-
BAD_STATES = [
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
REGULAR_STATES = [
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
185
|
+
OK_STATES = %w[runn rdy on SUCCESS RUNNING]
|
186
|
+
BAD_STATES = %w[fail
|
187
|
+
err
|
188
|
+
error
|
189
|
+
ERROR
|
190
|
+
FAILED_DEPLOYING
|
191
|
+
FAILED_DEPLOYING_NETS
|
192
|
+
FAILED_UNDEPLOYING
|
193
|
+
FAILED_UNDEPLOYING_NETS
|
194
|
+
FAILED_SCALING]
|
195
|
+
REGULAR_STATES = %w[PENDING
|
196
|
+
DEPLOYING
|
197
|
+
DEPLOYING_NETS
|
198
|
+
UNDEPLOYING
|
199
|
+
UNDEPLOYING_NETS
|
200
|
+
CONFIGURING
|
201
|
+
WARNING]
|
202
202
|
|
203
203
|
# Set state color
|
204
204
|
#
|
@@ -809,7 +809,7 @@ module CLIHelper
|
|
809
809
|
# @param options [Hash] Object with CLI user options
|
810
810
|
def update_columns(options)
|
811
811
|
begin
|
812
|
-
if @conf
|
812
|
+
if @conf
|
813
813
|
config = YAML.load_file(@conf)
|
814
814
|
else
|
815
815
|
config = {}
|
data/lib/command_parser.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2022, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# #
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
5
5
|
# not use this file except in compliance with the License. You may obtain #
|