opennebula-cli 7.2.0 → 7.3.80.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/bin/oneflow +52 -1
  3. data/bin/onegroup +33 -0
  4. data/bin/oneimage +7 -2
  5. data/bin/onesecgroup +2 -1
  6. data/bin/onevm +27 -8
  7. data/bin/onevnet +6 -21
  8. data/bin/onevntemplate +3 -3
  9. data/lib/command_parser.rb +134 -125
  10. data/lib/load_opennebula_paths.rb +5 -0
  11. data/lib/ods_helper.rb +724 -0
  12. data/lib/one_helper/oneacct_helper.rb +116 -108
  13. data/lib/one_helper/onedatastore_helper.rb +86 -79
  14. data/lib/one_helper/onegroup_helper.rb +20 -0
  15. data/lib/one_helper/onehost_helper.rb +10 -1
  16. data/lib/one_helper/oneimage_helper.rb +9 -2
  17. data/lib/one_helper/onemarket_helper.rb +58 -57
  18. data/lib/one_helper/onequota_helper.rb +239 -189
  19. data/lib/one_helper/onesecgroup_helper.rb +86 -84
  20. data/lib/one_helper/onetemplate_helper.rb +63 -63
  21. data/lib/one_helper/onevdc_helper.rb +44 -44
  22. data/lib/one_helper/onevm_helper.rb +5 -12
  23. data/lib/one_helper/onevmgroup_helper.rb +65 -64
  24. data/lib/one_helper/onevnet_helper.rb +6 -2
  25. data/lib/one_helper/onevntemplate_helper.rb +42 -39
  26. data/lib/one_helper/onevrouter_helper.rb +85 -86
  27. data/lib/one_helper/onezone_helper.rb +97 -100
  28. data/lib/one_helper.rb +102 -70
  29. data/share/schemas/xsd/acct.xsd +3 -104
  30. data/share/schemas/xsd/backupjob.xsd +1 -0
  31. data/share/schemas/xsd/cluster.xsd +4 -21
  32. data/share/schemas/xsd/datastore.xsd +4 -29
  33. data/share/schemas/xsd/document.xsd +3 -25
  34. data/share/schemas/xsd/group.xsd +17 -13
  35. data/share/schemas/xsd/group_pool.xsd +18 -14
  36. data/share/schemas/xsd/hook.xsd +2 -0
  37. data/share/schemas/xsd/host.xsd +5 -7
  38. data/share/schemas/xsd/image.xsd +2 -25
  39. data/share/schemas/xsd/marketplace.xsd +3 -22
  40. data/share/schemas/xsd/marketplaceapp.xsd +3 -25
  41. data/share/schemas/xsd/opennebula_configuration.xsd +2 -0
  42. data/share/schemas/xsd/requirements.xsd +3 -21
  43. data/share/schemas/xsd/security_group.xsd +6 -43
  44. data/share/schemas/xsd/shared.xsd +3 -3
  45. data/share/schemas/xsd/vdc.xsd +2 -7
  46. data/share/schemas/xsd/vm.xsd +2 -0
  47. data/share/schemas/xsd/vm_group.xsd +3 -25
  48. data/share/schemas/xsd/vm_pool.xsd +2 -0
  49. data/share/schemas/xsd/vmtemplate.xsd +3 -25
  50. data/share/schemas/xsd/vnet.xsd +13 -67
  51. data/share/schemas/xsd/vnet_pool.xsd +13 -58
  52. data/share/schemas/xsd/vntemplate.xsd +3 -25
  53. data/share/schemas/xsd/vrouter.xsd +4 -32
  54. metadata +8 -6
@@ -313,6 +313,26 @@ class OneGroupHelper < OpenNebulaHelper::OneHelper
313
313
 
314
314
  helper = OneQuotaHelper.new(@client)
315
315
  helper.format_quota(group_hash['GROUP'], default_quotas, group.id)
