opennebula-cli 6.8.3 → 6.9.80.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b06fb77f587c29ae6ccfdb865f506d009c722e26a51237357785839b3334c6a6
4
- data.tar.gz: 5b7b61495a23c275884b89dd7416d1e7308cc95711b1091a20febc008ebb45c2
3
+ metadata.gz: 38482e5c20e3b6bd22fe7b91b7d24bf7d7663fc1c43d8ea53d592c36395c652c
4
+ data.tar.gz: 143fa13eee00b3e666b0a8105e021c71062d668db57630b39d9c3b221e329101
5
5
  SHA512:
6
- metadata.gz: ecd05a6bbb986b52da8d323d1083d90d7142f9ac336bef379c183348a9f039ab94cc258b6735f3fd558a6c5eb41e55b5e36079292139b0844f30e4b183f2d88c
7
- data.tar.gz: af89f17c3100ea494ea87e5fb9228779195d410c9b9ec3b2d9752a7db4c1b0359636a5aad9769d011ce67e751cdf1cd73d85dd89b7677f0176eb8525cd1ec411
6
+ metadata.gz: b5b689b4788e3122e7a80407ff2846c87d56ba903e9254c4e70add4dae6f8c55e573996e75867c8f9de1aa64a592aa133861edee4e009205b46f700bdec7eb8a
7
+ data.tar.gz: 9704f4990ac5c7243cad58ffbe59e9f3f323acd8ea23b142059bdb21c6fe510587f8ad5eab05514e8abae6c1ce55c6bf713e7c1acc316c8b4cfe81b62c6137da
data/bin/oneflow CHANGED
@@ -61,6 +61,21 @@ USER_AGENT = 'CLI'
61
61
  # Base Path representing the resource to be used in the requests
62
62
  RESOURCE_PATH = '/service'
63
63
 
64
+ RESOURCE_DOCUMENT_TYPE = '100'
65
+
66
+ def check_document_type(response)
67
+ if CloudClient.is_error?(response)
68
+ return if response.code == '500' # could be wrong document_type; skip this id
69
+
70
+ exit_with_code response.code.to_i, response.to_s
71
+ else
72
+ document_type = JSON.parse(response.body)['DOCUMENT']['TYPE']
73
+ if document_type == RESOURCE_DOCUMENT_TYPE
74
+ yield
75
+ end
76
+ end
77
+ end
78
+
64
79
  CommandParser::CmdParser.new(ARGV) do
65
80
  usage '`oneflow` <command> [<args>] [<options>]'
66
81
  version OpenNebulaHelper::ONE_VERSION
@@ -168,9 +183,11 @@ CommandParser::CmdParser.new(ARGV) do
168
183
 
169
184
  command :delete, delete_desc, [:range, :service_id_list] do
170
185
  client = helper.client(options)
171
-
172
186
  Service.perform_actions(args[0]) do |service_id|
173
- client.delete("#{RESOURCE_PATH}/#{service_id}")
187
+ response = client.get("#{RESOURCE_PATH}/#{service_id}")
188
+ check_document_type response do
189
+ client.delete("#{RESOURCE_PATH}/#{service_id}")
190
+ end
174
191
  end
175
192
  end
176
193
 
@@ -197,7 +214,10 @@ CommandParser::CmdParser.new(ARGV) do
197
214
 
198
215
  json = Service.build_json_action('recover', params)
199
216
 
200
- client.post("#{RESOURCE_PATH}/#{service_id}/action", json)
217
+ response = client.get("#{RESOURCE_PATH}/#{service_id}")
218
+ check_document_type response do
219
+ client.post("#{RESOURCE_PATH}/#{service_id}/action", json)
220
+ end
201
221
  end
202
222
  end
203
223
 
data/bin/oneflow-template CHANGED
@@ -68,6 +68,21 @@ USER_AGENT = 'CLI'
68
68
  # Base Path representing the resource to be used in the requests
69
69
  RESOURCE_PATH = '/service_template'
70
70
 
