opennebula-cli 6.0.0.1 → 6.0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,174 +16,176 @@
16
16
  require 'one_helper'
17
17
  require 'one_helper/onevm_helper'
18
18
 
19
+ # OneVnet Command Helper
19
20
  class OneVNetHelper < OpenNebulaHelper::OneHelper
21
+
20
22
  AR = {
21
- :name => "address_range",
22
- :short => "-a ar_id",
23
- :large => "--address_range ar_id",
23
+ :name => 'address_range',
24
+ :short => '-a ar_id',
25
+ :large => '--address_range ar_id',
24
26
  :format => Integer,
25
- :description => "ID of the address range"
27
+ :description => 'ID of the address range'
26
28
  }
27
29
 
28
30
  SHOW_AR = {
29
- :name => "show_ar",
30
- :large => "--show-ar",
31
- :description => "Show also AR templates"
31
+ :name => 'show_ar',
32
+ :large => '--show-ar',
33
+ :description => 'Show also AR templates'
32
34
  }
33
35
 
34
36
  MAC = {
35
- :name => "mac",
36
- :short => "-m mac",
37
- :large => "--mac mac",
37
+ :name => 'mac',
38
+ :short => '-m mac',
39
+ :large => '--mac mac',
38
40
  :format => String,
39
- :description => "First MAC address in : notation"
41
+ :description => 'First MAC address in : notation'
40
42
  }
41
43
 
42
44
  IP = {
43
- :name => "ip",
44
- :short => "-i ip",
45
- :large => "--ip ip",
45
+ :name => 'ip',
46
+ :short => '-i ip',
47
+ :large => '--ip ip',
46
48
  :format => String,
47
- :description => "First IP address in . notation"
49
+ :description => 'First IP address in . notation'
48
50
  }
49
51
 
50
52
  IP6 = {
51
- :name => "ip6",
52
- :short => "-6 ip6",
53
- :large => "--ip6 ip6",
53
+ :name => 'ip6',
54
+ :short => '-6 ip6',
55
+ :large => '--ip6 ip6',
54
56
  :format => String,
55
- :description => "First IPv6 address, in CIDR notation e.g. 2001::1/48"
57
+ :description => 'First IPv6 address, in CIDR notation e.g. 2001::1/48'
56
58
  }
57
59
 
58
60
  SIZE = {
59
- :name => "size",
60
- :short => "-s size",
61
- :large => "--size size",
61
+ :name => 'size',
62
+ :short => '-s size',
63
+ :large => '--size size',
62
64
  :format => String,
63
- :description => "Number of addresses"
65
+ :description => 'Number of addresses'
64
66
  }
65
67
 
66
68
  IP6_GLOBAL = {
67
- :name => "ip6_global",
68
- :short => "-g ip6_pref",
69
- :large => "--ip6_global ip6_pref",
69
+ :name => 'ip6_global',
70
+ :short => '-g ip6_pref',
71
+ :large => '--ip6_global ip6_pref',
70
72
  :format => String,
71
- :description => "IP6 global prefix"
73
+ :description => 'IP6 global prefix'
72
74
  }
73
75
 
74
76
  IP6_ULA = {
75
- :name => "ip6_ula",
76
- :short => "-u ip6_pref",
77
- :large => "--ip6_ula ip6_pref",
77
+ :name => 'ip6_ula',
78
+ :short => '-u ip6_pref',
79
+ :large => '--ip6_ula ip6_pref',
78
80
  :format => String,
79
- :description => "IP6 ula prefix"
81
+ :description => 'IP6 ula prefix'
80
82
  }
81
83
 
82
84
  NAME = {
83
- :name => "name",
84
- :short => "-n reservation name",
85
- :large => "--name reservation name",
85
+ :name => 'name',
86
+ :short => '-n reservation name',
87
+ :large => '--name reservation name',
86
88
  :format => String,
87
- :description => "Name of the address reservation"
89
+ :description => 'Name of the address reservation'
88
90
  }
89
91
 
90
- # R_SIZE = {
91
- # :name => "rsize",
92
- # :short => "-s reservation size",
93
- # :large => "--size reservation size",
94
- # :format => String,
95
- # :description => "Number of addresses to reserve"
96
- # }
92
+ # R_SIZE = {
93
+ # :name => "rsize",
94
+ # :short => "-s reservation size",
95
+ # :large => "--size reservation size",
96
+ # :format => String,
97
+ # :description => "Number of addresses to reserve"
98
+ # }
97
99
 
