opennebula-cli 5.12.8 → 5.13.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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/bin/oneacct +9 -4
  3. data/bin/oneacl +8 -5
  4. data/bin/onecluster +10 -7
  5. data/bin/onedatastore +10 -7
  6. data/bin/oneflow +85 -13
  7. data/bin/oneflow-template +45 -8
  8. data/bin/onegroup +10 -7
  9. data/bin/onehook +10 -7
  10. data/bin/onehost +8 -5
  11. data/bin/oneimage +99 -8
  12. data/bin/onemarket +10 -7
  13. data/bin/onemarketapp +117 -10
  14. data/bin/onesecgroup +13 -7
  15. data/bin/oneshowback +18 -10
  16. data/bin/onetemplate +12 -8
  17. data/bin/oneuser +30 -7
  18. data/bin/onevcenter +7 -4
  19. data/bin/onevdc +10 -7
  20. data/bin/onevm +146 -11
  21. data/bin/onevmgroup +13 -7
  22. data/bin/onevnet +8 -5
  23. data/bin/onevntemplate +11 -7
  24. data/bin/onevrouter +10 -7
  25. data/bin/onezone +10 -7
  26. data/lib/cli_helper.rb +4 -6
  27. data/lib/command_parser.rb +1 -1
  28. data/lib/one_helper.rb +398 -37
  29. data/lib/one_helper/oneacct_helper.rb +8 -17
  30. data/lib/one_helper/oneacl_helper.rb +1 -1
  31. data/lib/one_helper/onecluster_helper.rb +1 -1
  32. data/lib/one_helper/onedatastore_helper.rb +11 -1
  33. data/lib/one_helper/oneflow_helper.rb +20 -5
  34. data/lib/one_helper/oneflowtemplate_helper.rb +28 -2
  35. data/lib/one_helper/onegroup_helper.rb +1 -1
  36. data/lib/one_helper/onehook_helper.rb +1 -1
  37. data/lib/one_helper/onehost_helper.rb +1 -5
  38. data/lib/one_helper/oneimage_helper.rb +7 -7
  39. data/lib/one_helper/onemarket_helper.rb +1 -1
  40. data/lib/one_helper/onemarketapp_helper.rb +494 -96
  41. data/lib/one_helper/onequota_helper.rb +1 -1
  42. data/lib/one_helper/onesecgroup_helper.rb +1 -1
  43. data/lib/one_helper/onetemplate_helper.rb +12 -1
  44. data/lib/one_helper/oneuser_helper.rb +11 -3
  45. data/lib/one_helper/onevcenter_helper.rb +176 -146
  46. data/lib/one_helper/onevdc_helper.rb +1 -1
  47. data/lib/one_helper/onevm_helper.rb +4 -3
  48. data/lib/one_helper/onevmgroup_helper.rb +1 -1
  49. data/lib/one_helper/onevnet_helper.rb +1 -1
  50. data/lib/one_helper/onevntemplate_helper.rb +1 -1
  51. data/lib/one_helper/onevrouter_helper.rb +1 -20
  52. data/lib/one_helper/onezone_helper.rb +12 -1
  53. data/share/schemas/xsd/acct.xsd +179 -0
  54. data/share/schemas/xsd/acl_pool.xsd +22 -0
  55. data/share/schemas/xsd/api_info.xsd +43 -0
  56. data/share/schemas/xsd/cluster.xsd +34 -0
  57. data/share/schemas/xsd/cluster_pool.xsd +12 -0
  58. data/share/schemas/xsd/datastore.xsd +67 -0
  59. data/share/schemas/xsd/datastore_pool.xsd +12 -0
  60. data/share/schemas/xsd/document.xsd +42 -0
  61. data/share/schemas/xsd/document_pool.xsd +12 -0
  62. data/share/schemas/xsd/group.xsd +179 -0
  63. data/share/schemas/xsd/group_pool.xsd +194 -0
  64. data/share/schemas/xsd/hook.xsd +59 -0
  65. data/share/schemas/xsd/hook_message_api.xsd +14 -0
  66. data/share/schemas/xsd/hook_message_retry.xsd +12 -0
  67. data/share/schemas/xsd/hook_message_state.xsd +25 -0
  68. data/share/schemas/xsd/hook_pool.xsd +12 -0
  69. data/share/schemas/xsd/host.xsd +164 -0
  70. data/share/schemas/xsd/host_pool.xsd +12 -0
  71. data/share/schemas/xsd/image.xsd +123 -0
  72. data/share/schemas/xsd/image_pool.xsd +12 -0
  73. data/share/schemas/xsd/index.xsd +49 -0
  74. data/share/schemas/xsd/marketplace.xsd +44 -0
  75. data/share/schemas/xsd/marketplace_pool.xsd +12 -0
  76. data/share/schemas/xsd/marketplaceapp.xsd +56 -0
  77. data/share/schemas/xsd/marketplaceapp_pool.xsd +12 -0
  78. data/share/schemas/xsd/opennebula_configuration.xsd +412 -0
  79. data/share/schemas/xsd/raftstatus.xsd +18 -0
  80. data/share/schemas/xsd/security_group.xsd +74 -0
  81. data/share/schemas/xsd/security_group_pool.xsd +12 -0
  82. data/share/schemas/xsd/showback.xsd +29 -0
  83. data/share/schemas/xsd/user.xsd +186 -0
  84. data/share/schemas/xsd/user_pool.xsd +201 -0
  85. data/share/schemas/xsd/vdc.xsd +76 -0
  86. data/share/schemas/xsd/vdc_pool.xsd +12 -0
  87. data/share/schemas/xsd/vm.xsd +251 -0
  88. data/share/schemas/xsd/vm_group.xsd +59 -0
  89. data/share/schemas/xsd/vm_group_pool.xsd +12 -0
  90. data/share/schemas/xsd/vm_pool.xsd +114 -0
  91. data/share/schemas/xsd/vmtemplate.xsd +52 -0
  92. data/share/schemas/xsd/vmtemplate_pool.xsd +12 -0
  93. data/share/schemas/xsd/vnet.xsd +137 -0
  94. data/share/schemas/xsd/vnet_pool.xsd +85 -0
  95. data/share/schemas/xsd/vntemplate.xsd +50 -0
  96. data/share/schemas/xsd/vntemplate_pool.xsd +12 -0
  97. data/share/schemas/xsd/vrouter.xsd +49 -0
  98. data/share/schemas/xsd/vrouter_pool.xsd +12 -0
  99. data/share/schemas/xsd/zone.xsd +40 -0
  100. data/share/schemas/xsd/zone_pool.xsd +36 -0
  101. metadata +68 -7
  102. data/lib/one_helper/oneprovision_helper.rb +0 -362