71
+ RESOURCE_DOCUMENT_TYPE = '101'
72
+
73
+ def check_document_type(response)
74
+ if CloudClient.is_error?(response)
75
+ return if response.code == '500' # could be wrong document_type; skip this id
76
+
77
+ exit_with_code response.code.to_i, response.to_s
78
+ else
79
+ document_type = JSON.parse(response.body)['DOCUMENT']['TYPE']
80
+ if document_type == RESOURCE_DOCUMENT_TYPE
81
+ yield
82
+ end
83
+ end
84
+ end
85
+
71
86
  CommandParser::CmdParser.new(ARGV) do
72
87
  MULTIPLE = {
73
88
  :name => 'multiple',
@@ -240,7 +255,10 @@ CommandParser::CmdParser.new(ARGV) do
240
255
  body['delete_type'] = delete
241
256
 
242
257
  Service.perform_actions(args[0]) do |template_id|
243
- client.delete("#{RESOURCE_PATH}/#{template_id}", body.to_json)
258
+ response = client.get("#{RESOURCE_PATH}/#{template_id}")
259
+ check_document_type response do
260
+ client.delete("#{RESOURCE_PATH}/#{template_id}", body.to_json)
261
+ end
244
262
  end
245
263
  end
246
264
 
data/bin/oneimage CHANGED
@@ -88,12 +88,6 @@ CommandParser::CmdParser.new(ARGV) do
88
88
  :description => 'lock all actions'
89
89
  }
90
90
 
91
- NO_CONTEXT = {
92
- :name => 'no_context',
93
- :large => '--no-context',
94
- :description => 'Do not add context when building from Dockerfile'
95
- }
96
-
97
91
  NO_IP = {
98
92
  :name => 'no_ip',
99
93
  :large => '--no_ip',
@@ -141,8 +135,7 @@ CommandParser::CmdParser.new(ARGV) do
141
135
 
142
136
  CREATE_OPTIONS = [OneDatastoreHelper::DATASTORE,
143
137
  OneImageHelper::IMAGE,
144
- NAME,
145
- NO_CONTEXT]
138
+ NAME]
146
139
 
147
140
  ########################################################################
148
141
  # Formatters for arguments
@@ -229,15 +222,6 @@ CommandParser::CmdParser.new(ARGV) do
229
222
  next -1
230
223
  end
231
224
 
232
- # Add context information when building image (just working on Docker)
233
- if (options.key? :no_context) && options[:path]
234
- if options[:path].include?('?')
235
- options[:path] << '&context=no'
236
- else
237
- options[:path] << '?context=no'
238
- end
239
- end
240
-
241
225
  helper.create_resource(options) do |image|
242
226
  begin
243
227
  if args[0]
@@ -573,73 +557,4 @@ CommandParser::CmdParser.new(ARGV) do
573
557
 
574
558
  return 0
575
559
  end
576
-
577
- dockerfile_desc = <<-EOT.unindent
578
- Create an image based on a Dockerfile
579
- EOT
580
-
581
- command :dockerfile,
582
- dockerfile_desc,
583
- :options => CREATE_OPTIONS +
584
- OneImageHelper::TEMPLATE_OPTIONS do
585
- # Check user options
586
- unless options[:datastore]
587
- STDERR.puts 'Datastore to save the image is mandatory: '
588
- STDERR.puts "\t -d datastore_id"
589
- exit(-1)
590
- end
591
-
592
- unless options[:name]
593
- STDERR.puts 'No name provided'
594
- exit(-1)
595
- end
596
-
597
- unless options[:size]
598
- STDERR.puts 'No size given'
599
- exit(-1)
600
- end
601
-
602
- # Prepare editor
603
- tmp = Tempfile.new('dockerfile')
604
-
605
- if ENV['EDITOR']
606
- editor_path = ENV['EDITOR']
607
- else
608
- editor_path = EDITOR_PATH
609
- end
610
-
611
- system("#{editor_path} #{tmp.path}")
612
-
613
- unless $CHILD_STATUS.exitstatus.zero?
614
- STDERR.puts('Editor not defined')
615
- exit(-1)
616
- end
617
-
618
- tmp.close
619
-
620
- # Create image
621
- helper.create_resource(options) do |image|
622
- begin
623
- b64 = Base64.strict_encode64(File.read(tmp.path))
624
- options[:path] = "dockerfile:///?fileb64=#{b64}&" \
625
- "size=#{options[:size]}"
626
-
627
- options[:path] << '&context=no' if options.key?(:no_context)
628
-
629
- res = OneImageHelper.create_image_template(options)
630
-
631
- if res.first != 0
632
- STDERR.puts res.last
633
- next -1
634
- end
635
-
636
- template = res.last
637
-
638
- image.allocate(template, options[:datastore], false)
639
- rescue StandardError => e
640
- STDERR.puts e.message
641
- exit(-1)
642
- end
643
- end
644
- end
645
560
  end