98
100
  GATEWAY = {
99
- :name => "gateway",
100
- :large => "--gateway ip",
101
+ :name => 'gateway',
102
+ :large => '--gateway ip',
101
103
  :format => String,
102
- :description=> "IP of the gateway"
104
+ :description=> 'IP of the gateway'
103
105
  }
104
106
 
105
107
  NETMASK = {
106
- :name => "netmask",
107
- :large => "--netmask mask",
108
+ :name => 'netmask',
109
+ :large => '--netmask mask',
108
110
  :format => String,
109
- :description=> "Netmask in dot notation"
111
+ :description=> 'Netmask in dot notation'
110
112
  }
111
113
 
112
114
  VN_MAD = {
113
- :name => "vn_mad",
114
- :large => "--vn_mad mad",
115
+ :name => 'vn_mad',
116
+ :large => '--vn_mad mad',
115
117
  :format => String,
116
- :description=> "Use this driver for the network"
118
+ :description=> 'Use this driver for the network'
117
119
  }
118
120
 
119
121
  VLAN_ID = {
120
- :name => "vlanid",
121
- :large => "--vlanid id",
122
+ :name => 'vlanid',
123
+ :large => '--vlanid id',
122
124
  :format => String,
123
- :description=> "VLAN ID assigned"
125
+ :description=> 'VLAN ID assigned'
124
126
  }
125
127
 
126
128
  ADDAR_OPTIONS = [
127
129
  SIZE, MAC, IP, IP6, IP6_GLOBAL, IP6_ULA, GATEWAY, NETMASK, VN_MAD,
128
- VLAN_ID ]
130
+ VLAN_ID
131
+ ]
129
132
 
130
133
  def self.rname
131
- "VNET"
134
+ 'VNET'
132
135
  end
133
136
 
134
137
  def self.conf_file
135
- "onevnet.yaml"
138
+ 'onevnet.yaml'
136
139
  end
137
140
 
138
141
  def format_pool(options)
139
142
  config_file = self.class.table_conf
140
143
 
141
- table = CLIHelper::ShowTable.new(config_file, self) do
142
- column :ID, "ONE identifier for Virtual Network", :size=>4 do |d|
143
- d["ID"]
144
+ CLIHelper::ShowTable.new(config_file, self) do
145
+ column :ID, 'ONE identifier for Virtual Network', :size=>4 do |d|
146
+ d['ID']
144
147
  end
145
148
 
146
- column :USER, "Username of the Virtual Network owner", :left,
147
- :size=>15 do |d|
149
+ column :USER, 'Username of the Virtual Network owner', :left,
150
+ :size=>15 do |d|
148
151
  helper.user_name(d, options)
149
152
  end
150
153
 
151
- column :GROUP, "Group of the Virtual Network", :left,
152
- :size=>12 do |d|
154
+ column :GROUP, 'Group of the Virtual Network', :left,
155
+ :size=>12 do |d|
153
156
  helper.group_name(d, options)
154
157
  end
155
158
 
156
- column :NAME, "Name of the Virtual Network", :left,
157
- :size=>19 do |d|
158
- d["NAME"]
159
+ column :NAME, 'Name of the Virtual Network', :left,
160
+ :size=>19 do |d|
161
+ d['NAME']
159
162
  end
160
163
 
161
- column :CLUSTERS, "Cluster IDs", :left, :size=>10 do |d|
162
- OpenNebulaHelper.clusters_str(d["CLUSTERS"]["ID"]) rescue "-"
164
+ column :CLUSTERS, 'Cluster IDs', :left, :size=>10 do |d|
165
+ OpenNebulaHelper.clusters_str(d['CLUSTERS']['ID']) rescue '-'
163
166
  end
164
167
 
165
- column :BRIDGE, "Bridge associated to the Virtual Network", :left,
166
- :size=>8 do |d|
167
- d["BRIDGE"]
168
+ column :BRIDGE, 'Bridge associated to the Virtual Network', :left,
169
+ :size=>8 do |d|
170
+ d['BRIDGE']
168
171
  end
169
172
 
170
173
  column :LEASES, "Number of this Virtual Network's given leases",
171
- :size=>6 do |d|
172
- d["USED_LEASES"]
174
+ :size=>6 do |d|
175
+ d['USED_LEASES']
173
176
  end
174
177
 
175
178
  default :ID, :USER, :GROUP, :NAME, :CLUSTERS, :BRIDGE, :LEASES
176
179
  end
177
-
178
- table
179
180
  end
180
181
 
181
182
  def show_ar(vn, ar_id)
