opennebula-cli 5.6.2 → 5.7.80.pre

Sign up to get free protection for your applications and to get access to all the features.
data/bin/oneflow-template CHANGED
@@ -16,26 +16,26 @@
16
16
  # limitations under the License. #
17
17
  #--------------------------------------------------------------------------- #
18
18
 
19
- ONE_LOCATION=ENV["ONE_LOCATION"]
19
+ ONE_LOCATION = ENV['ONE_LOCATION']
20
20
 
21
21
  if !ONE_LOCATION
22
- RUBY_LIB_LOCATION="/usr/lib/one/ruby"
22
+ RUBY_LIB_LOCATION = '/usr/lib/one/ruby'
23
23
  else
24
- RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby"
24
+ RUBY_LIB_LOCATION = ONE_LOCATION + '/lib/ruby'
25
25
  end
26
26
 
27
- $: << RUBY_LIB_LOCATION
28
- $: << RUBY_LIB_LOCATION+'/cli'
27
+ $LOAD_PATH << RUBY_LIB_LOCATION
28
+ $LOAD_PATH << RUBY_LIB_LOCATION + '/cli'
29
29
 
30
30
  require 'command_parser'
31
31
  require 'opennebula/oneflow_client'
32
-
32
+ require 'English'
33
33
  require 'cli_helper'
34
34
  require 'one_helper'
35
35
 
36
36
  require 'json'
37
37
 
38
- USER_AGENT = "CLI"
38
+ USER_AGENT = 'CLI'
39
39
 
40
40
  # Base Path representing the resource to be used in the requests
41
41
  RESOURCE_PATH = '/service_template'
@@ -45,26 +45,25 @@ RESOURCE_PATH = '/service_template'
45
45
  #
46
46
 
47
47
  TABLE = CLIHelper::ShowTable.new(nil, self) do
48
- column :ID, "ID", :size=>10 do |d|
49
- d["ID"]
48
+ column :ID, 'ID', :size => 10 do |d|
49
+ d['ID']
50
50
  end
51
51
 
52
- column :USER, "Username", :left, :size=>15 do |d|
53
- d["UNAME"]
52
+ column :USER, 'Username', :left, :size => 15 do |d|
53
+ d['UNAME']
54
54
  end
55
55
 
56
- column :GROUP, "Group", :left, :size=>15 do |d|
57
- d["GNAME"]
56
+ column :GROUP, 'Group', :left, :size => 15 do |d|
57
+ d['GNAME']
58
58
  end
59
59
 
60
- column :NAME, "Name", :left, :size=>37 do |d|
61
- d["NAME"]
60
+ column :NAME, 'Name', :left, :size => 37 do |d|
61
+ d['NAME']
62
62
  end
63
63
 
64
64
  default :ID, :USER, :GROUP, :NAME
65
65
  end
66
66
 
67
-
68
67
  # Show the service template information. This method is used in top and
69
68
  # show commands
70
69
  # @param [Service::Client] client
@@ -75,43 +74,45 @@ end
75
74
  def show_service_template(client, args, options)
76
75
  response = client.get("#{RESOURCE_PATH}/#{args[0]}")
77
76
 
78
- if CloudClient::is_error?(response)
77
+ if CloudClient.is_error?(response)
79
78
  [response.code.to_i, response.to_s]
80
79
  else
81
- #[0,response.body]
80
+ # [0,response.body]
82
81
  if options[:json]
83
- [0,response.body]
82
+ [0, response.body]
84
83
  else
85
- str="%-20s: %-20s"
86
- str_h1="%-80s"
84
+ str = '%-20s: %-20s'
85
+ str_h1 = '%-80s'
87
86
 
88
87
  document_hash = JSON.parse(response.body)
89
88
  template = document_hash['DOCUMENT']['TEMPLATE']['BODY']
90
89
 