data/bin/onehook CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # -------------------------------------------------------------------------- #
4
- # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
4
+ # Copyright 2002-2021, 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 #
@@ -27,9 +27,12 @@ else
27
27
  end
28
28
 
29
29
  if File.directory?(GEMS_LOCATION)
30
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
31
- require 'rubygems'
32
- Gem.use_paths(File.realpath(GEMS_LOCATION))
30
+ real_gems_path = File.realpath(GEMS_LOCATION)
31
+ if !defined?(Gem) || Gem.path != [real_gems_path]
32
+ $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
33
+ require 'rubygems'
34
+ Gem.use_paths(real_gems_path)
35
+ end
33
36
  end
34
37
 
35
38
  $LOAD_PATH << RUBY_LIB_LOCATION
@@ -133,8 +136,8 @@ CommandParser::CmdParser.new(ARGV) do
133
136
  ########################################################################
134
137
  set :option, CommandParser::OPTIONS + OpenNebulaHelper::CLIENT_OPTIONS
135
138
 
136
- list_options = CLIHelper::OPTIONS
137
- list_options << OpenNebulaHelper::XML
139
+ list_options = CLIHelper::OPTIONS
140
+ list_options += OpenNebulaHelper::FORMAT
138
141
  list_options << OpenNebulaHelper::NUMERIC
139
142
  list_options << OpenNebulaHelper::DESCRIBE
140
143
 
@@ -228,7 +231,7 @@ CommandParser::CmdParser.new(ARGV) do
228
231
  EOT
229
232
 