182
- CLIHelper.print_header("%-80s" % ["TEMPLATE FOR AR #{ar_id}"], false)
183
+ CLIHelper.print_header(format('%-80s', "TEMPLATE FOR AR #{ar_id}"),
184
+ false)
183
185
 
184
186
  begin
185
187
  template = vn.template_like_str("AR_POOL/AR[AR_ID=#{ar_id}]")
186
- rescue
188
+ rescue StandardError
187
189
  STDERR.puts "Can not get template for AR #{ar_id}"
188
190
  return
189
191
  end
@@ -281,7 +283,7 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
281
283
 
282
284
  private
283
285
 
284
- def factory(id=nil)
286
+ def factory(id = nil)
285
287
  if id
286
288
  OpenNebula::VirtualNetwork.new_with_id(id, @client)
287
289
  else
@@ -290,55 +292,63 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
290
292
  end
291
293
  end
292
294
 
293
- def factory_pool(user_flag=-2)
295
+ def factory_pool(user_flag = -2)
294
296
  OpenNebula::VirtualNetworkPool.new(@client, user_flag)
295
297
  end
296
298
 
297
299
  def format_resource(vn, options = {})
298
300
  vn_hash = vn.to_hash
299
301
 
300
- str_h1="%-80s"
301
- CLIHelper.print_header(str_h1 %
302
- ["VIRTUAL NETWORK #{vn.id.to_s} INFORMATION"])
303
-
304
- str="%-25s: %-20s"
305
- puts str % ["ID", vn.id.to_s]
306
- puts str % ["NAME", vn['NAME']]
307
- puts str % ["USER", vn['UNAME']]
308
- puts str % ["GROUP", vn['GNAME']]
309
- puts str % ["LOCK", OpenNebulaHelper.level_lock_to_str(vn['LOCK/LOCKED'])]
310
- puts str % ["CLUSTERS",
311
- OpenNebulaHelper.clusters_str(vn.retrieve_elements("CLUSTERS/ID"))]
312
- puts str % ["BRIDGE", vn["BRIDGE"]]
313
- puts str % ["VN_MAD", vn['VN_MAD']] if !vn['VN_MAD'].empty?
314
- puts str % ["PHYSICAL DEVICE", vn["PHYDEV"]] if !vn["PHYDEV"].empty?
315
- puts str % ["VLAN ID", vn["VLAN_ID"]] if !vn["VLAN_ID"].empty?
316
- puts str % ["AUTOMATIC VLAN ID", vn["VLAN_ID_AUTOMATIC"]=="1" ? "YES" : "NO"]
317
- puts str % ["OUTER VLAN ID", vn["OUTER_VLAN_ID"]] if !vn["OUTER_VLAN_ID"]
318
- puts str % ["AUTOMATIC OUTER VLAN ID", vn["OUTER_VLAN_ID_AUTOMATIC"]=="1" ? "YES" : "NO"]
319
- puts str % ["USED LEASES", vn['USED_LEASES']]
302
+ str_h1='%-80s'
303
+ CLIHelper.print_header(format(str_h1,
304
+ "VIRTUAL NETWORK #{vn.id} INFORMATION"))
305
+
306
+ str='%-25s: %-20s'
307
+ puts format(str, 'ID', vn.id.to_s)
308
+ puts format(str, 'NAME', vn['NAME'])
309
+ puts format(str, 'USER', vn['UNAME'])
310
+ puts format(str, 'GROUP', vn['GNAME'])
311
+ puts format(str, 'LOCK',
312
+ OpenNebulaHelper.level_lock_to_str(vn['LOCK/LOCKED']))
313
+ puts format(str, 'CLUSTERS',
314
+ OpenNebulaHelper.clusters_str(
315
+ vn.retrieve_elements('CLUSTERS/ID')
316
+ ))
317
+ puts format(str, 'BRIDGE', vn['BRIDGE'])
318
+ puts format(str, 'VN_MAD', vn['VN_MAD']) unless vn['VN_MAD'].empty?
319
+ puts format(str, 'PHYSICAL DEVICE',
320
+ vn['PHYDEV']) unless vn['PHYDEV'].empty?
321
+ puts format(str, 'VLAN ID', vn['VLAN_ID']) unless vn['VLAN_ID'].empty?
322
+ puts format(str, 'AUTOMATIC VLAN ID',
323
+ vn['VLAN_ID_AUTOMATIC']=='1' ? 'YES' : 'NO')
324
+ puts format(str, 'OUTER VLAN ID',
325
+ vn['OUTER_VLAN_ID']) unless vn['OUTER_VLAN_ID']
326
+ puts format(str, 'AUTOMATIC OUTER VLAN ID',
327
+ vn['OUTER_VLAN_ID_AUTOMATIC']=='1' ? 'YES' : 'NO')
328
+ puts format(str, 'USED LEASES', vn['USED_LEASES'])
320
329
  puts