91
90
  CLIHelper.print_header(str_h1 %
92
- "SERVICE TEMPLATE #{document_hash['DOCUMENT']['ID']} INFORMATION")
91
+ "SERVICE TEMPLATE #{document_hash['DOCUMENT']['ID']} "\
92
+ 'INFORMATION')
93
93
 
94
- puts str % ["ID", document_hash['DOCUMENT']['ID']]
95
- puts str % ["NAME", document_hash['DOCUMENT']['NAME']]
96
- puts str % ["USER", document_hash['DOCUMENT']['UNAME']]
97
- puts str % ["GROUP",document_hash['DOCUMENT']['GNAME']]
94
+ puts format(str, ['ID', document_hash['DOCUMENT']['ID']])
95
+ puts format(str, ['NAME', document_hash['DOCUMENT']['NAME']])
96
+ puts format(str, ['USER', document_hash['DOCUMENT']['UNAME']])
97
+ puts format(str, ['GROUP', document_hash['DOCUMENT']['GNAME']])
98
98
 
99
99
  puts
100
100
 
101
- CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
101
+ CLIHelper.print_header(str_h1 % 'PERMISSIONS', false)
102
102
 
103
- ["OWNER", "GROUP", "OTHER"].each { |e|
104
- mask = "---"
105
- mask[0] = "u" if document_hash['DOCUMENT']['PERMISSIONS']["#{e}_U"] == "1"
106
- mask[1] = "m" if document_hash['DOCUMENT']['PERMISSIONS']["#{e}_M"] == "1"
107
- mask[2] = "a" if document_hash['DOCUMENT']['PERMISSIONS']["#{e}_A"] == "1"
103
+ %w[OWNER GROUP OTHER].each do |e|
104
+ mask = '---'
105
+ permissions_hash = document_hash['DOCUMENT']['PERMISSIONS']
106
+ mask[0] = 'u' if permissions_hash["#{e}_U"] == '1'
107
+ mask[1] = 'm' if permissions_hash["#{e}_M"] == '1'
108
+ mask[2] = 'a' if permissions_hash["#{e}_A"] == '1'
108
109
 
109
- puts str % [e, mask]
110
- }
110
+ puts format(str, [e, mask])
111
+ end
111
112
 
112
113
  puts
113
114
 
114
- CLIHelper.print_header(str_h1 % "TEMPLATE CONTENTS",false)
115
+ CLIHelper.print_header(str_h1 % 'TEMPLATE CONTENTS', false)
115
116
  puts JSON.pretty_generate(template)
116
117
 
117
118
  0
@@ -121,19 +122,18 @@ end
121
122
 
122
123
  # List the services. This method is used in top and list commands
123
124
  # @param [Service::Client] client
124
- # @param [Array] args
125
125
  # @param [Hash] options
126
126
  # @return [[Integer, String], Integer] Returns the exit_code and optionally
127
127
  # a String to be printed
128
- def list_service_templates(client, args, options)
128
+ def list_service_templates(client, options)
129
129
  response = client.get(RESOURCE_PATH)
130
130
 
131
- if CloudClient::is_error?(response)
131
+ if CloudClient.is_error?(response)
132
132
  [response.code.to_i, response.to_s]
133
133
  else
134
- #[0,response.body]
134
+ # [0,response.body]
135
135
  if options[:json]
136
- [0,response.body]
136
+ [0, response.body]
137
137
  else
138
138
  array_list = JSON.parse(response.body)
139
139
  TABLE.show(array_list['DOCUMENT_POOL']['DOCUMENT'])
@@ -146,8 +146,8 @@ end
146
146
  # Commands
147
147
  #
148
148
 
149
- cmd=CommandParser::CmdParser.new(ARGV) do
150
- usage "`oneflow-template` <command> [<args>] [<options>]"
149
+ CommandParser::CmdParser.new(ARGV) do
150
+ usage '`oneflow-template` <command> [<args>] [<options>]'
151
151
  version OpenNebulaHelper::ONE_VERSION
152
152
 
153
153
  set :option, Service::DEFAULT_OPTIONS