data/bin/onemarketapp CHANGED
@@ -90,13 +90,6 @@ CommandParser::CmdParser.new(ARGV) do
90
90
  :description => 'lock all actions'
91
91
  }
92
92
 
93
- TAG = {
94
- :name => 'tag',
95
- :large => '--tag tag',
96
- :format => String,
97
- :description => 'DockerHub image tag (default latest)'
98
- }
99
-
100
93
  YES = {
101
94
  :name => 'yes',
102
95
  :large => '--yes',
@@ -143,7 +136,6 @@ CommandParser::CmdParser.new(ARGV) do
143
136
  EXPORT_OPTIONS = [OneDatastoreHelper::DATASTORE,
144
137
  OneDatastoreHelper::FILE_DATASTORE,
145
138
  OneMarketPlaceAppHelper::VMNAME,
146
- TAG,
147
139
  NO,
148
140
  TEMPLATE]
149
141
  IMPORT_OPTIONS = [YES, NO, MARKET, OneMarketPlaceAppHelper::VMNAME]
@@ -291,17 +283,14 @@ CommandParser::CmdParser.new(ARGV) do
291
283
 
292
284
  command :export, export_desc, :appid, :name, :options => EXPORT_OPTIONS do
293
285
  helper.perform_action(args[0], options, 'exporting') do |obj|
294
- tag ="tag=#{options[:tag]}" if options[:tag]
295
-
296
286
  obj.extend(MarketPlaceAppExt)
297
287
 
298
288
  rc = obj.export(
299
289
  :dsid => options[:datastore],
300
290
  :name => args[1],
301
291
  :vmtemplate_name => options[:vmname],
302
- :url_args => tag,
303
- :notemplate => options[:no] == 'no',
304
- :template => options[:template]
292
+ :notemplate => options[:no] == 'no',
293
+ :template => options[:template]
305
294
  )
306
295
 
307
296
  if OpenNebula.is_error?(rc)
data/bin/onevm CHANGED
@@ -257,6 +257,21 @@ CommandParser::CmdParser.new(ARGV) do
257
257
  :description => 'Creates a new backup image, from a new full backup (only for incremental)'
258
258
  }
259
259
 
260
+ INCREMENT = {
261
+ :name => 'increment',
262
+ :large => '--increment increment_id',
263
+ :format => Integer,
264
+ :description => 'Use the given increment ID to restore the backup.'\
265
+ ' If not provided the last one will be used'
266
+ }
267
+
268
+ DISK_ID = {
269
+ :name => 'disk_id',
270
+ :large => '--disk-id disk_id',
271
+ :format => Integer,
272
+ :description => 'Use only selected disk ID'
273
+ }
274
+
260
275
  OpenNebulaHelper::TEMPLATE_OPTIONS_VM.delete_if do |v|
261
276
  ['as_gid', 'as_uid'].include?(v[:name])
262
277
  end
@@ -281,6 +296,10 @@ CommandParser::CmdParser.new(ARGV) do
281
296
  OpenNebulaHelper.rname_to_id(arg, 'USER')
282
297
  end
283
298
 
299
+ set :format, :imageid, OpenNebulaHelper.rname_to_id_desc('IMAGE') do |arg|
300
+ OpenNebulaHelper.rname_to_id(arg, 'IMAGE')
301
+ end
302
+
284
303
  set :format,
285
304
  :datastoreid,
286
305
  OpenNebulaHelper.rname_to_id_desc('DATASTORE') do |arg|
@@ -720,7 +739,7 @@ CommandParser::CmdParser.new(ARGV) do
720
739
  States for success/failure recovers: Any ACTIVE state.
721
740
  States for a retry recover: Any *FAILURE state
722
741
  States for delete: Any