321
330
 
322
- CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
331
+ CLIHelper.print_header(str_h1 % 'PERMISSIONS', false)
323
332
 
324
- ["OWNER", "GROUP", "OTHER"].each { |e|
325
- mask = "---"
326
- mask[0] = "u" if vn["PERMISSIONS/#{e}_U"] == "1"
327
- mask[1] = "m" if vn["PERMISSIONS/#{e}_M"] == "1"
328
- mask[2] = "a" if vn["PERMISSIONS/#{e}_A"] == "1"
333
+ %w[OWNER GROUP OTHER].each do |e|
334
+ mask = '---'
335
+ mask[0] = 'u' if vn["PERMISSIONS/#{e}_U"] == '1'
336
+ mask[1] = 'm' if vn["PERMISSIONS/#{e}_M"] == '1'
337
+ mask[2] = 'a' if vn["PERMISSIONS/#{e}_A"] == '1'
329
338
 
330
- puts str % [e, mask]
331
- }
339
+ puts format(str, e, mask)
340
+ end
332
341
 
333
342
  puts
334
343
 
335
- CLIHelper.print_header(str_h1 % ["VIRTUAL NETWORK TEMPLATE"], false)
344
+ CLIHelper.print_header(format(str_h1, 'VIRTUAL NETWORK TEMPLATE'),
345
+ false)
336
346
 
337
347
  puts vn.template_str(false)
338
348
 
339
349
  puts
340
350
 
341
- CLIHelper.print_header(str_h1 % ["ADDRESS RANGE POOL"], false)
351
+ CLIHelper.print_header(format(str_h1, 'ADDRESS RANGE POOL'), false)
342
352
 
343
353
  arlist = []
344
354
 
@@ -347,70 +357,72 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
347
357
  end
348
358
 
349
359
  arlist.each do |ar|
360
+ CLIHelper.print_header(format('%-80s', "AR #{ar['AR_ID']}"))
350
361
 
351
- CLIHelper.print_header("%-80s" % "AR #{ar["AR_ID"]}")
352
-
353
- str="%-15s: %-20s"
354
- puts str % ["SIZE", ar["SIZE"]]
355
- puts str % ["LEASES", ar["USED_LEASES"]]
356
- puts str % ["VN_MAD", ar["VN_MAD"]] if ar["VN_MAD"]
357
- puts str % ["IPAM_MAD", ar["IPAM_MAD"]] if ar["IPAM_MAD"]
362
+ str='%-15s: %-20s'
363
+ puts format(str, 'SIZE', ar['SIZE'])
364
+ puts format(str, 'LEASES', ar['USED_LEASES'])
365
+ puts format(str, 'VN_MAD', ar['VN_MAD']) if ar['VN_MAD']
366
+ puts format(str, 'IPAM_MAD', ar['IPAM_MAD']) if ar['IPAM_MAD']
358
367
  puts
359
368
 
360
- format = "%-10s %34s %34s"
361
- CLIHelper.print_header(format % ["RANGE", "FIRST", "LAST"], false)
369
+ format = '%-10s %34s %34s'
370
+ CLIHelper.print_header(
371
+ format(format, 'RANGE', 'FIRST', 'LAST'), false
372
+ )
362
373
 
363
- puts format % ["MAC", ar["MAC"], ar["MAC_END"]]
374
+ puts format(format, 'MAC', ar['MAC'], ar['MAC_END'])
364
375
 
365
- if !ar["IP"].nil?
366
- puts format % ["IP", ar["IP"], ar["IP_END"]]
376
+ if !ar['IP'].nil?
377
+ puts format(format, 'IP', ar['IP'], ar['IP_END'])
367
378
  end
368
379
 
369
- if !ar["IP6_GLOBAL"].nil?
370
- puts format % ["IP6_GLOBAL", ar["IP6_GLOBAL"], ar["IP6_GLOBAL_END"]]
380
+ if !ar['IP6_GLOBAL'].nil?
381
+ puts format(format, 'IP6_GLOBAL', ar['IP6_GLOBAL'],
382
+ ar['IP6_GLOBAL_END'])
371
383
  end
372
384
 