230
233
  command :show, show_desc, :hookid,
231
- :options => [OpenNebulaHelper::XML, OpenNebulaHelper::EXTENDED,
234
+ :options => [OpenNebulaHelper::FORMAT, OpenNebulaHelper::EXTENDED,
232
235
  EXECUTION] do
233
236
  helper.show_resource(args[0], options)
234
237
  end
data/bin/onehost CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # -------------------------------------------------------------------------- #
4
- # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
4
+ # Copyright 2002-2021, 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 #
@@ -29,9 +29,12 @@ else
29
29
  end
30
30
 
31
31
  if File.directory?(GEMS_LOCATION)
32
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
33
- require 'rubygems'
34
- Gem.use_paths(File.realpath(GEMS_LOCATION))
32
+ real_gems_path = File.realpath(GEMS_LOCATION)
33
+ if !defined?(Gem) || Gem.path != [real_gems_path]
34
+ $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
35
+ require 'rubygems'
36
+ Gem.use_paths(real_gems_path)
37
+ end
35
38
  end
36
39
 
37
40
  $LOAD_PATH << RUBY_LIB_LOCATION
@@ -283,7 +286,7 @@ CommandParser::CmdParser.new(ARGV) do
283
286
  EOT
284
287
 
285
288
  command :show, show_desc, :hostid,
286
- :options => [OpenNebulaHelper::XML, OpenNebulaHelper::DECRYPT] do
289
+ :options => [OpenNebulaHelper::FORMAT, OpenNebulaHelper::DECRYPT] do
287
290
  helper.show_resource(args[0], options)
288
291
  end
289
292
 
data/bin/oneimage CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # -------------------------------------------------------------------------- #
4
- # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
4
+ # Copyright 2002-2021, 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 #
@@ -27,14 +27,18 @@ else
27
27
  end
28
28
 
29
29
  if File.directory?(GEMS_LOCATION)
30
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
31
- require 'rubygems'
32
- Gem.use_paths(File.realpath(GEMS_LOCATION))
30
+ real_gems_path = File.realpath(GEMS_LOCATION)
31
+ if !defined?(Gem) || Gem.path != [real_gems_path]
32
+ $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
33
+ require 'rubygems'
34
+ Gem.use_paths(real_gems_path)
35
+ end
33
36
  end
34
37
 
35
38
  $LOAD_PATH << RUBY_LIB_LOCATION
36
39
  $LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
37
40
 
41
+ require 'tempfile'
38
42
  require 'command_parser'
39
43
  require 'one_helper/oneimage_helper'
40
44
  require 'one_helper/onedatastore_helper'
@@ -73,17 +77,25 @@ CommandParser::CmdParser.new(ARGV) do
73
77
  :description => 'lock all actions'
74
78
  }
75
79
 
80
+ NO_CONTEXT = {
81
+ :name => 'no_context',
82
+ :large => '--no-context',
83
+ :description => 'Do not add context when building from Dockerfile'
84
+ }
85
+
76
86
  ########################################################################
77
87
  # Global Options
78
88
  ########################################################################
79
89
  set :option, CommandParser::OPTIONS + OpenNebulaHelper::CLIENT_OPTIONS
80
90
 
81
- list_options = CLIHelper::OPTIONS
82
- list_options << OpenNebulaHelper::XML
91
+ list_options = CLIHelper::OPTIONS
92
+ list_options += OpenNebulaHelper::FORMAT
83
93
  list_options << OpenNebulaHelper::NUMERIC
84
94
  list_options << OpenNebulaHelper::DESCRIBE
85
95
 
86
- CREATE_OPTIONS = [OneDatastoreHelper::DATASTORE, OneImageHelper::IMAGE]
96
+ CREATE_OPTIONS = [OneDatastoreHelper::DATASTORE,
97
+ OneImageHelper::IMAGE,
98
+ NO_CONTEXT]
87
99
 
88
100
  ########################################################################
89
101
  # Formatters for arguments
@@ -168,6 +180,15 @@ CommandParser::CmdParser.new(ARGV) do
168
180
  next -1
169
181
  end
170
182
 