723
- States for recreate: Any but DONE/POWEROFF/SUSPENDED
742
+ States for recreate: Any but DONE
724
743
  States for delete-db: Any
725
744
  EOT
726
745
 
@@ -1771,6 +1790,27 @@ CommandParser::CmdParser.new(ARGV) do
1771
1790
  end
1772
1791
  end
1773
1792
 
1793
+ restore_desc = <<-EOT.unindent
1794
+ Restore the Virtual Machine from the backup Image. The VM must be in poweroff state.
1795
+ EOT
1796
+
1797
+ command :restore, restore_desc, :vmid, :imageid, :options => [DISK_ID, INCREMENT] do
1798
+ helper.perform_action(args[0], options, 'Restoring VM from backup') do |vm|
1799
+ disk_id = options[:disk_id]
1800
+ disk_id ||= -1 # All disks by default
1801
+
1802
+ inc_id = options[:increment]
1803
+ inc_id ||= -1 # Last increment by default
1804
+
1805
+ rc = vm.restore(args[1], inc_id, disk_id)
1806
+
1807
+ if OpenNebula.is_error?(rc)
1808
+ STDERR.puts "Error restoring: #{rc.message}"
1809
+ exit(-1)
1810
+ end
1811
+ end
1812
+ end
1813
+
1774
1814
  # Deprecated commands, remove these commands in release 8.x
1775
1815
 
1776
1816
  deprecated_command(:'delete-chart', 'sched-delete')
data/bin/onezone CHANGED
@@ -253,15 +253,11 @@ CommandParser::CmdParser.new(ARGV) do
253
253
 
254
254
  command :serversync, sync_desc, :server, :options => [DATABASE] do
255
255
  begin
256
- # Suppress augeas require warning message
257
- $VERBOSE = nil
258
-
259
- gem 'augeas', '~> 0.6'
260
256
  require 'augeas'
261
257
  rescue Gem::LoadError
262
258
  STDERR.puts(
263
259
  'Augeas gem is not installed, run `gem install ' \
264
- 'augeas -v \'0.6\'` to install it'
260
+ 'opennebula-augeas` to install it'
265
261
  )
266
262
  exit(-1)
267
263
  end
@@ -328,7 +328,7 @@ class OneGroupHelper < OpenNebulaHelper::OneHelper
328
328
  default_quotas = elem
329
329
  }
330
330
 
331
- helper = OneQuotaHelper.new
331
+ helper = OneQuotaHelper.new(@client)
332
332
  helper.format_quota(group_hash['GROUP'], default_quotas, group.id)
333
333
  end
334
334
  end
@@ -22,7 +22,7 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
22
22
 
23
23
  # This list contains prefixes that should skip adding user home to the path
24
24
  # This must have the same content as the case $FROM in downloader.sh
25
- PREFIXES = ['http', 'https', 'ssh', 's3', 'rbd', 'vcenter', 'lxd', 'docker', 'dockerfile']
25
+ PREFIXES = ['http', 'https', 'ssh', 's3', 'rbd', 'vcenter', 'lxd']
26
26
 
27
27
  TEMPLATE_OPTIONS=[
28
28
  {
@@ -75,6 +75,10 @@ class OneQuotaHelper
75
75
  #-----------------------------------------------------------------------
76
76
  EOT
77
77
 
78
+ def initialize(client = nil)
79
+ @client=client
80
+ end
81
+
78
82
  # Edits the quota template of a resource
79
83
  # @param [XMLElement] resource to get the current info from
80
84
  # @param [String] path to the new contents. If nil a editor will be
@@ -207,6 +211,8 @@ class OneQuotaHelper
207
211
 
208
212
  vm_quotas = [qh['VM_QUOTA']['VM']].flatten
209
213
 
214
+ generic_quotas = get_generic_quotas
215
+
210
216
  # This initializes the VM quotas for users/groups that don't have any
211
217
  # resource usage yet. It not applied to oneamdin
212
218
  if vm_quotas[0].nil? && resource_id.to_i != 0
@@ -228,6 +234,13 @@ class OneQuotaHelper
228
234
  "SYSTEM_DISK_SIZE" => limit,
229
235
  "SYSTEM_DISK_SIZE_USED" => "0"
230
236
  }]