@@ -157,20 +157,22 @@ cmd=CommandParser::CmdParser.new(ARGV) do
157
157
  #
158
158
  # Formatters for arguments
159
159
  #
160
- set :format, :groupid, OpenNebulaHelper.rname_to_id_desc("GROUP") do |arg|
161
- OpenNebulaHelper.rname_to_id(arg, "GROUP")
160
+ set :format, :groupid, OpenNebulaHelper.rname_to_id_desc('GROUP') do |arg|
161
+ OpenNebulaHelper.rname_to_id(arg, 'GROUP')
162
162
  end
163
163
 
164
- set :format, :userid, OpenNebulaHelper.rname_to_id_desc("USER") do |arg|
165
- OpenNebulaHelper.rname_to_id(arg, "USER")
164
+ set :format, :userid, OpenNebulaHelper.rname_to_id_desc('USER') do |arg|
165
+ OpenNebulaHelper.rname_to_id(arg, 'USER')
166
166
  end
167
167
 
168
- set :format, :templateid, Service.rname_to_id_desc("SERVICE TEMPLATE") do |arg|
169
- Service.rname_to_id(arg, "SERVICE TEMPLATE")
168
+ set :format, :templateid,
169
+ Service.rname_to_id_desc('SERVICE TEMPLATE') do |arg|
170
+ Service.rname_to_id(arg, 'SERVICE TEMPLATE')
170
171
  end
171
172
 
172
- set :format, :templateid_list, Service.list_to_id_desc("SERVICE TEMPLATE") do |arg|
173
- Service.list_to_id(arg, "SERVICE TEMPLATE")
173
+ set :format, :templateid_list,
174
+ Service.list_to_id_desc('SERVICE TEMPLATE') do |arg|
175
+ Service.list_to_id(arg, 'SERVICE TEMPLATE')
174
176
  end
175
177
 
176
178
  #
@@ -183,12 +185,13 @@ cmd=CommandParser::CmdParser.new(ARGV) do
183
185
 
184
186
  command :list, list_desc, :options => Service::JSON_FORMAT do
185
187
  client = Service::Client.new(
186
- :username => options[:username],
187
- :password => options[:password],
188
- :url => options[:server],
189
- :user_agent => USER_AGENT)
188
+ :username => options[:username],
189
+ :password => options[:password],
190
+ :url => options[:server],
191
+ :user_agent => USER_AGENT
192
+ )
190
193
 
191
- list_service_templates(client, args, options)
194
+ list_service_templates(client, options)
192
195
  end
193
196
 
194
197
  #
@@ -200,21 +203,24 @@ cmd=CommandParser::CmdParser.new(ARGV) do
200
203
  EOT
201
204
 
202
205
  command :top, top_desc,
203
- :options => [Service::JSON_FORMAT, Service::TOP, CLIHelper::DELAY] do
206
+ :options => [Service::JSON_FORMAT,
207
+ Service::TOP,
208
+ CLIHelper::DELAY] do
204
209
  client = Service::Client.new(
205
- :username => options[:username],
206
- :password => options[:password],
207
- :url => options[:server],
208
- :user_agent => USER_AGENT)
210
+ :username => options[:username],
211
+ :password => options[:password],
212
+ :url => options[:server],
213
+ :user_agent => USER_AGENT
214
+ )
209
215
 
210
- delay=options[:delay] ? options[:delay] : 3
216
+ options[:delay] ? delay = options[:delay] : delay = 3
211
217
 
212
218
  begin
213
- while true
219
+ loop do
214
220
  CLIHelper.scr_cls
215
- CLIHelper.scr_move(0,0)
221
+ CLIHelper.scr_move(0, 0)
216
222
 
217
- rc, message = list_service_templates(client, args, options)
223
+ rc, message = list_service_templates(client, options)
218
224
 
219
225
  if rc != 0
220
226
  raise message
@@ -222,7 +228,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
222
228
 
223
229
  sleep delay
224
230
  end
225
- rescue Exception => e
231
+ rescue StandardError => e
226
232
  puts e.message