183
+ # Add context information when building image (just working on Docker)
184
+ if (options.key? :no_context) && options[:path]
185
+ if options[:path].include?('?')
186
+ options[:path] << '&context=no'
187
+ else
188
+ options[:path] << '?context=no'
189
+ end
190
+ end
191
+
171
192
  helper.create_resource(options) do |image|
172
193
  begin
173
194
  if args[0]
@@ -390,7 +411,8 @@ CommandParser::CmdParser.new(ARGV) do
390
411
  Shows information for the given Image
391
412
  EOT
392
413
 
393
- command :show, show_desc, :imageid, :options => OpenNebulaHelper::XML do
414
+ command :show, show_desc, :imageid,
415
+ :options => [OpenNebulaHelper::FORMAT, OpenNebulaHelper::DECRYPT] do
394
416
  helper.show_resource(args[0], options)
395
417
  end
396
418
 
@@ -450,4 +472,73 @@ CommandParser::CmdParser.new(ARGV) do
450
472
 
451
473
  return 0
452
474
  end
475
+
476
+ dockerfile_desc = <<-EOT.unindent
477
+ Create an image based on a Dockerfile
478
+ EOT
479
+
480
+ command :dockerfile,
481
+ dockerfile_desc,
482
+ :options => CREATE_OPTIONS +
483
+ OneImageHelper::TEMPLATE_OPTIONS do
484
+ # Check user options
485
+ unless options[:datastore]
486
+ STDERR.puts 'Datastore to save the image is mandatory: '
487
+ STDERR.puts '\t -d datastore_id'
488
+ exit(-1)
489
+ end
490
+
491
+ unless options[:name]
492
+ STDERR.puts 'No name provided'
493
+ exit(-1)
494
+ end
495
+
496
+ unless options[:size]
497
+ STDERR.puts 'No size given'
498
+ exit(-1)
499
+ end
500
+
501
+ # Prepare editor
502
+ tmp = Tempfile.new('dockerfile')
503
+
504
+ if ENV['EDITOR']
505
+ editor_path = ENV['EDITOR']
506
+ else
507
+ editor_path = EDITOR_PATH
508
+ end
509
+
510
+ system("#{editor_path} #{tmp.path}")
511
+
512
+ unless $CHILD_STATUS.exitstatus.zero?
513
+ STDERR.puts('Editor not defined')
514
+ exit(-1)
515
+ end
516
+
517
+ tmp.close
518
+
519
+ # Create image
520
+ helper.create_resource(options) do |image|
521
+ begin
522
+ b64 = Base64.strict_encode64(File.read(tmp.path))
523
+ options[:path] = "dockerfile:///?fileb64=#{b64}&" \
524
+ "size=#{options[:size]}"
525
+
526
+ options[:path] << '&context=no' if options.key?(:no_context)
527
+
528
+ res = OneImageHelper.create_image_template(options)
529
+
530
+ if res.first != 0
531
+ STDERR.puts res.last
532
+ next -1
533
+ end
534
+
535
+ template = res.last
536
+
537
+ image.allocate(template, options[:datastore], false)
538
+ rescue StandardError => e
539
+ STDERR.puts e.message
540
+ exit(-1)
541
+ end
542
+ end
543
+ end
453
544
  end
data/bin/onemarket CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # -------------------------------------------------------------------------- #
4
- # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
4
+ # Copyright 2002-2021, 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 #
@@ -27,9 +27,12 @@ else
27
27
  end
28
28
 
29
29
  if File.directory?(GEMS_LOCATION)
30
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
31
- require 'rubygems'
32
- Gem.use_paths(File.realpath(GEMS_LOCATION))
30
+ real_gems_path = File.realpath(GEMS_LOCATION)
31
+ if !defined?(Gem) || Gem.path != [real_gems_path]
32
+ $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
33
+ require 'rubygems'
34
+ Gem.use_paths(real_gems_path)
35
+ end
33
36
  end
34
37
 
35
38
  $LOAD_PATH << RUBY_LIB_LOCATION
@@ -53,8 +56,8 @@ CommandParser::CmdParser.new(ARGV) do
53
56
  ########################################################################
54
57
  set :option, CommandParser::OPTIONS + OpenNebulaHelper::CLIENT_OPTIONS
