opennebula-cli 6.8.1 → 6.8.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|