227
233
  -1
228
234
  end
@@ -238,18 +244,19 @@ cmd=CommandParser::CmdParser.new(ARGV) do
238
244
 
239
245
  command :create, create_desc, :file, :options => Service::JSON_FORMAT do
240
246
  client = Service::Client.new(
241
- :username => options[:username],
242
- :password => options[:password],
243
- :url => options[:server],
244
- :user_agent => USER_AGENT)
247
+ :username => options[:username],
248
+ :password => options[:password],
249
+ :url => options[:server],
250
+ :user_agent => USER_AGENT
251
+ )
245
252
 
246
253
  response = client.post(RESOURCE_PATH, File.read(args[0]))
247
254
 
248
- if CloudClient::is_error?(response)
255
+ if CloudClient.is_error?(response)
249
256
  [response.code.to_i, response.to_s]
250
257
  else
251
258
  if options[:json]
252
- [0,response.body]
259
+ [0, response.body]
253
260
  else
254
261
  template = JSON.parse(response.body)
255
262
  puts "ID: #{template['DOCUMENT']['ID']}"
@@ -268,10 +275,11 @@ cmd=CommandParser::CmdParser.new(ARGV) do
268
275
 
269
276
  command :show, show_desc, :templateid, :options => Service::JSON_FORMAT do
270
277
  client = Service::Client.new(
271
- :username => options[:username],
272
- :password => options[:password],
273
- :url => options[:server],
274
- :user_agent => USER_AGENT)
278
+ :username => options[:username],
279
+ :password => options[:password],
280
+ :url => options[:server],
281
+ :user_agent => USER_AGENT
282
+ )
275
283
 
276
284
  show_service_template(client, args, options)
277
285
  end
@@ -286,14 +294,15 @@ cmd=CommandParser::CmdParser.new(ARGV) do
286
294
 
287
295
  command :delete, delete_desc, [:range, :templateid_list] do
288
296
  client = Service::Client.new(
289
- :username => options[:username],
290
- :password => options[:password],
291
- :url => options[:server],
292
- :user_agent => USER_AGENT)
297
+ :username => options[:username],
298
+ :password => options[:password],
299
+ :url => options[:server],
300
+ :user_agent => USER_AGENT
301
+ )
293
302
 
294
- Service.perform_actions(args[0]) { |template_id|
303
+ Service.perform_actions(args[0]) do |template_id|
295
304
  client.delete("#{RESOURCE_PATH}/#{template_id}")
296
- }
305
+ end
297
306
  end
298
307
 
299
308
  #
@@ -307,14 +316,15 @@ cmd=CommandParser::CmdParser.new(ARGV) do
307
316
  command :instantiate, instantiate_desc, :templateid, [:file, nil],
308
317
  :options => [Service::JSON_FORMAT, Service::TOP] do
309
318
  client = Service::Client.new(
310
- :username => options[:username],
311
- :password => options[:password],
312
- :url => options[:server],
313
- :user_agent => USER_AGENT)
319
+ :username => options[:username],
320
+ :password => options[:password],
321
+ :url => options[:server],
322
+ :user_agent => USER_AGENT
323
+ )
314
324
 
315
- params = Hash.new
325
+ params = {}
316
326
 
317
- if(args[1])
327
+ if args[1]
318
328
  params['merge_template'] = JSON.parse(File.read(args[1]))
319
329
  end
320
330
 
@@ -322,11 +332,11 @@ cmd=CommandParser::CmdParser.new(ARGV) do
322
332
 
323
333
  response = client.post("#{RESOURCE_PATH}/#{args[0]}/action", json_str)
324
334
 
325
- if CloudClient::is_error?(response)
335
+ if CloudClient.is_error?(response)
326
336
  [response.code.to_i, response.to_s]
327
337
  else
328
338
  if options[:json]
329
- [0,response.body]
339
+ [0, response.body]
330
340
  else
331
341
  template = JSON.parse(response.body)