373
- if !ar["IP6_ULA"].nil?
374
- puts format % ["IP6_ULA", ar["IP6_ULA"], ar["IP6_ULA_END"]]
385
+ if !ar['IP6_ULA'].nil?
386
+ puts format(format, 'IP6_ULA', ar['IP6_ULA'], ar['IP6_ULA_END'])
375
387
  end
376
388
 
377
- if !ar["IP6"].nil?
378
- puts format % ["IP6", ar["IP6"], ar["IP6_END"]]
389
+ if !ar['IP6'].nil?
390
+ puts format(format, 'IP6', ar['IP6'], ar['IP6_END'])
379
391
  end
380
392
 
381
393
  puts
382
394
  end
383
395
 
384
396
  puts
385
- CLIHelper.print_header(str_h1 % ["LEASES"], false)
397
+ CLIHelper.print_header(format(str_h1, 'LEASES'), false)
386
398
  ar_list = []
387
399
 
388
400
  if !vn_hash['VNET']['AR_POOL']['AR'].nil?
389
401
  lease_list = [vn_hash['VNET']['AR_POOL']['AR']].flatten
390
- leases = Array.new
402
+ leases = []
391
403
 
392
404
  lease_list.each do |ar|
393
405
  id = ar['AR_ID']
394
406
  ar_list << id
395
407
 
396
- if ar['LEASES'] && !ar['LEASES']['LEASE'].nil?
397
- lease = [ar['LEASES']['LEASE']].flatten
398
- lease.each do |l|
399
- l['AR_ID'] = id
400
- end
401
- leases << lease
408
+ next unless ar['LEASES'] && !ar['LEASES']['LEASE'].nil?
409
+
410
+ lease = [ar['LEASES']['LEASE']].flatten
411
+ lease.each do |l|
412
+ l['AR_ID'] = id
402
413
  end
414
+ leases << lease
403
415
  end
404
416
 
405
417
  leases.flatten!
406
418
  end
407
419
 
408
420
  CLIHelper::ShowTable.new(nil, self) do
409
- column :AR, "", :left, :size=>3 do |d|
421
+ column :AR, '', :left, :size=>3 do |d|
410
422
  d['AR_ID']
411
423
  end
412
424
 
413
- column :OWNER, "", :left, :size=>15 do |d|
425
+ column :OWNER, '', :left, :size=>10 do |d|
414
426
  if d['VM']
415
427
  "V:#{d['VM']}"
416
428
  elsif d['VNET']
@@ -420,31 +432,40 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
420
432
  end
421
433
  end
422
434
 
423
- column :MAC, "", :size=>17 do |d|
424
- d["MAC"]
435
+ column :MAC, '', :adjust do |d|
436
+ d['MAC']
437
+ end
438
+
439
+ column :IP, '', :adjust do |d|
440
+ d['IP'] || '-'
425
441
  end
426
442
 
427
- column :IP, "", :size=>15 do |d|
428
- d["IP"]||"-"
443
+ column :PORT_FORWARD, '', :adjust do |d|
444
+ if d['EXTERNAL_PORT_RANGE']
445
+ "[#{d['EXTERNAL_PORT_RANGE']}]:" \
446
+ "[#{d['INTERNAL_PORT_RANGE'].split('/')[0]}]"
447
+ else
448
+ '-'
449
+ end
429
450
  end
430
451
 
431
- column :IP6, "", :adjust, :size=>26 do |d|
432
- d["IP6"]||d["IP6_GLOBAL"]||"-"
452
+ column :IP6, '', :adjust do |d|
453
+ d['IP6']||d['IP6_GLOBAL']||'-'
433
454
  end
434
455
  end.show(leases, {})
435
456
 
436
457
  puts
437
458
 
438
- CLIHelper.print_header("%-15s" % "VIRTUAL ROUTERS")
459
+ CLIHelper.print_header(format('%-15s', 'VIRTUAL ROUTERS'))
439
460
  vn.vrouter_ids.each do |id|
440
- puts "%-15s" % [id]
461
+ puts format('%-15s', id)
441
462
  end
442
463
 
443
- if options[:show_ar]
444
- ar_list.each do |ar_id|
445
- puts
446
- show_ar(vn, ar_id)
447
- end
464
+ return unless options[:show_ar]
465
+
466
+ ar_list.each do |ar_id|
467
+ puts
468
+ show_ar(vn, ar_id)
448
469
  end
449
470
  end
450
471
 
@@ -459,4 +480,5 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
459
480
  # in options hash
460
481
  (add_ar_options-options.keys)!=add_ar_options
461
482
  end
483
+
462
484
  end