55
58
 
56
- list_options = CLIHelper::OPTIONS
57
- list_options << OpenNebulaHelper::XML
59
+ list_options = CLIHelper::OPTIONS
60
+ list_options += OpenNebulaHelper::FORMAT
58
61
  list_options << OpenNebulaHelper::NUMERIC
59
62
  list_options << OpenNebulaHelper::DESCRIBE
60
63
 
@@ -154,7 +157,7 @@ CommandParser::CmdParser.new(ARGV) do
154
157
  EOT
155
158
 
156
159
  command :show, show_desc,
157
- :marketplaceid, :options => OpenNebulaHelper::XML do
160
+ :marketplaceid, :options => OpenNebulaHelper::FORMAT do
158
161
  helper.show_resource(args[0], options)
159
162
  end
160
163
 
data/bin/onemarketapp CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # -------------------------------------------------------------------------- #
4
- # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
4
+ # Copyright 2002-2021, 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 #
@@ -29,9 +29,12 @@ else
29
29
  end
30
30
 
31
31
  if File.directory?(GEMS_LOCATION)
32
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
33
- require 'rubygems'
34
- Gem.use_paths(File.realpath(GEMS_LOCATION))
32
+ real_gems_path = File.realpath(GEMS_LOCATION)
33
+ if !defined?(Gem) || Gem.path != [real_gems_path]
34
+ $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
35
+ require 'rubygems'
36
+ Gem.use_paths(real_gems_path)
37
+ end
35
38
  end
36
39
 
37
40
  $LOAD_PATH << RUBY_LIB_LOCATION
@@ -42,6 +45,9 @@ require 'one_helper/onemarketapp_helper'
42
45
  require 'one_helper/onemarket_helper'
43
46
  require 'one_helper/onedatastore_helper'
44
47
 
48
+ require 'vcenter_driver'
49
+ CONFIG = VCenterConf.new
50
+
45
51
  CommandParser::CmdParser.new(ARGV) do
46
52
  usage '`onemarket` <command> [<args>] [<options>]'
47
53
  version OpenNebulaHelper::ONE_VERSION
@@ -83,20 +89,56 @@ CommandParser::CmdParser.new(ARGV) do
83
89
  :description => 'DockerHub image tag (default latest)'
84
90
  }
85
91
 
92
+ YES = {
93
+ :name => 'yes',
94
+ :large => '--yes',
95
+ :description => 'Import associated VM templates/images',
96
+ :proc => lambda do |_, options|
97
+ options[:yes] = 'yes'
98
+ end
99
+ }
100
+
101
+ NO = {
102
+ :name => 'no',
103
+ :large => '--no',
104
+ :description => 'Do not import/export associated VM templates/images',
105
+ :proc => lambda do |_, options|
106
+ options[:no] = 'no'
107
+ end
108
+ }
109
+
110
+ TEMPLATE = {
111
+ :name => 'template',
112
+ :large => '--template template_id ',
113
+ :description => 'Associate with VM template',
114
+ :format => Integer
115
+ }
116
+
117
+ MARKET = {
118
+ :name => 'market',
119
+ :large => '--market market_id',
120
+ :format => Integer,
121
+ :description => 'Market to import all objects'
122
+ }
123
+
86
124
  ########################################################################
87
125
  # Global Options
88
126
  ########################################################################
89
127
  set :option, CommandParser::OPTIONS + OpenNebulaHelper::CLIENT_OPTIONS
90
128
 
91
- list_options = CLIHelper::OPTIONS
92
- list_options << OpenNebulaHelper::XML
129
+ list_options = CLIHelper::OPTIONS
130
+ list_options += OpenNebulaHelper::FORMAT
93
131
  list_options << OpenNebulaHelper::NUMERIC
94
132
  list_options << OpenNebulaHelper::DESCRIBE
95
133
 
96
134
  CREATE_OPTIONS = [OneMarketPlaceHelper::MARKETPLACE]