332
342
  puts "ID: #{template['DOCUMENT']['ID']}"
@@ -341,41 +351,44 @@ cmd=CommandParser::CmdParser.new(ARGV) do
341
351
 
342
352
  command :chgrp, chgrp_desc, [:range, :templateid_list], :groupid do
343
353
  client = Service::Client.new(
344
- :username => options[:username],
345
- :password => options[:password],
346
- :url => options[:server],
347
- :user_agent => USER_AGENT)
348
-
349
- Service.perform_actions(args[0]) { |service_id|
350
- params = Hash.new
354
+ :username => options[:username],
355
+ :password => options[:password],
356
+ :url => options[:server],
357
+ :user_agent => USER_AGENT
358
+ )
359
+
360
+ Service.perform_actions(args[0]) do |service_id|
361
+ params = {}
351
362
  params['group_id'] = args[1].to_i
352
363
 
353
364
  json_action = Service.build_json_action('chgrp', params)
354
365
 
355
366
  client.post("#{RESOURCE_PATH}/#{service_id}/action", json_action)
356
- }
367
+ end
357
368
  end
358
369
 
359
370
  chown_desc = <<-EOT.unindent
360
371
  Changes the service template owner and group
361
372
  EOT
362
373
 
363
- command :chown, chown_desc, [:range, :templateid_list], :userid, [:groupid, nil] do
374
+ command :chown, chown_desc, [:range, :templateid_list],
375
+ :userid, [:groupid, nil] do
364
376
  client = Service::Client.new(
365
- :username => options[:username],
366
- :password => options[:password],
367
- :url => options[:server],
368
- :user_agent => USER_AGENT)
369
-
370
- Service.perform_actions(args[0]) { |service_id|
371
- params = Hash.new
377
+ :username => options[:username],
378
+ :password => options[:password],
379
+ :url => options[:server],
380
+ :user_agent => USER_AGENT
381
+ )
382
+
383
+ Service.perform_actions(args[0]) do |service_id|
384
+ params = {}
372
385
  params['owner_id'] = args[1]
373
386
  params['group_id'] = args[2] if args[2]
374
387
 
375
388
  json_action = Service.build_json_action('chown', params)
376
389
 
377
390
  client.post("#{RESOURCE_PATH}/#{service_id}/action", json_action)
378
- }
391
+ end
379
392
  end
380
393
 
381
394
  chmod_desc = <<-EOT.unindent
@@ -384,19 +397,20 @@ cmd=CommandParser::CmdParser.new(ARGV) do
384
397
 
385
398
  command :chmod, chmod_desc, [:range, :templateid_list], :octet do
386
399
  client = Service::Client.new(
387
- :username => options[:username],
388
- :password => options[:password],
389
- :url => options[:server],
390
- :user_agent => USER_AGENT)
391
-
392
- Service.perform_actions(args[0]) { |service_id|
393
- params = Hash.new
400
+ :username => options[:username],
401
+ :password => options[:password],
402
+ :url => options[:server],
403
+ :user_agent => USER_AGENT
404
+ )
405
+
406
+ Service.perform_actions(args[0]) do |service_id|
407
+ params = {}
394
408
  params['octet'] = args[1]
395
409
 
396
410
  json_action = Service.build_json_action('chmod', params)
397
411
 
398
412
  client.post("#{RESOURCE_PATH}/#{service_id}/action", json_action)
399
- }
413
+ end
400
414
  end
401
415
 
402
416
  clone_desc = <<-EOT.unindent
@@ -405,19 +419,21 @@ cmd=CommandParser::CmdParser.new(ARGV) do
405
419
 
406
420
  command :clone, clone_desc, :templateid, :name do
407
421
  client = Service::Client.new(
408
- :username => options[:username],
409
- :password => options[:password],
410
- :url => options[:server],
411
- :user_agent => USER_AGENT)
422
+ :username => options[:username],
423
+ :password => options[:password],
424
+ :url => options[:server],
425
+ :user_agent => USER_AGENT
426
+ )
412
427
 