316
+
317
+ CLIHelper.print_header(str_h1 % 'VLAN RULES', false)
318
+
319
+ rules = [group_hash['GROUP']['VLAN_RULES']['RULE']].flatten rescue []
320
+ rules.compact!
321
+
322
+ CLIHelper::ShowTable.new(nil, self) do
323
+ column :VLAN_ID, 'VLAN Identifier range', :left, :size => 15 do |d|
324
+ d['ID']
325
+ end
326
+
327
+ column :SCOPE, 'Scope of the rule', :left, :size => 15 do |d|
328
+ d['SCOPE']
329
+ end
330
+
331
+ column :VNTEMPLATE, 'VN Template ID range', :left, :size => 15 do |d|
332
+ d['VNTEMPLATE'] || '-'
333
+ end
334
+ end.show(rules)
335
+ puts
316
336
  end
317
337
 
318
338
  end
@@ -16,7 +16,6 @@
16
16
 
17
17
  require 'time'
18
18
  require 'fileutils'
19
- require 'HostSyncManager'
20
19
  require 'one_helper'
21
20
  require 'one_helper/onevm_helper'
22
21
  require 'opennebula/host'
@@ -198,6 +197,16 @@ class OneHostHelper < OpenNebulaHelper::OneHelper
198
197
 
199
198
  NUM_THREADS = 15
200
199
  def sync(host_ids, options)
200
+ # HostSyncManager lives in the driver tree and is only shipped with the
201
+ # server packages. It is required lazily here so that a CLI-only install
202
+ # (opennebula-tools) keeps working for every other onehost subcommand,
203
+ # and only 'onehost sync' degrades when the driver libs are absent.
204
+ begin
205
+ require 'HostSyncManager'
206
+ rescue LoadError
207
+ return -1, "'onehost sync' is only available on the frontend."
208
+ end
209
+
201
210
  if Process.uid.zero? || Process.gid.zero?
202
211
  STDERR.puts("Cannot run 'onehost sync' as root")
203
212
  exit(-1)
@@ -18,6 +18,7 @@ require 'one_helper'
18
18
  require 'one_helper/onevm_helper'
19
19
  require 'opennebula/image'
20
20
  require 'opennebula/image_pool'
21
+ require 'opennebula/template_pool'
21
22
 
22
23
  # CLI helper for oneimage command
23
24
  class OneImageHelper < OpenNebulaHelper::OneHelper
@@ -273,8 +274,11 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
273
274
  pool = factory_pool
274
275
  tmpl_pool = OpenNebula::TemplatePool.new(@client, -2)
275
276
 
276
- pool.info
277
- tmpl_pool.info
277
+ rc = pool.info
278
+ return rc if OpenNebula.is_error?(rc)
279
+
280
+ rc = tmpl_pool.info
281
+ return rc if OpenNebula.is_error?(rc)
278
282
 
279
283
  pool.each do |img|
280
284
  next if img['TYPE'].to_i == 6 # skip backup images
@@ -366,6 +370,9 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
366
370
  CLIHelper.print_header(str_h1 % 'BACKUP INFORMATION', false)
367
371
  puts format(str, 'VM', vms[0])
368
372
 
373
+ disk_ids = image.retrieve_elements('BACKUP_DISK_IDS/ID')
374
+ puts format(str, 'DISK IDS', disk_ids.join(',')) if disk_ids
375
+
369
376
  if image.has_elements?('/IMAGE/BACKUP_INCREMENTS/INCREMENT')
370
377
  puts format(str, 'TYPE', 'INCREMENTAL')
371
378
 
@@ -18,24 +18,26 @@ require 'one_helper'
18
18
  require 'opennebula/marketplace'
19
19
  require 'opennebula/marketplace_pool'
20
20
 
21
+ # Helper class for Marketplace commands
21
22
  class OneMarketPlaceHelper < OpenNebulaHelper::OneHelper