97
135
  EXPORT_OPTIONS = [OneDatastoreHelper::DATASTORE,
136
+ OneDatastoreHelper::FILE_DATASTORE,
98
137
  OneMarketPlaceAppHelper::VMNAME,
99
- TAG]
138
+ TAG,
139
+ NO,
140
+ TEMPLATE]
141
+ IMPORT_OPTIONS = [YES, NO, MARKET, OneMarketPlaceAppHelper::VMNAME]
100
142
 
101
143
  ########################################################################
102
144
  # Formatters for arguments
@@ -175,6 +217,60 @@ CommandParser::CmdParser.new(ARGV) do
175
217
  end
176
218
  end
177
219
 
220
+ import_desc = <<-EOT.unindent
221
+ Imports a service template into the marketplace
222
+ EOT
223
+
224
+ command [:'service-template', :import],
225
+ import_desc,
226
+ :service_template_id,
227
+ :options => IMPORT_OPTIONS do
228
+ helper.import(args[0], ServiceTemplate) do |id|
229
+ helper.import_service_template(id, options)
230
+ end
231
+ end
232
+
233
+ vm_import_desc = <<-EOT.unindent
234
+ Imports a VM template into the marketplace
235
+ EOT
236
+
237
+ command [:'vm-template', :import],
238
+ vm_import_desc,
239
+ :vm_template_id,
240
+ :options => IMPORT_OPTIONS do
241
+ helper.import(args[0], TemplatePool) do |id|
242
+ helper.import_vm_template(id, options)
243
+ end
244
+ end
245
+
246
+ vm_import_desc = <<-EOT.unindent
247
+ Imports a VM into the marketplace
248
+ EOT
249
+
250
+ command [:vm, :import],
251
+ vm_import_desc,
252
+ :vm_id,
253
+ :options => IMPORT_OPTIONS do
254
+ t_id = helper.save_as_template(
255
+ helper.get_obj_id(args[0], VirtualMachinePool)
256
+ )
257
+
258
+ if OpenNebula.is_error?(t_id)
259
+ STDERR.puts t_id.message
260
+ exit(-1)
261
+ else
262
+ helper.import(t_id, TemplatePool) do |id|
263
+ helper.import_vm_template(id, options)
264
+ end
265
+ end
266
+
267
+ puts
268
+ puts 'To delete saved template use: ' \
269
+ "`onetemplate delete #{t_id} --recursive`"
270
+
271
+ 0
272
+ end
273
+
178
274
  export_desc = <<-EOT.unindent
179
275
  Exports the marketplace app to the OpenNebula cloud
180
276
  EOT
@@ -183,20 +279,31 @@ CommandParser::CmdParser.new(ARGV) do
183
279
  helper.perform_action(args[0], options, 'exported') do |obj|
184
280
  tag ="tag=#{options[:tag]}" if options[:tag]
185
281
 
282
+ obj.extend(MarketPlaceAppExt)
283
+
186
284
  rc = obj.export(
187
285
  :dsid => options[:datastore],
188
286
  :name => args[1],
189
287
  :vmtemplate_name => options[:vmname],
190
- :url_args => tag
288
+ :url_args => tag,
289
+ :notemplate => options[:no] == 'no',
290
+ :template => options[:template],
291
+ :default_template => CONFIG[:default_template]
191
292
  )
192
293
 
193
- next rc if OpenNebula.is_error?(rc)
294
+ if OpenNebula.is_error?(rc)
295
+ STDERR.puts rc.message
296
+ exit(-1)
297
+ end
194
298
 
195
299
  rc.each do |key, value|
300
+ next if value.nil? || value.empty? || key == :image_type
301
+
196
302
  puts key.to_s.upcase
197
303
  value.each do |id|
198
304
  if OpenNebula.is_error?(id)
199
305
  puts id.to_str
306
+ exit(-1)
200
307
  else
201
308
  puts " ID: #{id}"
202
309
  end
@@ -300,7 +407,7 @@ CommandParser::CmdParser.new(ARGV) do
300
407
  Shows information for the given marketplace app
301
408
  EOT
302
409
 
303
- command :show, show_desc, :appid, :options => OpenNebulaHelper::XML do
410
+ command :show, show_desc, :appid, :options => OpenNebulaHelper::FORMAT do
304
411
  helper.show_resource(args[0], options)
305
412
  end
306
413