413
- params = Hash.new
428
+ params = {}
414
429
  params['name'] = args[1]
415
430
 
416
431
  json_action = Service.build_json_action('clone', params)
417
432
 
418
- response = client.post("#{RESOURCE_PATH}/#{args[0]}/action", json_action)
433
+ response = client.post("#{RESOURCE_PATH}/#{args[0]}/action",
434
+ json_action)
419
435
 
420
- if CloudClient::is_error?(response)
436
+ if CloudClient.is_error?(response)
421
437
  [response.code.to_i, response.to_s]
422
438
  else
423
439
  if options[:json]
@@ -436,19 +452,21 @@ cmd=CommandParser::CmdParser.new(ARGV) do
436
452
 
437
453
  command :rename, rename_desc, :templateid, :name do
438
454
  client = Service::Client.new(
439
- :username => options[:username],
440
- :password => options[:password],
441
- :url => options[:server],
442
- :user_agent => USER_AGENT)
455
+ :username => options[:username],
456
+ :password => options[:password],
457
+ :url => options[:server],
458
+ :user_agent => USER_AGENT
459
+ )
443
460
 
444
- params = Hash.new
461
+ params = {}
445
462
  params['name'] = args[1]
446
463
 
447
464
  json_action = Service.build_json_action('rename', params)
448
465
 
449
- response = client.post("#{RESOURCE_PATH}/#{args[0]}/action", json_action)
466
+ response = client.post("#{RESOURCE_PATH}/#{args[0]}/action",
467
+ json_action)
450
468
 
451
- if CloudClient::is_error?(response)
469
+ if CloudClient.is_error?(response)
452
470
  [response.code.to_i, response.to_s]
453
471
  else
454
472
  response.code.to_i
@@ -463,10 +481,11 @@ cmd=CommandParser::CmdParser.new(ARGV) do
463
481
  command :update, update_desc, :templateid, [:file, nil] do
464
482
  template_id = args[0]
465
483
  client = Service::Client.new(
466
- :username => options[:username],
467
- :password => options[:password],
468
- :url => options[:server],
469
- :user_agent => USER_AGENT)
484
+ :username => options[:username],
485
+ :password => options[:password],
486
+ :url => options[:server],
487
+ :user_agent => USER_AGENT
488
+ )
470
489
 
471
490
  if args[1]
472
491
  path = args[1]
@@ -478,7 +497,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
478
497
 
479
498
  response = client.get("#{RESOURCE_PATH}/#{template_id}")
480
499
 
481
- if CloudClient::is_error?(response)
500
+ if CloudClient.is_error?(response)
482
501
  exit_with_code response.code.to_i, response.to_s
483
502
  else
484
503
  document_hash = JSON.parse(response.body)
@@ -487,12 +506,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
487
506
  tmp << JSON.pretty_generate(template)
488
507
  tmp.flush
489
508
 
490
- editor_path = ENV["EDITOR"] ? ENV["EDITOR"] : OpenNebulaHelper::EDITOR_PATH
509
+ if ENV['EDITOR']
510
+ editor_path = ENV['EDITOR']
511
+ else
512
+ editor_path = OpenNebulaHelper::EDITOR_PATH
513
+ end
491
514
  system("#{editor_path} #{path}")
492
515
 
493
- unless $?.exitstatus == 0
494
- puts "Editor not defined"
495
- exit -1
516
+ unless $CHILD_STATUS.exitstatus.zero?
517
+ puts 'Editor not defined'
518
+ exit(-1)
496
519
  end
497
520
 
498
521
  tmp.close
@@ -503,7 +526,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
503
526
 
504
527
  t_str = File.read(path)
505
528
  response = client.put("#{RESOURCE_PATH}/#{template_id}", t_str)
506
- if CloudClient::is_error?(response)
529
+ if CloudClient.is_error?(response)
507
530
  puts response.to_s
508
531
  exit_code = response.code.to_i
509
532
  end