opennebula-cli 7.2.0 → 7.3.80.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/bin/oneflow +52 -1
  3. data/bin/onegroup +33 -0
  4. data/bin/oneimage +7 -2
  5. data/bin/onesecgroup +2 -1
  6. data/bin/onevm +27 -8
  7. data/bin/onevnet +6 -21
  8. data/bin/onevntemplate +3 -3
  9. data/lib/command_parser.rb +134 -125
  10. data/lib/load_opennebula_paths.rb +5 -0
  11. data/lib/ods_helper.rb +724 -0
  12. data/lib/one_helper/oneacct_helper.rb +116 -108
  13. data/lib/one_helper/onedatastore_helper.rb +86 -79
  14. data/lib/one_helper/onegroup_helper.rb +20 -0
  15. data/lib/one_helper/onehost_helper.rb +10 -1
  16. data/lib/one_helper/oneimage_helper.rb +9 -2
  17. data/lib/one_helper/onemarket_helper.rb +58 -57
  18. data/lib/one_helper/onequota_helper.rb +239 -189
  19. data/lib/one_helper/onesecgroup_helper.rb +86 -84
  20. data/lib/one_helper/onetemplate_helper.rb +63 -63
  21. data/lib/one_helper/onevdc_helper.rb +44 -44
  22. data/lib/one_helper/onevm_helper.rb +5 -12
  23. data/lib/one_helper/onevmgroup_helper.rb +65 -64
  24. data/lib/one_helper/onevnet_helper.rb +6 -2
  25. data/lib/one_helper/onevntemplate_helper.rb +42 -39
  26. data/lib/one_helper/onevrouter_helper.rb +85 -86
  27. data/lib/one_helper/onezone_helper.rb +97 -100
  28. data/lib/one_helper.rb +102 -70
  29. data/share/schemas/xsd/acct.xsd +3 -104
  30. data/share/schemas/xsd/backupjob.xsd +1 -0
  31. data/share/schemas/xsd/cluster.xsd +4 -21
  32. data/share/schemas/xsd/datastore.xsd +4 -29
  33. data/share/schemas/xsd/document.xsd +3 -25
  34. data/share/schemas/xsd/group.xsd +17 -13
  35. data/share/schemas/xsd/group_pool.xsd +18 -14
  36. data/share/schemas/xsd/hook.xsd +2 -0
  37. data/share/schemas/xsd/host.xsd +5 -7
  38. data/share/schemas/xsd/image.xsd +2 -25
  39. data/share/schemas/xsd/marketplace.xsd +3 -22
  40. data/share/schemas/xsd/marketplaceapp.xsd +3 -25
  41. data/share/schemas/xsd/opennebula_configuration.xsd +2 -0
  42. data/share/schemas/xsd/requirements.xsd +3 -21
  43. data/share/schemas/xsd/security_group.xsd +6 -43
  44. data/share/schemas/xsd/shared.xsd +3 -3
  45. data/share/schemas/xsd/vdc.xsd +2 -7
  46. data/share/schemas/xsd/vm.xsd +2 -0
  47. data/share/schemas/xsd/vm_group.xsd +3 -25
  48. data/share/schemas/xsd/vm_pool.xsd +2 -0
  49. data/share/schemas/xsd/vmtemplate.xsd +3 -25
  50. data/share/schemas/xsd/vnet.xsd +13 -67
  51. data/share/schemas/xsd/vnet_pool.xsd +13 -58
  52. data/share/schemas/xsd/vntemplate.xsd +3 -25
  53. data/share/schemas/xsd/vrouter.xsd +4 -32
  54. metadata +8 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb762770e0bd2a420c29addeff20bbdfe1a4f06d4fe9b985020d173db5453455
4
- data.tar.gz: 1b18551e801f0236f5ce82c86461905bc94a357ea71d60ed9ad9b0c686b31429
3
+ metadata.gz: ddabe36ca91b760ad2cc9c641d585f9fc9591567267620b59db910f0a865e2ce
4
+ data.tar.gz: 212ffde1d9910ce5daf0f60884f4d8e9721dc57d2368fb705dd51534d6493b0b
5
5
  SHA512:
6
- metadata.gz: d237cdc388909240306d142df874c26d9762ed61b97a31770eb94658eb5539c14332da9a95a396972753790ea57cdfd0e9023fd6abdf9823e327d46f73fb45be
7
- data.tar.gz: c955a8e3abf7e147fc486828c56d9baffaab6fdb44f6117736fe9a4f4cbd0bb7718087eefe02c649578fe31c5c85031fcb1e9856d1bbe07541ba56dc7b5faf7a
6
+ metadata.gz: cb603d35ae289e02fc13bf767ce336d40a82252b896963c37f90669d2b95392e4e7b4feff3d23fd0a3ae6ba46ab4302f0d26149eff4d4c4df85f0295eba4d29f
7
+ data.tar.gz: ae5a2a2ca0d6eb53b69b2619dd2b0c01706e873d38bdaee7e24d346168e637912616bbfd64cd92ecf46712bf0e5d3bf7e155d89f64c345b1a20ee5fba9171c6c
data/bin/oneflow CHANGED
@@ -35,6 +35,7 @@ $LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
35
35
 
36
36
  require 'json'
37
37
  require 'tempfile'
38
+ require 'uri'
38
39
 
39
40
  require 'command_parser'
40
41
  require 'opennebula/oneflow_client'
@@ -60,6 +61,10 @@ def check_document_type(response)
60
61
  end
61
62
  end
62
63
 
64
+ def path_escape(path_segment)
65
+ URI::DEFAULT_PARSER.escape(path_segment, /[^A-Za-z0-9\-._~]/)
66
+ end
67
+
63
68
  CommandParser::CmdParser.new(ARGV) do
64
69
  usage '`oneflow` <command> [<args>] [<options>]'
65
70
  version OpenNebulaHelper::ONE_VERSION
@@ -112,6 +117,14 @@ CommandParser::CmdParser.new(ARGV) do
112
117
  Service.list_to_id(arg, 'SERVICE')
113
118
  end
114
119
 
120
+ set :format, :sched_id, 'Scheduled action ID' do |arg|
121
+ if arg.match?(/\A\d+\z/)
122
+ [0, arg]
123
+ else
124
+ [-1, 'Scheduled action ID must be an integer number']
125
+ end
126
+ end
127
+
115
128
  set :format,
116
129
  :vm_action,
117
130
  'Actions supported: #{Role::SCHEDULE_ACTIONS.join(', ')}' do |arg|
@@ -338,8 +351,9 @@ CommandParser::CmdParser.new(ARGV) do
338
351
 
339
352
  json = Service.build_json_action(args[2], params)
340
353
  client = helper.client(options)
354
+ role = path_escape(args[1])
341
355
 