237
+
238
+ generic_quotas.each do |q|
239
+ vm_quotas[0][q] = limit
240
+ vm_quotas[0]["#{q}_USED"] = "0"
241
+ vm_quotas[0]["RUNNING_#{q}"] = limit
242
+ vm_quotas[0]["RUNNING_#{q}_USED"] = "0"
243
+ end
231
244
  end
232
245
 
233
246
  if !vm_quotas[0].nil?
@@ -378,6 +391,55 @@ class OneQuotaHelper
378
391
  puts
379
392
  end
380
393
 
394
+ if !generic_quotas.empty? && !vm_quotas[0].nil?
395
+ CLIHelper.print_header(str_h1 % "VMS GENERIC QUOTAS",false)
396
+ size = [80 / generic_quotas.length - 1, 18].min
397
+
398
+ CLIHelper::ShowTable.new(nil, self) do
399
+ generic_quotas.each do |elem|
400
+ column elem.to_sym, "", :right, :size=>size do |d|
401
+ if !d.nil?
402
+ limit = d[elem]
403
+ limit = helper.get_default_limit(
404
+ limit, "VM_QUOTA/VM/#{elem}")
405
+
406
+ if limit == LIMIT_UNLIMITED
407
+ "%6s / -" % [d["#{elem}_USED"]]
408
+ else
409
+ "%6s / %6s" % [d["#{elem}_USED"], limit]
410
+ end
411
+ end
412
+ end
413
+ end
414
+ end.show(vm_quotas, {})
415
+
416
+ puts
417
+
418
+ CLIHelper.print_header(str_h1 % "VMS GENERIC RUNNING QUOTAS",false)
419
+ size = [80 / generic_quotas.length - 1, 18].min
420
+
421
+ CLIHelper::ShowTable.new(nil, self) do
422
+ generic_quotas.each do |q|
423
+ elem = "RUNNING_#{q}"
424
+ column elem.to_sym, "", :right, :size=>size do |d|
425
+ if !d.nil?
426
+ limit = d[elem]
427
+ limit = helper.get_default_limit(
428
+ limit, "VM_QUOTA/VM/#{elem}")
429
+
430
+ if limit == LIMIT_UNLIMITED
431
+ "%6s / -" % [d["#{elem}_USED"]]
432
+ else
433
+ "%6s / %6s" % [d["#{elem}_USED"], limit]
434
+ end
435
+ end
436
+ end
437
+ end
438
+ end.show(vm_quotas, {})
439
+
440
+ puts
441
+ end
442
+
381
443
  CLIHelper.print_header(str_h1 % "DATASTORE USAGE & QUOTAS",false)
382
444
 
383
445
  puts
@@ -503,4 +565,17 @@ class OneQuotaHelper
503
565
 
504
566
  return limit
505
567
  end
568
+
569
+ private
570
+
571
+ def get_generic_quotas
572
+ conf = OpenNebula::System.new(@client).get_configuration
573
+
574
+ return [] if OpenNebula.is_error?(conf)
575
+
576
+ conf.retrieve_elements('/OPENNEBULA_CONFIGURATION/QUOTA_VM_ATTRIBUTE') || []
577
+ rescue StandardError
578
+ []
579
+ end
580
+
506
581
  end
@@ -613,7 +613,7 @@ class OneUserHelper < OpenNebulaHelper::OneHelper
613
613
  default_quotas = elem
614
614
  }
615
615
 
616
- helper = OneQuotaHelper.new
616
+ helper = OneQuotaHelper.new(@client)
617
617
  helper.format_quota(user_hash['USER'], default_quotas, user.id)
618
618
  end
619
619
 
@@ -160,7 +160,8 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
160
160
  SEARCH = {
161
161
  :name => 'search',
162
162
  :large => '--search search',
163
- :description => 'query in KEY=VALUE format',
163
+ :description => 'Query in PATH=VALUE format. For example: ' \
164
+ 'onevm list --search "VM.NAME=abc&VM.TEMPLATE.DISK[*].IMAGE=db1"',
164
165
  :format => String
165
166
  }
166
167
 
@@ -135,7 +135,7 @@ class Replicator
135
135
  def fetch_db_config(configs)
