opennebula-cli 6.8.1 → 6.8.2
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/onebackupjob +2 -2
- data/bin/onedatastore +2 -2
- data/bin/oneflow-template +4 -4
- data/bin/onehook +2 -2
- data/bin/oneimage +8 -5
- data/bin/onemarket +2 -2
- data/bin/onemarketapp +8 -6
- data/bin/onesecgroup +2 -2
- data/bin/onetemplate +15 -10
- data/bin/oneuser +1 -1
- data/bin/onevcenter +1 -1
- data/bin/onevm +82 -18
- data/bin/onevmgroup +4 -4
- data/bin/onevnet +5 -5
- data/bin/onevntemplate +4 -4
- data/bin/onevrouter +11 -9
- data/bin/onezone +2 -2
- data/lib/one_helper/onebackupjob_helper.rb +2 -2
- data/lib/one_helper/onehost_helper.rb +2 -0
- data/lib/one_helper/oneimage_helper.rb +12 -0
- data/lib/one_helper/onemarketapp_helper.rb +5 -4
- data/lib/one_helper/onevm_helper.rb +2 -2
- data/lib/one_helper.rb +14 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15c54d3ad1c7f151f8f8c85761c9e7d807ebaf3b60e11c8ba722f9efa55b5e36
|
4
|
+
data.tar.gz: 2162024e4c15e1fe2fcd811adb3a10d84e33943f5f6a67d930a93d2b3734b859
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca211f3593bc2262afaacf6ee1872c00335f7edb86ca52d532fe2abbdfd16d89ba8d4f1b26607c3e44e3bb31e0ed14f33aeefb0cd9cf62b986c0fc8429eb870c
|
7
|
+
data.tar.gz: 708bf45d47a6755eb71bba7df087025ee4c2ff016a4d0cb4acff390ff7d3373b3695045e9c63ed5d880011c9520bde7ddc5fc00d20b04d0f8ab3402fb4e96c87
|
data/bin/onebackupjob
CHANGED
@@ -147,8 +147,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
147
147
|
begin
|
148
148
|
if args[0]
|
149
149
|
template = File.read(args[0])
|
150
|
-
elsif
|
151
|
-
template =
|
150
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
151
|
+
template = stdin
|
152
152
|
else
|
153
153
|
template = OneBackupJobHelper.create_backupjob_template(options)
|
154
154
|
end
|
data/bin/onedatastore
CHANGED
@@ -115,8 +115,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
115
115
|
begin
|
116
116
|
if args[0]
|
117
117
|
template = File.read(args[0])
|
118
|
-
elsif
|
119
|
-
template =
|
118
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
119
|
+
template = stdin
|
120
120
|
end
|
121
121
|
datastore.allocate(template, cid)
|
122
122
|
rescue StandardError => e
|
data/bin/oneflow-template
CHANGED
@@ -189,8 +189,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
189
189
|
|
190
190
|
if args[0]
|
191
191
|
template = File.read(args[0])
|
192
|
-
elsif
|
193
|
-
template =
|
192
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
193
|
+
template = stdin
|
194
194
|
end
|
195
195
|
|
196
196
|
if !template
|
@@ -262,8 +262,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
262
262
|
|
263
263
|
if args[1]
|
264
264
|
template = File.read(args[1])
|
265
|
-
elsif
|
266
|
-
template =
|
265
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
266
|
+
template = stdin
|
267
267
|
end
|
268
268
|
params['merge_template'] = JSON.parse(template) if template
|
269
269
|
|
data/bin/onehook
CHANGED
@@ -176,8 +176,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
176
176
|
begin
|
177
177
|
if args[0]
|
178
178
|
template = File.read(args[0])
|
179
|
-
elsif
|
180
|
-
template =
|
179
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
180
|
+
template = stdin
|
181
181
|
else
|
182
182
|
STDERR.puts 'No hook template provided'
|
183
183
|
exit(-1)
|
data/bin/oneimage
CHANGED
@@ -216,10 +216,13 @@ CommandParser::CmdParser.new(ARGV) do
|
|
216
216
|
check_capacity = true
|
217
217
|
end
|
218
218
|
|
219
|
-
|
220
|
-
|
219
|
+
conflicting_opts = []
|
220
|
+
if (args[0] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
221
|
+
OneImageHelper.create_template_options_used?(options, conflicting_opts)
|
222
|
+
|
223
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
224
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
221
225
|
|
222
|
-
STDERR.puts 'You cannot use both template and template creation options.'
|
223
226
|
next -1
|
224
227
|
end
|
225
228
|
|
@@ -236,8 +239,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
236
239
|
begin
|
237
240
|
if args[0]
|
238
241
|
template = File.read(args[0])
|
239
|
-
elsif
|
240
|
-
template =
|
242
|
+
elsif !stdin.empty?
|
243
|
+
template = stdin
|
241
244
|
else
|
242
245
|
res = OneImageHelper.create_image_template(options)
|
243
246
|
|
data/bin/onemarket
CHANGED
@@ -107,8 +107,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
107
107
|
begin
|
108
108
|
if args[0]
|
109
109
|
template = File.read(args[0])
|
110
|
-
elsif
|
111
|
-
template =
|
110
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
111
|
+
template = stdin
|
112
112
|
end
|
113
113
|
marketplace.allocate(template)
|
114
114
|
rescue StandardError => e
|
data/bin/onemarketapp
CHANGED
@@ -191,10 +191,12 @@ CommandParser::CmdParser.new(ARGV) do
|
|
191
191
|
exit(-1)
|
192
192
|
end
|
193
193
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
194
|
+
conflicting_opts = []
|
195
|
+
if (args[0] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
196
|
+
OneMarketPlaceAppHelper.create_template_options_used?(options, conflicting_opts)
|
197
|
+
|
198
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
199
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
198
200
|
next -1
|
199
201
|
end
|
200
202
|
|
@@ -202,8 +204,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
202
204
|
begin
|
203
205
|
if args[0]
|
204
206
|
template = File.read(args[0])
|
205
|
-
elsif
|
206
|
-
template =
|
207
|
+
elsif !stdin.empty?
|
208
|
+
template = stdin
|
207
209
|
else
|
208
210
|
res = OneMarketPlaceAppHelper
|
209
211
|
.create_datastore_template(options)
|
data/bin/onesecgroup
CHANGED
@@ -112,8 +112,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
112
112
|
begin
|
113
113
|
if args[0]
|
114
114
|
template = File.read(args[0])
|
115
|
-
elsif
|
116
|
-
template =
|
115
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
116
|
+
template = stdin
|
117
117
|
else
|
118
118
|
STDERR.puts 'No Security Group description provided'
|
119
119
|
exit(-1)
|
data/bin/onetemplate
CHANGED
@@ -166,10 +166,13 @@ CommandParser::CmdParser.new(ARGV) do
|
|
166
166
|
command :create, create_desc, [:file, nil], :options =>
|
167
167
|
[OneTemplateHelper::VM_NAME] + OpenNebulaHelper::TEMPLATE_OPTIONS +
|
168
168
|
[OpenNebulaHelper::DRY] do
|
169
|
-
|
170
|
-
|
169
|
+
conflicting_opts = []
|
170
|
+
if (args[0] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
171
|
+
OpenNebulaHelper.create_template_options_used?(options, conflicting_opts)
|
172
|
+
|
173
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
174
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
171
175
|
|
172
|
-
STDERR.puts 'You can not use both template file and template creation options.'
|
173
176
|
next -1
|
174
177
|
end
|
175
178
|
|
@@ -177,8 +180,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
177
180
|
begin
|
178
181
|
if args[0]
|
179
182
|
template = File.read(args[0])
|
180
|
-
elsif
|
181
|
-
template =
|
183
|
+
elsif !stdin.empty?
|
184
|
+
template = stdin
|
182
185
|
else
|
183
186
|
res = OpenNebulaHelper.create_template(options)
|
184
187
|
|
@@ -255,11 +258,13 @@ CommandParser::CmdParser.new(ARGV) do
|
|
255
258
|
command :instantiate, instantiate_desc, :templateid, [:file, nil],
|
256
259
|
:options => instantiate_options + OpenNebulaHelper::TEMPLATE_OPTIONS do
|
257
260
|
exit_code = 0
|
261
|
+
conflicting_opts = []
|
262
|
+
if (args[1] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
263
|
+
OpenNebulaHelper.create_template_options_used?(options, conflicting_opts)
|
258
264
|
|
259
|
-
|
260
|
-
|
265
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
266
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
261
267
|
|
262
|
-
STDERR.puts 'You cannot use both template and template creation options.'
|
263
268
|
next -1
|
264
269
|
end
|
265
270
|
|
@@ -305,8 +310,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
305
310
|
|
306
311
|
if args[1]
|
307
312
|
extra_template = File.read(args[1])
|
308
|
-
elsif
|
309
|
-
extra_template =
|
313
|
+
elsif !stdin.empty?
|
314
|
+
extra_template = stdin
|
310
315
|
else
|
311
316
|
res = OpenNebulaHelper.create_template(options, t)
|
312
317
|
|
data/bin/oneuser
CHANGED
@@ -621,7 +621,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
621
621
|
Example, request a valid token for a generic driver (e.g. core auth, LDAP...):
|
622
622
|
oneuser token-create my_user --time 3600
|
623
623
|
|
624
|
-
Example, request a group
|
624
|
+
Example, request a group specific token (new resources will be created in that
|
625
625
|
group and only resources that belong to that group will be listed):
|
626
626
|
oneuser token-create my_user --group <id|group>
|
627
627
|
|
data/bin/onevcenter
CHANGED
data/bin/onevm
CHANGED
@@ -349,19 +349,21 @@ CommandParser::CmdParser.new(ARGV) do
|
|
349
349
|
number = options[:multiple] || 1
|
350
350
|
exit_code = nil
|
351
351
|
|
352
|
-
|
353
|
-
|
352
|
+
conflicting_opts = []
|
353
|
+
if (args[0] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
354
|
+
OpenNebulaHelper.create_template_options_used?(options, conflicting_opts)
|
355
|
+
|
356
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
357
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
354
358
|
|
355
|
-
STDERR.puts 'You can not use both template file and template'\
|
356
|
-
' creation options.'
|
357
359
|
exit(-1)
|
358
360
|
end
|
359
361
|
|
360
362
|
begin
|
361
363
|
if args[0]
|
362
364
|
template = File.read(args[0])
|
363
|
-
elsif
|
364
|
-
template =
|
365
|
+
elsif !stdin.empty?
|
366
|
+
template = stdin
|
365
367
|
else
|
366
368
|
res = OpenNebulaHelper.create_template(options)
|
367
369
|
|
@@ -615,8 +617,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
615
617
|
|
616
618
|
if options[:file]
|
617
619
|
extra_template = File.read(options[:file])
|
618
|
-
elsif
|
619
|
-
extra_template =
|
620
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
621
|
+
extra_template = stdin
|
620
622
|
end
|
621
623
|
|
622
624
|
helper.perform_actions(args[0], options, verbose) do |vm|
|
@@ -689,7 +691,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
689
691
|
end
|
690
692
|
|
691
693
|
resume_desc = <<-EOT.unindent
|
692
|
-
Resumes the execution of
|
694
|
+
Resumes the execution of a saved VM
|
693
695
|
|
694
696
|
States: STOPPED, SUSPENDED, UNDEPLOYED, POWEROFF, UNKNOWN
|
695
697
|
EOT
|
@@ -718,7 +720,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
718
720
|
States for success/failure recovers: Any ACTIVE state.
|
719
721
|
States for a retry recover: Any *FAILURE state
|
720
722
|
States for delete: Any
|
721
|
-
States for
|
723
|
+
States for recreate: Any but DONE/POWEROFF/SUSPENDED
|
722
724
|
States for delete-db: Any
|
723
725
|
EOT
|
724
726
|
|
@@ -774,8 +776,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
774
776
|
TARGET, CACHE, DISCARD, PREFIX] do
|
775
777
|
if options[:file]
|
776
778
|
template = File.read(options[:file])
|
777
|
-
elsif
|
778
|
-
template =
|
779
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
780
|
+
template = stdin
|
779
781
|
elsif options[:image]
|
780
782
|
image_id = options[:image]
|
781
783
|
target = options[:target]
|
@@ -851,8 +853,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
851
853
|
] do
|
852
854
|
if options[:file]
|
853
855
|
template = File.read(options[:file])
|
854
|
-
elsif
|
855
|
-
template =
|
856
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
857
|
+
template = stdin
|
856
858
|
elsif options[:network]
|
857
859
|
network_id = options[:network]
|
858
860
|
ip = options[:ip]
|
@@ -1276,8 +1278,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1276
1278
|
:options => OpenNebulaHelper::CAPACITY_OPTIONS_VM + [ENFORCE, OpenNebulaHelper::FILE] do
|
1277
1279
|
if options[:file]
|
1278
1280
|
template = File.read(options[:file])
|
1279
|
-
elsif
|
1280
|
-
template =
|
1281
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
1282
|
+
template = stdin
|
1281
1283
|
else
|
1282
1284
|
template = ''
|
1283
1285
|
|
@@ -1373,8 +1375,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1373
1375
|
begin
|
1374
1376
|
if args[1]
|
1375
1377
|
template = File.read(args[1])
|
1376
|
-
elsif
|
1377
|
-
template =
|
1378
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
1379
|
+
template = stdin
|
1378
1380
|
end
|
1379
1381
|
rescue StandardError => e
|
1380
1382
|
STDERR.puts "Error reading template: #{e.message}."
|
@@ -1608,6 +1610,68 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1608
1610
|
'-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
|
1609
1611
|
EOT
|
1610
1612
|
|
1613
|
+
pci_attach_desc = <<-EOT.unindent
|
1614
|
+
Attaches a PCI to a VM.
|
1615
|
+
|
1616
|
+
You can specify the PCI device with --pci (short_address) or
|
1617
|
+
--pci_device (device ID), --pci_class (class ID) and/or --pci_vendor (vendor ID).
|
1618
|
+
|
1619
|
+
States: POWEROFF
|
1620
|
+
EOT
|
1621
|
+
|
1622
|
+
command :"pci-attach", pci_attach_desc, :vmid,
|
1623
|
+
:options => [
|
1624
|
+
OpenNebulaHelper::FILE,
|
1625
|
+
PCI,
|
1626
|
+
PCI_CLASS,
|
1627
|
+
PCI_VENDOR,
|
1628
|
+
PCI_DEVICE
|
1629
|
+
] do
|
1630
|
+
pci_attrs = [:pci, :pci_device, :pci_vendor, :pci_class].any? do |o|
|
1631
|
+
!options[o].nil?
|
1632
|
+
end
|
1633
|
+
|
1634
|
+
if options[:file]
|
1635
|
+
template = File.read(options[:file])
|
1636
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
1637
|
+
template = stdin
|
1638
|
+
elsif pci_attrs
|
1639
|
+
pcia = options[:pci]
|
1640
|
+
pcid = options[:pci_device]
|
1641
|
+
pcic = options[:pci_class]
|
1642
|
+
pciv = options[:pci_vendor]
|
1643
|
+
|
1644
|
+
pcis = []
|
1645
|
+
pcis << "SHORT_ADDRESS = \"#{pcia}\"" if pcia
|
1646
|
+
pcis << "DEVICE = \"#{pcid}\"" if pcid
|
1647
|
+
pcis << "CLASS = \"#{pcic}\"" if pcic
|
1648
|
+
pcis << "VENDOR = \"#{pciv}\"" if pciv
|
1649
|
+
|
1650
|
+
template = "PCI = [ #{pcis.join(',')} ]"
|
1651
|
+
else
|
1652
|
+
STDERR.puts 'Provide a PCI description file with --file or the relevant pci options:'
|
1653
|
+
exit(-1)
|
1654
|
+
end
|
1655
|
+
|
1656
|
+
helper.perform_action(args[0], options, 'Attaching PCI device') do |vm|
|
1657
|
+
vm.pci_attach(template)
|
1658
|
+
end
|
1659
|
+
end
|
1660
|
+
|
1661
|
+
pci_detach_desc = <<-EOT.unindent
|
1662
|
+
Detaches a PCI device from a VM
|
1663
|
+
|
1664
|
+
States: POWEROFF
|
1665
|
+
EOT
|
1666
|
+
|
1667
|
+
command :"pci-detach", pci_detach_desc, :vmid, :pciid do
|
1668
|
+
pciid = args[1].to_i
|
1669
|
+
|
1670
|
+
helper.perform_action(args[0], options, 'Detaching PCI') do |vm|
|
1671
|
+
vm.pci_detach(pciid)
|
1672
|
+
end
|
1673
|
+
end
|
1674
|
+
|
1611
1675
|
command :ssh,
|
1612
1676
|
ssh_desc,
|
1613
1677
|
:vmid,
|
data/bin/onevmgroup
CHANGED
@@ -138,8 +138,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
138
138
|
begin
|
139
139
|
if args[0]
|
140
140
|
template = File.read(args[0])
|
141
|
-
elsif
|
142
|
-
template =
|
141
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
142
|
+
template = stdin
|
143
143
|
else
|
144
144
|
STDERR.puts 'No VM Group description provided'
|
145
145
|
exit(-1)
|
@@ -292,8 +292,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
292
292
|
begin
|
293
293
|
if args[1]
|
294
294
|
template = File.read(args[1])
|
295
|
-
elsif
|
296
|
-
template =
|
295
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
296
|
+
template = stdin
|
297
297
|
end
|
298
298
|
rescue StandardError => e
|
299
299
|
STDERR.puts "Error reading template: #{e.message}."
|
data/bin/onevnet
CHANGED
@@ -173,8 +173,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
173
173
|
begin
|
174
174
|
if args[0]
|
175
175
|
template = File.read(args[0])
|
176
|
-
elsif
|
177
|
-
template =
|
176
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
177
|
+
template = stdin
|
178
178
|
end
|
179
179
|
vn.allocate(template, cid)
|
180
180
|
rescue StandardError => e
|
@@ -203,8 +203,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
203
203
|
helper.perform_action(args[0], options, 'address range added') do |vn|
|
204
204
|
if args[1]
|
205
205
|
ar = File.read(args[1])
|
206
|
-
elsif
|
207
|
-
ar =
|
206
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
207
|
+
ar = stdin
|
208
208
|
else
|
209
209
|
ar = OpenNebulaHelper.create_ar(options)
|
210
210
|
end
|
@@ -479,7 +479,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
479
479
|
States for delete: Any but READY
|
480
480
|
EOT
|
481
481
|
|
482
|
-
command :recover, recover_desc, [:range, :
|
482
|
+
command :recover, recover_desc, [:range, :vnetid_list],
|
483
483
|
:options => [SUCCESS, FAILURE, DELETE, RETRY] do
|
484
484
|
if !options[:success].nil?
|
485
485
|
result = 1
|
data/bin/onevntemplate
CHANGED
@@ -161,8 +161,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
161
161
|
begin
|
162
162
|
if args[0]
|
163
163
|
template = File.read(args[0])
|
164
|
-
elsif
|
165
|
-
template =
|
164
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
165
|
+
template = stdin
|
166
166
|
end
|
167
167
|
|
168
168
|
if options[:dry]
|
@@ -256,8 +256,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
256
256
|
|
257
257
|
if args[1]
|
258
258
|
extra_template = File.read(args[1])
|
259
|
-
elsif
|
260
|
-
extra_template =
|
259
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
260
|
+
extra_template = stdin
|
261
261
|
else
|
262
262
|
res = OpenNebulaHelper.create_template(options, t)
|
263
263
|
|
data/bin/onevrouter
CHANGED
@@ -142,8 +142,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
142
142
|
begin
|
143
143
|
if args[0]
|
144
144
|
template = File.read(args[0])
|
145
|
-
elsif
|
146
|
-
template =
|
145
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
146
|
+
template = stdin
|
147
147
|
end
|
148
148
|
obj.allocate(template)
|
149
149
|
rescue StandardError => e
|
@@ -174,10 +174,12 @@ CommandParser::CmdParser.new(ARGV) do
|
|
174
174
|
:vrouterid, :templateid, [:file, nil],
|
175
175
|
:options => instantiate_options +
|
176
176
|
OpenNebulaHelper::TEMPLATE_OPTIONS do
|
177
|
-
|
178
|
-
|
177
|
+
conflicting_opts = []
|
178
|
+
if (args[2] || !(stdin = OpenNebulaHelper.read_stdin).empty?) &&
|
179
|
+
OpenNebulaHelper.create_template_options_used?(options, conflicting_opts)
|
179
180
|
|
180
|
-
STDERR.puts 'You cannot
|
181
|
+
STDERR.puts 'You cannot pass template on STDIN and use template creation options, ' <<
|
182
|
+
"conflicting options: #{conflicting_opts.join(', ')}."
|
181
183
|
exit(-1)
|
182
184
|
end
|
183
185
|
|
@@ -201,8 +203,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
201
203
|
|
202
204
|
if args[2]
|
203
205
|
extra_template = File.read(args[2])
|
204
|
-
elsif
|
205
|
-
extra_template =
|
206
|
+
elsif !stdin.empty?
|
207
|
+
extra_template = stdin
|
206
208
|
else
|
207
209
|
res = OpenNebulaHelper.create_template(options, t)
|
208
210
|
|
@@ -307,8 +309,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
307
309
|
OneVirtualRouterHelper::FLOAT] do
|
308
310
|
if options[:file]
|
309
311
|
template = File.read(options[:file])
|
310
|
-
elsif
|
311
|
-
template =
|
312
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
313
|
+
template = stdin
|
312
314
|
elsif options[:network]
|
313
315
|
network_id = options[:network]
|
314
316
|
ip = options[:ip]
|
data/bin/onezone
CHANGED
@@ -111,8 +111,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
111
111
|
begin
|
112
112
|
if args[0]
|
113
113
|
template = File.read(args[0])
|
114
|
-
elsif
|
115
|
-
template =
|
114
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
115
|
+
template = stdin
|
116
116
|
else
|
117
117
|
STDERR.puts 'No zone template provided'
|
118
118
|
exit(-1)
|
@@ -155,8 +155,8 @@ class OneBackupJobHelper < OpenNebulaHelper::OneHelper
|
|
155
155
|
# Get user information
|
156
156
|
if file
|
157
157
|
str = File.read(file)
|
158
|
-
elsif
|
159
|
-
str =
|
158
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
159
|
+
str = stdin
|
160
160
|
else
|
161
161
|
str = OpenNebulaHelper.update_template(id, bj, nil, xpath)
|
162
162
|
end
|
@@ -794,6 +794,8 @@ class OneHostHelper < OpenNebulaHelper::OneHelper
|
|
794
794
|
numa_nodes.each do |node|
|
795
795
|
mon_node = monitoring.find {|x| x['NODE_ID'] == node['NODE_ID'] }
|
796
796
|
|
797
|
+
next if mon_node.nil?
|
798
|
+
|
797
799
|
node['MEMORY']['FREE'] = mon_node['MEMORY']['FREE']
|
798
800
|
node['MEMORY']['USED'] = mon_node['MEMORY']['USED']
|
799
801
|
|
@@ -518,6 +518,18 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
|
|
518
518
|
[0, template]
|
519
519
|
end
|
520
520
|
|
521
|
+
def create_template_options_used?(options, conflicting_opts)
|
522
|
+
# Get the template options names as symbols, options hash uses symbols
|
523
|
+
template_options=TEMPLATE_OPTIONS.map do |o|
|
524
|
+
o[:name].to_sym
|
525
|
+
end
|
526
|
+
|
527
|
+
# Check if one at least one of the template options is in options hash
|
528
|
+
conflicting_opts.replace(options.keys & template_options)
|
529
|
+
|
530
|
+
!conflicting_opts.empty?
|
531
|
+
end
|
532
|
+
|
521
533
|
end
|
522
534
|
|
523
535
|
end
|
@@ -129,16 +129,17 @@ class OneMarketPlaceAppHelper < OpenNebulaHelper::OneHelper
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
def self.create_template_options_used?(options)
|
132
|
+
def self.create_template_options_used?(options, conflicting_opts)
|
133
133
|
# Get the template options names as symbols. options hash
|
134
134
|
# uses symbols
|
135
135
|
template_options=self::TEMPLATE_OPTIONS.map do |o|
|
136
136
|
o[:name].to_sym
|
137
137
|
end
|
138
138
|
|
139
|
-
# Check if
|
140
|
-
|
141
|
-
|
139
|
+
# Check if at least one of the template options is in options hash
|
140
|
+
conflicting_opts.replace(options.keys & template_options)
|
141
|
+
|
142
|
+
!conflicting_opts.empty?
|
142
143
|
end
|
143
144
|
|
144
145
|
# Import object into marketplace
|
@@ -397,8 +397,8 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
|
|
397
397
|
# Get user information
|
398
398
|
if file
|
399
399
|
str = File.read(file)
|
400
|
-
elsif
|
401
|
-
str =
|
400
|
+
elsif !(stdin = OpenNebulaHelper.read_stdin).empty?
|
401
|
+
str = stdin
|
402
402
|
else
|
403
403
|
str = OpenNebulaHelper.update_template(vm_id, vm, nil, xpath)
|
404
404
|
end
|
data/lib/one_helper.rb
CHANGED
@@ -1712,8 +1712,8 @@ Bash symbols must be escaped on STDIN passing'
|
|
1712
1712
|
def self.update_template_helper(append, _id, resource, path, xpath, update = true)
|
1713
1713
|
if path
|
1714
1714
|
File.read(path)
|
1715
|
-
elsif
|
1716
|
-
|
1715
|
+
elsif !(stdin = self.read_stdin).empty?
|
1716
|
+
stdin
|
1717
1717
|
elsif append
|
1718
1718
|
editor_input
|
1719
1719
|
else
|
@@ -2095,16 +2095,17 @@ Bash symbols must be escaped on STDIN passing'
|
|
2095
2095
|
ar << ']'
|
2096
2096
|
end
|
2097
2097
|
|
2098
|
-
def self.create_template_options_used?(options)
|
2098
|
+
def self.create_template_options_used?(options, conflicting_opts)
|
2099
2099
|
# Get the template options names as symbols. options hash
|
2100
2100
|
# uses symbols
|
2101
2101
|
template_options=OpenNebulaHelper::TEMPLATE_OPTIONS.map do |o|
|
2102
2102
|
o[:name].to_sym
|
2103
2103
|
end
|
2104
2104
|
|
2105
|
-
# Check if
|
2106
|
-
|
2107
|
-
|
2105
|
+
# Check if at least one of the template options is in options hash
|
2106
|
+
conflicting_opts.replace(options.keys & template_options)
|
2107
|
+
|
2108
|
+
!conflicting_opts.empty?
|
2108
2109
|
end
|
2109
2110
|
|
2110
2111
|
def self.sunstone_url
|
@@ -2660,4 +2661,11 @@ Bash symbols must be escaped on STDIN passing'
|
|
2660
2661
|
end
|
2661
2662
|
end
|
2662
2663
|
|
2664
|
+
def self.read_stdin
|
2665
|
+
if STDIN.wait_readable(0)
|
2666
|
+
STDIN.read()
|
2667
|
+
else
|
2668
|
+
''
|
2669
|
+
end
|
2670
|
+
end
|
2663
2671
|
end
|
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.
|
4
|
+
version: 6.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-20 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.
|
19
|
+
version: 6.8.2
|
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.
|
26
|
+
version: 6.8.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|