23
+
22
24
  MARKETPLACE = {
23
- :name => "marketplace",
24
- :short => "-m id|name",
25
- :large => "--marketplace id|name" ,
26
- :description => "Selects the marketplace",
25
+ :name => 'marketplace',
26
+ :short => '-m id|name',
27
+ :large => '--marketplace id|name',
28
+ :description => 'Selects the marketplace',
27
29
  :format => String,
28
- :proc => lambda { |o, options|
29
- OpenNebulaHelper.rname_to_id(o, "MARKETPLACE")
30
+ :proc => lambda {|o, _options|
31
+ OpenNebulaHelper.rname_to_id(o, 'MARKETPLACE')
30
32
  }
31
33
  }
32
34
 
33
35
  def self.rname
34
- "MARKETPLACE"
36
+ 'MARKETPLACE'
35
37
  end
36
38
 
37
39
  def self.conf_file
38
- "onemarket.yaml"
40
+ 'onemarket.yaml'
39
41
  end
40
42
 
41
43
  def self.state_to_str(id)
@@ -47,51 +49,51 @@ class OneMarketPlaceHelper < OpenNebulaHelper::OneHelper
47
49
  def format_pool(options)
48
50
  config_file = self.class.table_conf
49
51
 
50
- table = CLIHelper::ShowTable.new(config_file, self) do
51
- column :ID, "ONE identifier for the Marketplace", :size=>4 do |d|
52
- d["ID"]
52
+ CLIHelper::ShowTable.new(config_file, self) do
53
+ column :ID, 'ONE identifier for the Marketplace', :size=>4 do |d|
54
+ d['ID']
53
55
  end
54
56
 
55
- column :USER, "Username of the Marketplace owner", :left,
56
- :size=>10 do |d|
57
+ column :USER, 'Username of the Marketplace owner', :left,
58
+ :size=>10 do |d|
57
59
  helper.user_name(d, options)
58
60
  end
59
61
 
60
- column :GROUP, "Group of the Marketplace", :left,
61
- :size=>10 do |d|
62
+ column :GROUP, 'Group of the Marketplace', :left,
63
+ :size=>10 do |d|
62
64
  helper.group_name(d, options)
63
65
  end
64
66
 
65
- column :NAME, "Name of the Marketplace", :left, :size=>30 do |d|
66
- d["NAME"]
67
+ column :NAME, 'Name of the Marketplace', :left, :size=>30 do |d|
68
+ d['NAME']
67
69
  end
68
70
 
69
- column :SIZE, "Marketplace total size", :size =>10 do |d|
71
+ column :SIZE, 'Marketplace total size', :size =>10 do |d|
70
72
  OpenNebulaHelper.unit_to_str(d['TOTAL_MB'].to_i, {}, 'M')
71
73
  end
72
74
 
73
- column :AVAIL, "Marketplace free size", :left, :size =>10 do |d|
75
+ column :AVAIL, 'Marketplace free size', :left, :size =>10 do |d|
74
76
  if d['TOTAL_MB'].to_i == 0
75
- "-"
77
+ '-'
76
78
  else
77
- "#{((d['FREE_MB'].to_f/d['TOTAL_MB'].to_f) * 100).round()}%"
79
+ "#{((d['FREE_MB'].to_f/d['TOTAL_MB'].to_f) * 100).round}%"
78
80
  end
79
81
  end
80
82
 
81
- column :APPS, "Number of marketplace apps", :size=>6 do |d|
82
- if d["MARKETPLACEAPPS"]["ID"].nil?
83
- "0"
83
+ column :APPS, 'Number of marketplace apps', :size=>6 do |d|
84
+ if d['MARKETPLACEAPPS']['ID'].nil?
85
+ '0'
84
86
  else
85
- [d["MARKETPLACEAPPS"]["ID"]].flatten.size
87
+ [d['MARKETPLACEAPPS']['ID']].flatten.size
86
88
  end
87
89
  end
88
90
 
89
- column :MAD, "Marketplace driver", :left, :size=>7 do |d|
90
- d["MARKET_MAD"]
91
+ column :MAD, 'Marketplace driver', :left, :size=>7 do |d|
92
+ d['MARKET_MAD']
91
93
  end
92
94
 
93
- column :ZONE, "Zone ID", :size=>4 do |d|
94
- d["ZONE_ID"]
95
+ column :ZONE, 'Zone ID', :size=>4 do |d|
96
+ d['ZONE_ID']
95
97
  end
96
98
 
97
99
  column :STAT, 'Markeplace status', :left, :size => 4 do |d|
@@ -100,13 +102,11 @@ class OneMarketPlaceHelper < OpenNebulaHelper::OneHelper
100
102
 
101
103
  default :ID, :NAME, :SIZE, :AVAIL, :APPS, :MAD, :ZONE, :STAT
102
104
  end
103
-
104
- table
105
105
  end
106
106
 
107
107
  private
108
108
 
109
- def factory(id=nil)
109
+ def factory(id = nil)
110
110
  if id
111
111
  OpenNebula::MarketPlace.new_with_id(id, @client)
112
112
  else
@@ -115,51 +115,52 @@ class OneMarketPlaceHelper < OpenNebulaHelper::OneHelper
115
115
  end
116
116
  end
117
117
 
118
- def factory_pool(user_flag=-2)
118
+ def factory_pool(_user_flag = -2)
119
119
  OpenNebula::MarketPlacePool.new(@client)
120
120
  end
121
121
 
122
- def format_resource(market, options = {})
123
- str="%-15s: %-20s"
124
- str_h1="%-80s"
122
+ def format_resource(market, _options = {})
123
+ str='%-15s: %-20s'
124
+ str_h1='%-80s'
125
125
 
126
126
  CLIHelper.print_header(str_h1 % "MARKETPLACE #{market['ID']} INFORMATION")
127
- puts str % ["ID", market.id.to_s]
128
- puts str % ["NAME", market.name]
129
- puts str % ["USER", market['UNAME']]
130
- puts str % ["GROUP", market['GNAME']]
131
- puts str % ["STATE", market.state_str]
127
+ puts format(str, 'ID', market.id.to_s)
128
+ puts format(str, 'NAME', market.name)
129
+ puts format(str, 'USER', market['UNAME'])
130
+ puts format(str, 'GROUP', market['GNAME'])
131
+ puts format(str, 'STATE', market.state_str)
132
132
 
133
- puts str % ["MARKET_MAD", market['MARKET_MAD']]
133
+ puts format(str, 'MARKET_MAD', market['MARKET_MAD'])
134
134
  puts
135
135
 
136
- CLIHelper.print_header(str_h1 % "MARKETPLACE CAPACITY", false)
136
+ CLIHelper.print_header(str_h1 % 'MARKETPLACE CAPACITY', false)
137
137
 
138
- puts str % ["TOTAL:", OpenNebulaHelper.unit_to_str(market['TOTAL_MB'].to_i,{},'M')]
139
- puts str % ["FREE:", OpenNebulaHelper.unit_to_str(market['FREE_MB'].to_i, {},'M')]
140
- puts str % ["USED: ", OpenNebulaHelper.unit_to_str(market['USED_MB'].to_i, {},'M')]
138
+ puts format(str, 'TOTAL:', OpenNebulaHelper.unit_to_str(market['TOTAL_MB'].to_i, {}, 'M'))
139
+ puts format(str, 'FREE:', OpenNebulaHelper.unit_to_str(market['FREE_MB'].to_i, {}, 'M'))
140
+ puts format(str, 'USED: ', OpenNebulaHelper.unit_to_str(market['USED_MB'].to_i, {}, 'M'))
141
141
  puts
142
142
 
143
- CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
143
+ CLIHelper.print_header(str_h1 % 'PERMISSIONS', false)
144
144
 
145
- ["OWNER", "GROUP", "OTHER"].each { |e|
146
- mask = "---"
147
- mask[0] = "u" if market["PERMISSIONS/#{e}_U"] == "1"
148
- mask[1] = "m" if market["PERMISSIONS/#{e}_M"] == "1"
149
- mask[2] = "a" if market["PERMISSIONS/#{e}_A"] == "1"
145
+ ['OWNER', 'GROUP', 'OTHER'].each do |e|
146
+ mask = '---'
147
+ mask[0] = 'u' if market["PERMISSIONS/#{e}_U"] == '1'
148
+ mask[1] = 'm' if market["PERMISSIONS/#{e}_M"] == '1'
149
+ mask[2] = 'a' if market["PERMISSIONS/#{e}_A"] == '1'
150
150
 
151
- puts str % [e, mask]
152
- }
151
+ puts format(str, e, mask)
152
+ end
153
153
  puts
154
154
 
155
- CLIHelper.print_header(str_h1 % "MARKETPLACE TEMPLATE", false)
155
+ CLIHelper.print_header(str_h1 % 'MARKETPLACE TEMPLATE', false)
156
156
  puts market.template_str
157
157
 
158
158
  puts
159
159
 
160
- CLIHelper.print_header("%-15s" % "MARKETAPPS")
160
+ CLIHelper.print_header(format('%-15s', 'MARKETAPPS'))
161
161
  market.marketapp_ids.each do |id|
162
- puts "%-15s" % [id]
162
+ puts format('%-15s', id)
163
163
  end
164
164
  end
165
+
165
166
  end