136
136
  configs.store(:backend, configs[:raw]['/OPENNEBULA_CONFIGURATION/DB/BACKEND'])
137
137
 
138
- if configs[:backend] == 'mysql' || configs[:backend] == 'postgresql'
138
+ if configs[:backend] == 'mysql'
139
139
  configs.store(:server, configs[:raw]['/OPENNEBULA_CONFIGURATION/DB/SERVER'])
140
140
  configs.store(:user, configs[:raw]['/OPENNEBULA_CONFIGURATION/DB/USER'])
141
141
  configs.store(:password, configs[:raw]['/OPENNEBULA_CONFIGURATION/DB/PASSWD'])
@@ -143,7 +143,7 @@ class Replicator
143
143
  configs.store(:port, configs[:raw]['/OPENNEBULA_CONFIGURATION/DB/PORT'])
144
144
  configs[:port] = '3306' if configs[:port] == '0'
145
145
  else
146
- STDERR.puts 'No mysql or postgresql backend configuration found'
146
+ STDERR.puts 'No mysql backend configuration found'
147
147
  exit(-1)
148
148
  end
149
149
  end
@@ -42,12 +42,25 @@
42
42
  <xs:element name="VMS_THREAD" type="xs:integer"/>
43
43
  <xs:element name="DATASTORES">
44
44
  <xs:complexType>
45
- <xs:all>
45
+ <xs:sequence>
46
46
  <xs:element name="DISK_USAGE" type="xs:integer"/>
47
+ <xs:element name="DS" minOccurs="0" maxOccurs="unbounded">
48
+ <xs:complexType>
49
+ <xs:sequence>
50
+ <xs:element name="FREE_MB" type="xs:integer"/>
51
+ <xs:element name="ID" type="xs:integer"/>
52
+ <xs:element name="TOTAL_MB" type="xs:integer"/>
53
+ <xs:element name="USED_MB" type="xs:integer"/>
54
+ <xs:element name="REPLICA_CACHE" type="xs:string" minOccurs="0" maxOccurs="1"/>
55
+ <xs:element name="REPLICA_CACHE_SIZE" type="xs:string" minOccurs="0" maxOccurs="1"/>
56
+ <xs:element name="REPLICA_IMAGES" type="xs:integer" minOccurs="0" maxOccurs="1"/>
57
+ </xs:sequence>
58
+ </xs:complexType>
59
+ </xs:element>
47
60
  <xs:element name="FREE_DISK" type="xs:integer"/>
48
61
  <xs:element name="MAX_DISK" type="xs:integer"/>
49
62
  <xs:element name="USED_DISK" type="xs:integer"/>
50
- </xs:all>
63
+ </xs:sequence>
51
64
  </xs:complexType>
52
65
  </xs:element>
53
66
  <xs:element name="PCI_DEVICES">
@@ -1,5 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://opennebula.org/XMLSchema" elementFormDefault="qualified" targetNamespace="http://opennebula.org/XMLSchema">
3
+ <xs:include schemaLocation="shared.xsd"/>
3
4
  <xs:element name="IMAGE">
4
5
  <xs:complexType>
5
6
  <xs:sequence>
@@ -65,27 +66,9 @@
65
66
  <xs:element name="TARGET_SNAPSHOT" type="xs:integer"/>
66
67
  <xs:element name="DATASTORE_ID" type="xs:integer"/>
67
68
  <xs:element name="DATASTORE" type="xs:string"/>
68
- <xs:element name="VMS">
69
- <xs:complexType>
70
- <xs:sequence>
71
- <xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
72
- </xs:sequence>
73
- </xs:complexType>
74
- </xs:element>
75
- <xs:element name="CLONES">
76
- <xs:complexType>
77
- <xs:sequence>
78
- <xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
79
- </xs:sequence>
80
- </xs:complexType>
81
- </xs:element>
82
- <xs:element name="APP_CLONES">
83
- <xs:complexType>
84
- <xs:sequence>
85
- <xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
86
- </xs:sequence>
87
- </xs:complexType>
88
- </xs:element>
69
+ <xs:element name="VMS" type="IDS"/>
70
+ <xs:element name="CLONES" type="IDS"/>
71
+ <xs:element name="APP_CLONES" type="IDS"/>
89
72
  <xs:element name="TEMPLATE">