342
- client.post("#{RESOURCE_PATH}/#{service_id}/role/#{args[1]}/action",
356
+ client.post("#{RESOURCE_PATH}/#{service_id}/role/#{role}/action",
343
357
  json)
344
358
  end
345
359
  end
@@ -371,6 +385,43 @@ CommandParser::CmdParser.new(ARGV) do
371
385
 
372
386
  ###
373
387
 
388
+ sched_delete_desc = <<-EOT.unindent
389
+ Delete a scheduled action from all the Virtual Machines of a given role.
390
+ EOT
391
+
392
+ command :'sched-delete',
393
+ sched_delete_desc,
394
+ :service_id,
395
+ :role_name,
396
+ :sched_id do
397
+ Service.perform_action(args[0]) do |service_id|
398
+ role = path_escape(args[1])
399
+
400
+ helper.client(options).delete(
401
+ "#{RESOURCE_PATH}/#{service_id}/role/#{role}/sched_action/#{args[2]}"
402
+ )
403
+ end
404
+ end
405
+
406
+ ###
407
+
408
+ sched_delete_desc = <<-EOT.unindent
409
+ Delete a scheduled action from all the Virtual Machines of a given service.
410
+ EOT
411
+
412
+ command [:service, :'sched-delete'],
413
+ sched_delete_desc,
414
+ :service_id,
415
+ :sched_id do
416
+ Service.perform_action(args[0]) do |service_id|
417
+ helper.client(options).delete(
418
+ "#{RESOURCE_PATH}/#{service_id}/sched_action/#{args[1]}"
419
+ )
420
+ end
421
+ end
422
+
423
+ ###
424
+
374
425
  update_desc = <<-EOT.unindent
375
426
  Update the template contents. If a path is not provided the editor will
376
427
  be launched to modify the current content.
data/bin/onegroup CHANGED
@@ -260,4 +260,37 @@ CommandParser::CmdParser.new(ARGV) do
260
260
 
261
261
  exit 0
262
262
  end
263
+
264
+ vlan_desc = <<-EOT.unindent
265
+ Set the VLAN rules for the group. If a path is not provided the
266
+ editor will be launched to modify the current rules.
267
+ EOT
268
+
269
+ command :vlan, vlan_desc, :groupid, [:file, nil] do
270
+ helper.perform_action(args[0], options, 'modified') do |group|
271
+ rc = group.info
272
+
273
+ if OpenNebula.is_error?(rc)
274
+ puts rc.message
275
+ exit(-1)
276
+ end
277
+
278
+ if args[1]
279
+ str = File.read(args[1])
280
+ else
281
+ group.delete_element('VLAN_RULES/ID')
282
+
283
+ current_rules = group.template_like_str('VLAN_RULES')
284
+
285
+ str = OpenNebulaHelper.editor_input(current_rules)
286
+ end
287
+
288
+ rc = group.set_vlan_rules(str)
289
+
290
+ if OpenNebula.is_error?(rc)
291
+ puts rc.message
292
+ exit(-1)
293
+ end
294
+ end
295
+ end
263
296
  end
data/bin/oneimage CHANGED
@@ -255,7 +255,7 @@ CommandParser::CmdParser.new(ARGV) do
255
255
  if !OpenNebula.is_error?(res)
256
256
  puts "ID: #{res}"
257
257
  else
258
- puts res.message
258
+ STDERR.puts res.message
259
259
  exit(-1)
260
260
  end
261
261
  end
@@ -543,8 +543,13 @@ CommandParser::CmdParser.new(ARGV) do
543
543
  EOT
544
544
 
545
545
  command :orphans, show_desc do
546
- puts helper.check_orphans
546
+ orphans = helper.check_orphans
547
+ if OpenNebula.is_error?(orphans)
548
+ STDERR.puts orphans.message
549
+ return -1
550
+ end
547
551
 
552
+ puts orphans
548
553
  return 0
549
554
  end
550
555
  end
data/bin/onesecgroup CHANGED
@@ -122,7 +122,8 @@ CommandParser::CmdParser.new(ARGV) do
122
122
  if !OpenNebula.is_error?(res)
123
123
  puts "ID: #{res}"
124
124
  else
125
- puts res.message
125
+ STDERR.puts res.message
126
+ exit(-1)
126
127
  end
127
128
  end
128
129
  end
data/bin/onevm CHANGED
@@ -345,6 +345,10 @@ CommandParser::CmdParser.new(ARGV) do
345
345
  format_int(arg)
346
346
  end
347
347
 
348
+ set :format, :vmgroupid, OpenNebulaHelper.rname_to_id_desc('VMGROUP') do |arg|
349
+ OpenNebulaHelper.rname_to_id(arg, 'VMGROUP')
350
+ end
351
+
348
352
  ########################################################################
349
353
  # Commands
350
354
  ########################################################################
@@ -1410,7 +1414,6 @@ CommandParser::CmdParser.new(ARGV) do
1410
1414
  EOT
1411
1415
 
1412
1416
  command :backupmode, backupmode_set_desc, :vmid, :mode do
1413
- vm_ref = args[0]
1414
1417
  backup_mode = args[1]
1415
1418
 
1416
1419
  if !helper.backup_mode_valid?(backup_mode)
@@ -1421,8 +1424,9 @@ CommandParser::CmdParser.new(ARGV) do
1421
1424
  exit(-1)
1422
1425
  end
1423
1426
 
1424
- # TODO: Ensure other BACKUP_CONFIG is not overwritten
1425
- helper.set_backup_mode(vm_ref, backup_mode)
1427
+ helper.perform_action(args[0], options, 'Updating backup mode') do |vm|
1428
+ vm.updateconf("BACKUP_CONFIG = [\"MODE\"=\"#{backup_mode}\"]", true)
1429
+ end
1426
1430
  end
1427
1431
 
1428
1432
  updateconf_desc = <<-EOT.unindent
@@ -1437,13 +1441,13 @@ CommandParser::CmdParser.new(ARGV) do
1437
1441
  The full list of configuration attributes are:
1438
1442
 
1439
1443
  OS = ["ARCH", "MACHINE", "KERNEL", "INITRD", "BOOTLOADER", "BOOT", "KERNEL_CMD", "ROOT", "SD_DISK_BUS", "UUID", "FIRMWARE", "FIRMWARE_FORMAT"]
1440
- FEATURES = ["ACPI", "PAE", "APIC", "LOCALTIME", "HYPERV", "GUEST_AGENT", "VIRTIO_SCSI_QUEUES", "VIRTIO_BLK_QUEUES", "IOTHREADS"]
1444
+ FEATURES = ["ACPI", "PAE", "APIC", "LOCALTIME", "HYPERV", "GUEST_AGENT", "VIRTIO_SCSI_QUEUES", "VIRTIO_BLK_QUEUES", "IOTHREADS", "MIGRATE_AUTO_CONVERGE", "MIGRATE_COMPRESSED"]
1441
1445
  INPUT = ["TYPE", "BUS"]
1442
1446
  GRAPHICS = ["TYPE", "LISTEN", "PASSWD", "KEYMAP", "COMMAND"]
1443
1447
  VIDEO = ["TYPE", "IOMMU", "ATS", "VRAM", "RESOLUTION"]
1444
1448
  RAW = ["DATA", "DATA_VMX", "TYPE", "VALIDATE"]
1445
1449
  CPU_MODEL = ["MODEL", "FEATURES"]
1446
- BACKUP_CONFIG = ["FS_FREEZE", "KEEP_LAST", "BACKUP_VOLATILE", "MODE", "INCREMENT_MODE"]
1450
+ BACKUP_CONFIG = ["FS_FREEZE", "KEEP_LAST", "BACKUP_VOLATILE", "MODE", "INCREMENT_MODE", "INTERACTIVE"]
1447
1451
  CONTEXT (any value, ETH* if CONTEXT_ALLOW_ETH_UPDATES set in oned.conf, **variable substitution will be made**)
1448
1452
  EOT
1449
1453
 
@@ -1902,8 +1906,23 @@ CommandParser::CmdParser.new(ARGV) do
1902
1906
  end
1903
1907
  end
1904
1908
 
1905
- # Deprecated commands, remove these commands in release 8.x
1909
+ vmgroup_add_desc = <<-EOT.unindent
1910
+ Adds the VM to a VM group and role.
1911
+ EOT
1906
1912
 
1907
- deprecated_command(:'delete-chart', 'sched-delete')
1908
- deprecated_command(:'update-chart', 'sched-update')
1913
+ command :"vmgroup-add", vmgroup_add_desc, :vmid, :vmgroupid, :role do
1914
+ helper.perform_action(args[0], options, 'VM added to group') do |vm|
1915
+ vm.vmgroup_add(args[1].to_i, args[2])
1916
+ end
1917
+ end
1918
+
1919
+ vmgroup_del_desc = <<-EOT.unindent
1920
+ Removes the VM from its VM group.
1921
+ EOT
1922
+
1923
+ command :"vmgroup-del", vmgroup_del_desc, :vmid do
1924
+ helper.perform_action(args[0], options, 'VM removed from group') do |vm|
1925
+ vm.vmgroup_del
1926
+ end
1927
+ end
1909
1928
  end
data/bin/onevnet CHANGED
@@ -197,16 +197,6 @@ CommandParser::CmdParser.new(ARGV) do
197
197
  end
198
198
  end
199
199
 
200
- addleases_desc = <<-EOT.unindent
201
- (DEPRECATED, use addar) Adds a lease to the Virtual Network
202
- EOT
203
-
204
- command :addleases, addleases_desc, :vnetid, :ip, [:mac, nil] do
205
- helper.perform_action(args[0], options, 'lease added') do |vn|
206
- vn.addleases(args[1], args[2])
207
- end
208
- end
209
-
210
200
  rmar_desc = <<-EOT.unindent
211
201
  Removes an address range from the Virtual Network
212
202
  EOT
@@ -217,16 +207,6 @@ CommandParser::CmdParser.new(ARGV) do
217
207
  end
218
208
  end
219
209
 
220
- rmleases_desc = <<-EOT.unindent
221
- (DEPRECATED, use rmar) Removes a lease from the Virtual Network
222
- EOT
223
-
224
- command :rmleases, rmleases_desc, :vnetid, :ip do
225
- helper.perform_action(args[0], options, 'lease removed') do |vn|
226
- vn.rmleases(args[1])
227
- end
228
- end
229
-
230
210
  free_desc = <<-EOT.unindent
231
211
  Frees a reserved address range from the Virtual Network
232
212
  EOT
@@ -445,8 +425,13 @@ CommandParser::CmdParser.new(ARGV) do
445
425
  EOT
446
426
 
447
427
  command :orphans, show_desc do
448
- puts helper.check_orphans
428
+ orphans = helper.check_orphans
429
+ if OpenNebula.is_error?(orphans)
430
+ STDERR.puts orphans.message
431
+ return -1
432
+ end
449
433
 
434
+ puts orphans
450
435
  return 0
451
436
  end
452
437
 
data/bin/onevntemplate CHANGED
@@ -252,10 +252,10 @@ CommandParser::CmdParser.new(ARGV) do
252
252
  end
253
253
 
254
254
  extra_template = res.last
255
+ end
255
256
 
256
- if OneVNetHelper.add_ar_options_used?(options)
257
- extra_template << OpenNebulaHelper.create_ar(options)
258
- end
257
+ if OneVNetHelper.add_ar_options_used?(options)
258
+ extra_template << OpenNebulaHelper.create_ar(options)
259
259
  end
260
260
 
261
261
  if c_i