90
73
  <xs:complexType>
91
74
  <xs:sequence>
@@ -135,6 +118,7 @@
135
118
  </xs:sequence>
136
119
  </xs:complexType>
137
120
  </xs:element>
121
+ <xs:element name="BACKUP_DISK_IDS" type="IDS" minOccurs="0" maxOccurs="1"/>
138
122
  </xs:sequence>
139
123
  </xs:complexType>
140
124
  </xs:element>
@@ -50,7 +50,6 @@
50
50
  <xs:element name="BACKEND" minOccurs="0" maxOccurs="1" >
51
51
  <xs:simpleType>
52
52
  <xs:restriction base="xs:string">
53
- <xs:enumeration value="postgresql"/>
54
53
  <xs:enumeration value="mysql"/>
55
54
  <xs:enumeration value="sqlite"/>
56
55
  </xs:restriction>
@@ -250,7 +249,6 @@
250
249
  <xs:element name="MAX_CONN_BACKLOG" type="xs:integer" minOccurs="0" maxOccurs="1"/>
251
250
  <xs:element name="MESSAGE_SIZE" type="xs:integer" minOccurs="0" maxOccurs="1"/>
252
251
  <xs:element name="MONITORING_INTERVAL_DATASTORE" type="xs:integer" minOccurs="0" maxOccurs="1"/>
253
- <xs:element name="MONITORING_INTERVAL_DB_UPDATE" type="xs:integer" minOccurs="0" maxOccurs="1"/>
254
252
  <xs:element name="MONITORING_INTERVAL_HOST" type="xs:integer" minOccurs="0" maxOccurs="1"/>
255
253
  <xs:element name="MONITORING_INTERVAL_MARKET" type="xs:integer" minOccurs="0" maxOccurs="1"/>
256
254
  <xs:element name="MONITORING_INTERVAL_VM" type="xs:integer" minOccurs="0" maxOccurs="1"/>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opennebula-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.8.3
4
+ version: 6.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: 2024-04-21 00:00:00.000000000 Z
11
+ date: 2024-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opennebula
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.8.3
19
+ version: 6.9.80.pre
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.8.3
26
+ version: 6.9.80.pre
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -41,33 +41,33 @@ dependencies:
41
41
  description: Commands used to talk to OpenNebula
42
42
  email: contact@opennebula.io
43
43
  executables:
44
- - onezone
45
- - onevcenter
46
- - oneimage
47
- - onevmgroup
48
- - onehost
44
+ - oneacct
45
+ - oneacl
46
+ - onebackupjob
47
+ - onecluster
48
+ - onedatastore
49
+ - oneflow
50
+ - oneflow-template
49
51
  - onegroup
50
52
  - onehook
51
- - onevdc
52
- - oneacl
53
+ - onehost
54
+ - oneimage
53
55
  - oneirb
54
- - oneflow-template
55
- - onevrouter
56
- - oneshowback
57
- - oneuser
58
- - oneacct
59
- - onesecgroup
60
- - onecluster
61
56
  - onelog
57
+ - onemarket
62
58
  - onemarketapp
59
+ - onesecgroup
60
+ - oneshowback
63
61
  - onetemplate
64
- - onemarket
65
- - onevntemplate
66
- - onevnet
67
- - oneflow
68
- - onedatastore
69
- - onebackupjob
62
+ - oneuser
63
+ - onevcenter
64
+ - onevdc
70
65
  - onevm
66
+ - onevmgroup
67
+ - onevnet
68
+ - onevntemplate
69
+ - onevrouter
70
+ - onezone
71
71
  extensions: []
72
72
  extra_rdoc_files: []
73
73
  files:
@@ -195,11 +195,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
195
  version: '0'
196
196
  required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - ">="
198
+ - - ">"
199
199
  - !ruby/object:Gem::Version
200
- version: '0'
200
+ version: 1.3.1
201
201
  requirements: []
202
- rubygems_version: 3.1.2
202
+ rubygems_version: 3.3.5
203
203
  signing_key:
204
204
  specification_version: 4
205
205
  summary: OpenNebula Command Line Interface