ruby-cute 0.13 → 0.24

Sign up to get free protection for your applications and to get access to all the features.
data/debian/changelog CHANGED
@@ -1,3 +1,99 @@
1
+ ruby-cute (0.24) unstable; urgency=low
2
+
3
+ * 05ab1f4 --armor should imply deploy
4
+
5
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Fri, 08 Dec 2023 13:34:40 +0100
6
+
7
+ ruby-cute (0.23) unstable; urgency=low
8
+
9
+ * d56f254 Document some test cases
10
+ * a65b612 Add --armor
11
+ * e6a311c [grd] add VLAN support
12
+ * 0af5b85 [CI] add 'allow_failure: true' for manual jobs
13
+
14
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Thu, 07 Dec 2023 15:14:43 +0100
15
+
16
+ ruby-cute (0.22) unstable; urgency=low
17
+
18
+ * 9570af74 allow to set the timeout for Rest request
19
+
20
+ -- Alexandre MERLIN <alexandre.merlin@inria.fr> Thu, 29 Sep 2022 08:54:15 +0200
21
+
22
+ ruby-cute (0.21) unstable; urgency=low
23
+
24
+ * 402efe5 Support specifying OAR project
25
+
26
+ -- Lucas Nussbaum <lucas.nussbaum@loria.fr> Thu, 30 Jun 2022 10:40:50 +0200
27
+
28
+ ruby-cute (0.20) unstable; urgency=low
29
+
30
+ * ffac6af add --terminate-after-script
31
+ * 9363689 Do not raise exception when script fails
32
+ * e3bbe02 Improve help
33
+ * 75ff6db Add list of relevant Grid5000 bugs
34
+ * 6d3a407 Fix bug introduced by rubocop fixes
35
+ * 91773ae Merge branch 'feature/update-ci' into 'master'
36
+ * 6412d1c Run rspec tests in gitlab-ci
37
+ * 5507306 Fix Rubocop warnings.
38
+ * 9355eef [ci] add rubocop
39
+ * 3c6cc7e fix display of jobs that are not started
40
+
41
+ -- Lucas Nussbaum <lucas.nussbaum@loria.fr> Mon, 13 Jun 2022 21:04:25 +0200
42
+
43
+ ruby-cute (0.19) unstable; urgency=low
44
+
45
+ * fef0ea7 Better error handling when reservation fails
46
+ * 9ea4d3d Various improvements to grd list
47
+ * 95dbe26 Add debug mode
48
+ * 8805c55 Update packaging
49
+ * 10fcfd1 Add 'grd list'
50
+ * 5f1ae78 more rubocop warnings
51
+ * b8420ac resolve rubocop warnings
52
+ * 0d55e0e Improve documentation about grd
53
+
54
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Tue, 10 May 2022 09:56:47 +0200
55
+
56
+ ruby-cute (0.18) unstable; urgency=low
57
+
58
+ * f43a834 Minor bugfixes
59
+ * d1d538f Upgrade packaging to dh 13 and build on bullseye
60
+
61
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Wed, 13 Apr 2022 09:26:08 +0200
62
+
63
+ ruby-cute (0.17) unstable; urgency=low
64
+
65
+ * b81c224 Merge remote-tracking branch 'gh/master'
66
+ * 6dc473b Merge pull request #36 from deadlybore/master
67
+ * a3341ff Exit immediately if interrupted
68
+ * a44218f Improve 'bs -h'
69
+ * a7f2649 Improve output
70
+ * a91b0e7 Make walltime non-mandatory
71
+ * 234aa96 Add dep on ruby-net-scp
72
+ * 0ce884b update changelog
73
+ * 0a10f78 update of the documentation
74
+
75
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Wed, 13 Apr 2022 08:04:26 +0200
76
+
77
+ ruby-cute (0.16) unstable; urgency=low
78
+
79
+ * 1cedd61 Downgrade version requirement of net-ssh so that it is installable on Debian stretch
80
+
81
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Tue, 12 Apr 2022 22:01:51 +0200
82
+
83
+ ruby-cute (0.15) unstable; urgency=low
84
+
85
+ * 78de76f Add inital version of grd
86
+ * 2fc8bda exec3: add some timing information
87
+ * 1676cf9 Refresh packaging and bump version to 0.15
88
+
89
+ -- Lucas Nussbaum <lucas.nussbaum@inria.fr> Tue, 12 Apr 2022 21:56:20 +0200
90
+
91
+ ruby-cute (0.14) unstable; urgency=medium
92
+
93
+ * 57fcd01 Fix issue when catching errors from Grid'5000 API
94
+
95
+ -- Samir Noir <samir.noir@inria.fr> Wed, 15 Dec 2021 11:39:02 +0100
96
+
1
97
  ruby-cute (0.13) unstable; urgency=medium
2
98
 
3
99
  * New release.
data/debian/control CHANGED
@@ -2,18 +2,35 @@ Source: ruby-cute
2
2
  Section: ruby
3
3
  Priority: optional
4
4
  Maintainer: Lucas Nussbaum <lucas@debian.org>
5
- Build-Depends: debhelper (>= 7.0.50~), gem2deb, ruby-rspec, rake, yard, ruby-webmock, ruby-simplecov, ruby-rest-client, ruby-ipaddress, ruby-net-ssh-multi
6
- Standards-Version: 3.9.5
5
+ Build-Depends: debhelper-compat (= 13),
6
+ gem2deb,
7
+ rake,
8
+ ruby,
9
+ ruby-ipaddress (>= 0.8),
10
+ ruby-json (>= 1.8),
11
+ ruby-net-scp (>= 1.2),
12
+ ruby-net-ssh (>= 3.2),
13
+ ruby-net-ssh-multi (>= 1.2),
14
+ ruby-peach (>= 0.5.1),
15
+ ruby-rest-client (>= 1.6),
16
+ ruby-rspec,
17
+ ruby-simplecov,
18
+ ruby-webmock,
19
+ yard
20
+ Standards-Version: 4.5.0
7
21
  Vcs-Git: git://github.com/ruby-cute/ruby-cute
8
22
  Vcs-Browser: https://github.com/ruby-cute/ruby-cute
9
23
  Homepage: http://ruby-cute.github.io/
10
- Testsuite: autopkgtest
24
+ Testsuite: autopkgtest-pkg-ruby
11
25
  XS-Ruby-Versions: all
26
+ Rules-Requires-Root: no
12
27
 
13
28
  Package: ruby-cute
14
29
  Architecture: all
15
30
  XB-Ruby-Versions: ${ruby:Versions}
16
- Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter, ruby-rest-client, ruby-json, ruby-ipaddress, ruby-net-ssh-multi
17
- Recommends: pry
31
+ Depends: ${misc:Depends},
32
+ ${ruby:Depends},
33
+ ${shlibs:Depends}
34
+ Recommends: ruby-terminal-table
18
35
  Description: Critically Useful Tools for Experiments
19
36
  Ruby library for controlling experiments
@@ -1,2 +1,2 @@
1
- doc/
2
1
  README.md
2
+ doc/
data/debian/rules CHANGED
@@ -1,15 +1,7 @@
1
1
  #!/usr/bin/make -f
2
- #export DH_VERBOSE=1
3
- #
4
- # Uncomment to ignore all test failures (but the tests will run anyway)
5
- #export DH_RUBY_IGNORE_TESTS=all
6
- #
7
- # Uncomment to ignore some test failures (but the tests will run anyway).
8
- # Valid values:
9
- #export DH_RUBY_IGNORE_TESTS=ruby2.1 require-rubygems
10
- #
11
- # If you need to specify the .gemspec (eg there is more than one)
12
- #export DH_RUBY_GEMSPEC=gem.gemspec
2
+
3
+ export GEM2DEB_TEST_RUNNER = --check-dependencies
4
+ export DH_RUBY = --gem-install
13
5
 
14
6
  %:
15
7
  dh $@ --buildsystem=ruby --with ruby
data/debian/watch CHANGED
@@ -1,2 +1,2 @@
1
- version=3
2
- http://pkg-ruby-extras.alioth.debian.org/cgi-bin/gemwatch/ruby-cute .*/ruby-cute-(.*).tar.gz
1
+ version=4
2
+ https://gemwatch.debian.net/ruby-cute .*/ruby-cute-(.*).tar.gz
@@ -132,7 +132,7 @@ optparse = OptionParser.new do |opts|
132
132
  opts.on( '-c', '--coordinator <coordinator_address>', 'Address of the coordinator (default: first node)' ) do |c|
133
133
  options[:coordinator] = c || nil
134
134
  end
135
- opts.on( '-x', '--no-init-pnodes', 'Do not initialize all pnodes' ) do |c|
135
+ opts.on( '-x', '--no-init-pnodes', 'Do not initialize all pnodes' ) do
136
136
  options[:init_pnodes] = false
137
137
  end
138
138
  opts.on( '--max-vifaces <nb>', 'Set the maximum number of vifaces on a physical node (used only without --no-init-pnodes)' ) do |n|
@@ -174,7 +174,7 @@ optparse = OptionParser.new do |opts|
174
174
  opts.on( '-B', '--branch <branch_name>', "Checkout a specific branch and rebuild a Debian package" ) do |n|
175
175
  options[:branch] = n
176
176
  end
177
- opts.on( '-S', '--stealth-mode', 'Do not report usage statistics (Grid\'5000 only)' ) do |c|
177
+ opts.on( '-S', '--stealth-mode', 'Do not report usage statistics (Grid\'5000 only)' ) do
178
178
  options[:stats] = false
179
179
  end
180
180
  opts.on( '--btrfs-format <tmp_device>', 'Format the device with btrfs support to allow COW on Vnodes (experimental)' ) do |d|
@@ -184,10 +184,7 @@ optparse = OptionParser.new do |opts|
184
184
  options[:ci] = path
185
185
  end
186
186
  opts.on( '-n', '--network-mode <mode>', 'Define the network mode (classical or vxlan)') do |mode|
187
- case mode
188
- when 'classical'
189
- when 'vxlan'
190
- else
187
+ if mode != 'classical' and mode != 'vxlan'
191
188
  puts 'Invalid network mode'
192
189
  exit 1
193
190
  end
@@ -411,7 +408,7 @@ Net::SSH::Multi.start do |session|
411
408
  session.with(:coord).exec! "cd #{gitdir} && git fetch origin #{options[:branch]}"
412
409
  session.with(:coord).exec! "cd #{gitdir} && git checkout #{options[:branch]}"
413
410
  end
414
- else option[:gerrit] # gerrit
411
+ elsif option[:gerrit] # gerrit
415
412
  logger.info("Setting up git repository from gerrit ref:#{options[:gerrit]} on #{coordinator}")
416
413
  session.with(:coord).exec! "git clone #{GERRIT_REPOSITORY} #{gitdir}"
417
414
  session.with(:coord).exec! "cd #{gitdir} && git fetch #{GERRIT_REPOSITORY} #{options[:gerrit]} && git checkout FETCH_HEAD"
@@ -497,7 +494,6 @@ Net::SSH::Multi.start do |session|
497
494
  session.with(:coord).exec! "mkdir -p #{PATH_DISTEMD_LOGS}"
498
495
  begin
499
496
  Timeout.timeout(10) do
500
- root_iface_opt = options[:network_interface] ? "--network-interface #{options[:network_interface]}" : ''
501
497
  distem_cmd = "LANG=C distemd #{options[:verbose] ? '--verbose' : ''} -d &>#{File.join(PATH_DISTEMD_LOGS,'distemd.log')}&"
502
498
 
503
499
  session.with(:coord).exec! distem_cmd
@@ -545,19 +541,16 @@ Net::SSH::Multi.start do |session|
545
541
 
546
542
  if ARGV[0]
547
543
  begin
548
- File.open(ARGV[0], 'r') do |f|
549
- filename = session.with(:coord).exec!('tempfile')[coordinator][:stdout]
550
- logger.info("Copying script file in '#{filename}' on #{coordinator}")
551
- `scp #{ARGV[0]} root@#{coordinator}:#{filename}`
552
- session.with(:coord).exec! "chmod +x #{filename}"
553
- logger.info("Executing script file '#{filename}' on #{coordinator}")
554
-
555
- argv_dup = ARGV.dup
556
- argv_dup.shift
557
- script_args = (argv_dup.length > 0 ? argv_dup.join(" ") : "")
558
- #session.with(:coord).exec! "export #{VAR_DISTEM_NODES}='#{(nodelist + [coordinator]) * "\n"}'; export #{VAR_DISTEM_COORD}='#{coordinator}';#{filename} #{script_args}"
559
- session.with(:coord).exec! "rm #{filename}"
560
- end
544
+ filename = session.with(:coord).exec!('tempfile')[coordinator][:stdout]
545
+ logger.info("Copying script file in '#{filename}' on #{coordinator}")
546
+ `scp #{ARGV[0]} root@#{coordinator}:#{filename}`
547
+ session.with(:coord).exec! "chmod +x #{filename}"
548
+ logger.info("Executing script file '#{filename}' on #{coordinator}")
549
+
550
+ argv_dup = ARGV.dup
551
+ argv_dup.shift
552
+ #session.with(:coord).exec! "export #{VAR_DISTEM_NODES}='#{(nodelist + [coordinator]) * "\n"}'; export #{VAR_DISTEM_COORD}='#{coordinator}';#{filename} #{script_args}"
553
+ session.with(:coord).exec! "rm #{filename}"
561
554
  logger.info 'Script execution done'
562
555
  rescue Errno::ENOENT
563
556
  logger.error "script file '#{ARGV[0]}' not found"
@@ -582,6 +575,7 @@ Net::SSH::Multi.start do |session|
582
575
  sock.send(stats.to_yaml,0)
583
576
  sock.close
584
577
  rescue SocketError, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EHOSTUNREACH
585
- end
578
+ logger.error("An error occured while sending stats to #{STATS_SERV}:#{STATS_PORT}.")
579
+ end
586
580
  end
587
581
  end
@@ -1,7 +1,6 @@
1
1
  # @title Grid'5000 tutorial
2
2
  # Grid'5000 tutorial
3
3
 
4
-
5
4
  This tutorial aims at showing how **Ruby-Cute** can be used to
6
5
  help the scripting of an experiment in the context of the Grid'5000 testbed.
7
6
  The programming language used, as you would expect, is {https://www.ruby-lang.org/en/ Ruby}.
@@ -35,6 +34,12 @@ Before using **Ruby-Cute** you have to create the following file:
35
34
  $ version: 3.0
36
35
  $ EOF
37
36
 
37
+ You will also need 2 gems to do this tutorial:
38
+ - net-ssh
39
+ - net-scp
40
+
41
+ If you want to use taktuk you will need to have the executable on the machine where you are running the ruby script
42
+
38
43
  ## Getting acquainted with the pry console
39
44
 
40
45
  After instaling `ruby-cute` and `pry` gems you can lunch a pry console
@@ -117,7 +122,7 @@ For this particular experiment we have the following requirements:
117
122
 
118
123
  - A pair of SSH keys
119
124
  - Use of standard environment (no deploy)
120
- - Two nodes connected with infiniband (10G or 20G)
125
+ - Two nodes connected with infiniband
121
126
  - MPI benchmark NETPIPE
122
127
  - A MPI runtime (OpenMPI or MPICH)
123
128
 
@@ -169,7 +174,7 @@ see [SSH Configuration](https://www.grid5000.fr/mediawiki/index.php/SSH_and_Grid
169
174
  Now that we have found the sites, let's submit a job. You can use between
170
175
  Grenoble and Nancy sites. If you take a look at
171
176
  {https://www.grid5000.fr/mediawiki/index.php/Status Monika} you will see that in
172
- Nancy we should use the OAR property 'ib_rate=20' and in Grenoble we should use
177
+ Nancy we can use the OAR property 'ib_rate=20' and in Grenoble we can use
173
178
  'ib_rate=10'. More simply you can use the property ib_count=1 which will give
174
179
  you nodes with infiniband whatever the rate.
175
180
 
@@ -250,7 +255,7 @@ Here to illustrate the use of temporary files, let's type the following:
250
255
  and copy-paste the following code:
251
256
 
252
257
  Net::SSH.start(nodes.first, "oar", grid5000_opt) do |ssh|
253
- puts ssh.exec("cat /tmp/machine_file")
258
+ puts ssh.exec!("cat /tmp/machine_file")
254
259
  end
255
260
 
256
261
  If we save and quit the editor, the code will be evaluated in Pry context.
@@ -271,12 +276,12 @@ the benchmark. Create a Ruby file called netpipe:
271
276
  With the following content:
272
277
 
273
278
  Net::SSH.start(nodes.first, "oar", grid5000_opt) do |ssh|
274
- netpipe_url = "http://pkgs.fedoraproject.org/repo/pkgs/NetPIPE/NetPIPE-3.7.1.tar.gz/5f720541387be065afdefc81d438b712/NetPIPE-3.7.1.tar.gz"
279
+ netpipe_url = "https://fossies.org/linux/privat/NetPIPE-3.7.2.tar.gz"
275
280
  ssh.exec!("mkdir -p netpipe_exp")
276
281
  ssh.exec!("wget -O ~/netpipe_exp/NetPIPE.tar.gz #{netpipe_url}")
277
282
  ssh.exec!("cd netpipe_exp && tar -zvxf NetPIPE.tar.gz")
278
- ssh.exec!("cd netpipe_exp/NetPIPE-3.7.1 && make mpi")
279
- ssh.exec("mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.1/NPmpi")
283
+ ssh.exec!("cd netpipe_exp/NetPIPE-3.7.2 && make mpi")
284
+ puts ssh.exec!("mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.2/NPmpi")
280
285
  end
281
286
 
282
287
  Then, execute the created script:
@@ -308,14 +313,16 @@ We can fix this problem by prefixing the `mpirun` command with `export OAR_JOB_K
308
313
  Now the code will look like this:
309
314
 
310
315
  Net::SSH.start(nodes.first, "oar", grid5000_opt) do |ssh|
311
- netpipe_url = "http://pkgs.fedoraproject.org/repo/pkgs/NetPIPE/NetPIPE-3.7.1.tar.gz/5f720541387be065afdefc81d438b712/NetPIPE-3.7.1.tar.gz"
316
+ netpipe_url = "https://fossies.org/linux/privat/NetPIPE-3.7.2.tar.gz"
312
317
  ssh.exec!("mkdir -p netpipe_exp")
313
318
  ssh.exec!("wget -O ~/netpipe_exp/NetPIPE.tar.gz #{netpipe_url}")
314
319
  ssh.exec!("cd netpipe_exp && tar -zvxf NetPIPE.tar.gz")
315
- ssh.exec!("cd netpipe_exp/NetPIPE-3.7.1 && make mpi")
316
- ssh.exec("export OAR_JOB_KEY_FILE=~/my_ssh_jobkey;mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.1/NPmpi")
320
+ ssh.exec!("cd netpipe_exp/NetPIPE-3.7.2 && make mpi")
321
+ puts ssh.exec!("export OAR_JOB_KEY_FILE=~/my_ssh_jobkey;mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.2/NPmpi")
317
322
  end
318
323
 
324
+ [comment]: # output of the last ssh.exec still doesn't show
325
+
319
326
  After running the script, it will show the output of the benchmark in the `pry` console:
320
327
 
321
328
  [34] pry(main)> play netpipe.rb
@@ -341,13 +348,13 @@ The latency is given by the last column for a 1 byte message; the maximum throug
341
348
  We can try to performn the same test without using infiniband, in order to observe the difference in bandwidth and latency:
342
349
 
343
350
  Net::SSH.start(nodes.first, "oar", grid5000_opt) do |ssh|
344
- netpipe_url = "http://pkgs.fedoraproject.org/repo/pkgs/NetPIPE/NetPIPE-3.7.1.tar.gz/5f720541387be065afdefc81d438b712/NetPIPE-3.7.1.tar.gz"
351
+ netpipe_url = "https://fossies.org/linux/privat/NetPIPE-3.7.2.tar.gz"
345
352
  ssh.exec!("mkdir -p netpipe_exp")
346
353
  ssh.exec!("wget -O ~/netpipe_exp/NetPIPE.tar.gz #{netpipe_url}")
347
354
  ssh.exec!("cd netpipe_exp && tar -zvxf NetPIPE.tar.gz")
348
- ssh.exec!("cd netpipe_exp/NetPIPE-3.7.1 && make mpi")
355
+ ssh.exec!("cd netpipe_exp/NetPIPE-3.7.2 && make mpi")
349
356
  mpi_command = "export OAR_JOB_KEY_FILE=~/my_ssh_jobkey;"
350
- mpi_command+= "mpirun --mca plm_rsh_agent \"oarsh\" --mca btl self,sm,tcp -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.1/NPmpi"
357
+ mpi_command+= "mpirun --mca plm_rsh_agent \"oarsh\" --mca btl self,sm,tcp -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.2/NPmpi"
351
358
  ssh.exec(mpi_command)
352
359
  end
353
360
 
@@ -355,14 +362,14 @@ We can modify slightly the previous script to write the result into a file.
355
362
  We need to use `ssh.exec!` to capture the output of the commands.
356
363
 
357
364
  Net::SSH.start(nodes.first, "oar", grid5000_opt) do |ssh|
358
- netpipe_url = "http://pkgs.fedoraproject.org/repo/pkgs/NetPIPE/NetPIPE-3.7.1.tar.gz/5f720541387be065afdefc81d438b712/NetPIPE-3.7.1.tar.gz"
365
+ netpipe_url = "https://fossies.org/linux/privat/NetPIPE-3.7.2.tar.gz"
359
366
  ssh.exec!("mkdir -p netpipe_exp")
360
367
  ssh.exec!("wget -O ~/netpipe_exp/NetPIPE.tar.gz #{netpipe_url}")
361
368
  ssh.exec!("cd netpipe_exp && tar -zvxf NetPIPE.tar.gz")
362
- ssh.exec!("cd netpipe_exp/NetPIPE-3.7.1 && make mpi")
369
+ ssh.exec!("cd netpipe_exp/NetPIPE-3.7.2 && make mpi")
363
370
 
364
371
  File.open("output_netpipe.txt", 'w') do |f|
365
- f.puts ssh.exec!("OAR_JOB_KEY_FILE=~/my_ssh_jobkey; mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.1/NPmpi")
372
+ f.puts ssh.exec!("OAR_JOB_KEY_FILE=~/my_ssh_jobkey; mpirun --mca plm_rsh_agent \"oarsh\" -machinefile /tmp/machine_file ~/netpipe_exp/NetPIPE-3.7.2/NPmpi")
366
373
  end
367
374
  end
368
375
 
@@ -447,7 +454,7 @@ and type the following code:
447
454
  job = {}
448
455
 
449
456
  sites.each do |site|
450
- job = $g5k.reserve(:site => site, :cluster => 1, :nodes => 4, :wait => false, :walltime => "01:00:00")
457
+ job = $g5k.reserve(:site => site, :cluster => 1, :nodes => 4, :wait => false, :walltime => "01:00:00", :type => :allow_classic_ssh)
451
458
  begin
452
459
  job = $g5k.wait_for_job(job, :wait_time => 60)
453
460
  puts "Nodes assigned #{job['assigned_nodes']}"
@@ -554,7 +561,7 @@ Open the editor in pry console:
554
561
 
555
562
  Then, type:
556
563
 
557
- SOURCE_NAS = "http://public.rennes.grid5000.fr/~cruizsanabria/NPB3.3.tar"
564
+ SOURCE_NAS = "http://public.rennes.grid5000.fr/~ddelabroye/NPB3.3.tar"
558
565
 
559
566
  `wget #{SOURCE_NAS} -O /tmp/NAS.tar`
560
567
 
@@ -47,7 +47,7 @@ if jobs.keys.empty? then
47
47
  end
48
48
 
49
49
  nodes = []
50
- jobs.each{ |k,v| nodes+=v["assigned_nodes"]}
50
+ jobs.each{ |_k,v| nodes+=v["assigned_nodes"]}
51
51
 
52
52
  puts("Nodes reserved: #{nodes.inspect}")
53
53
 
data/lib/cute/bash.rb CHANGED
@@ -55,7 +55,7 @@ module Cute; module Bash
55
55
  return Digest::SHA512.hexdigest(randee).to_s
56
56
  end
57
57
 
58
- def _run(cmd, opts)
58
+ def _run(cmd, _opts)
59
59
  # it's a kind of magic
60
60
  $stderr.write("\nBASH CMD: #{cmd}\n") if @debug
61
61
  nonce = _nonce()
@@ -74,7 +74,7 @@ module Cute; module Bash
74
74
  return output, status.to_i
75
75
  end
76
76
 
77
- def _run_block(cmd, opts)
77
+ def _run_block(cmd, _opts)
78
78
  @stdin.write("#{cmd}; printf '%04d#{nonce}' $?\n")
79
79
  end
80
80
 
@@ -110,7 +110,7 @@ module Cute; module Bash
110
110
  end
111
111
 
112
112
  def run_status(cmd, opts = {})
113
- out, status = _run(cmd, opts)
113
+ _out, status = _run(cmd, opts)
114
114
  return status
115
115
  end
116
116
 
@@ -278,7 +278,7 @@ module Cute; module Bash
278
278
 
279
279
  def packages
280
280
  list = run("dpkg -l")
281
- list = _unlines(list).map do |p|
281
+ _unlines(list).map do |p|
282
282
  s, n, v = p.split
283
283
  { :status => s, :name => n, :version => v }
284
284
  end
@@ -313,13 +313,13 @@ module Cute; module Bash
313
313
 
314
314
  def self.bash(cmd = 'bash', debug = false, &block)
315
315
  if not block_given?
316
- sin, sout, serr, thr = Open3.popen3(cmd)
316
+ sin, sout, _serr, _thr = Open3.popen3(cmd)
317
317
  return Bash.new(sin, sout, debug)
318
318
  end
319
319
  # run bash interpreter using this command
320
320
  result = nil
321
- Open3.popen3(cmd) do |sin, sout, serr, thr|
322
- dsl = Bash.new(sin, sout, debug)
321
+ Open3.popen3(cmd) do |cmdsin, cmdsout, _cmdserr, _cmdthr|
322
+ dsl = Bash.new(cmdsin, cmdsout, debug)
323
323
  dsl.cd('~') # go to the home dir
324
324
  result = dsl.parse(&block)
325
325
  end
@@ -97,7 +97,9 @@ module Cute
97
97
  @path.compact.each do |field|
98
98
  begin
99
99
  field = Integer(field)
100
- rescue ArgumentError
100
+ rescue ArgumentError => e
101
+ puts "Error: #{e.message}"
102
+ puts "#{e.backtrace}"
101
103
  end
102
104
 
103
105
  if ret[field]
@@ -164,7 +166,7 @@ module Cute
164
166
  end
165
167
  end
166
168
 
167
- def check_array(val, array, fieldname)
169
+ def check_array(val, array, _fieldname)
168
170
  unless array.include?(val)
169
171
  raise ParserError.new(
170
172
  "Invalid value '#{val}', allowed value"\
@@ -183,7 +185,7 @@ module Cute
183
185
  check_array(val, range.entries, fieldname)
184
186
  end
185
187
 
186
- def check_regexp(val, regexp, fieldname)
188
+ def check_regexp(val, regexp, _fieldname)
187
189
  unless val =~ regexp
188
190
  raise ParserError.new(
189
191
  "Invalid value '#{val}', the value must have the form (ruby-regexp): "\
@@ -193,8 +195,8 @@ module Cute
193
195
  end
194
196
 
195
197
  # A file, checking if exists (creating it otherwise) and writable
196
- def check_file(val, file, fieldname)
197
- if File.exists?(val)
198
+ def check_file(val, _file, _fieldname)
199
+ if File.exist?(val)
198
200
  unless File.file?(val)
199
201
  raise ParserError.new("The file '#{val}' is not a regular file")
200
202
  end
@@ -204,7 +206,7 @@ module Cute
204
206
  end
205
207
 
206
208
  # A directory, checking if exists (creating it otherwise) and writable
207
- def check_dir(val, dir, fieldname)
209
+ def check_dir(val, _dir, _fieldname)
208
210
  if File.exist?(val)
209
211
  unless File.directory?(val)
210
212
  raise ParserError.new("'#{val}' is not a regular directory")
@@ -215,7 +217,7 @@ module Cute
215
217
  end
216
218
 
217
219
  # A pathname, checking if exists (creating it otherwise) and writable
218
- def check_pathname(val, pathname, fieldname)
220
+ def check_pathname(val, _pathname, _fieldname)
219
221
  begin
220
222
  Pathname.new(val)
221
223
  rescue
@@ -223,7 +225,7 @@ module Cute
223
225
  end
224
226
  end
225
227
 
226
- def check_string(val, str, fieldname)
228
+ def check_string(val, str, _fieldname)
227
229
  unless val == str
228
230
  raise ParserError.new(
229
231
  "Invalid value '#{val}', allowed values are: '#{str}'"
@@ -231,7 +233,7 @@ module Cute
231
233
  end
232
234
  end
233
235
 
234
- def customcheck_code(val, fieldname, args)
236
+ def customcheck_code(_val, _fieldname, args)
235
237
  begin
236
238
  eval("#{args[:prefix]}#{args[:code]}#{args[:suffix]}")
237
239
  rescue
@@ -239,11 +241,11 @@ module Cute
239
241
  end
240
242
  end
241
243
 
242
- def customcheck_file(val, fieldname, args)
244
+ def customcheck_file(val, _fieldname, args)
243
245
  return if args[:disable]
244
246
  val = File.join(args[:prefix],val) if args[:prefix]
245
247
  val = File.join(val,args[:suffix]) if args[:suffix]
246
- if File.exists?(val)
248
+ if File.exist?(val)
247
249
  if File.file?(val)
248
250
  if args[:writable]
249
251
  unless File.stat(val).writable?
@@ -274,7 +276,7 @@ module Cute
274
276
  end
275
277
  end
276
278
 
277
- def customcheck_dir(val, fieldname, args)
279
+ def customcheck_dir(val, _fieldname, args)
278
280
  return if args[:disable]
279
281
  val = File.join(args[:prefix],val) if args[:prefix]
280
282
  val = File.join(val,args[:suffix]) if args[:suffix]
data/lib/cute/execute.rb CHANGED
@@ -2,8 +2,7 @@
2
2
  module Cute
3
3
 
4
4
  class Execute
5
- require 'thread'
6
- require 'fcntl'
5
+ require 'fcntl'
7
6
  attr_reader :command, :exec_pid, :stdout, :stderr, :status,:emptypipes
8
7
  @@forkmutex = Mutex.new
9
8
 
@@ -254,14 +253,17 @@ module Cute
254
253
  f_IO=IO.new(fd)
255
254
  f_IO.close if !f_IO.closed?
256
255
  end
257
- rescue Exception
256
+ rescue StandardError
258
257
  #Some file descriptor are reserved for the rubyVM.
259
258
  #So the function 'IO.new' raises an exception. We ignore that.
260
259
  end
261
260
  end
262
261
  end
263
262
  exec(*@command)
264
- rescue SystemCallError, Exception => e
263
+ rescue SystemCallError => e
264
+ STDERR.puts "Fork Error: #{e.message} (#{e.class.name})"
265
+ STDERR.puts e.backtrace
266
+ rescue StandardError => e
265
267
  STDERR.puts "Fork Error: #{e.message} (#{e.class.name})"
266
268
  STDERR.puts e.backtrace
267
269
  end
@@ -42,11 +42,10 @@ module Cute
42
42
  class OARSSHopts < Hash
43
43
 
44
44
  def initialize(opts={})
45
-
45
+ super
46
46
  raise "The argument must be a Hash" unless opts.is_a?(Hash)
47
- self.merge!({:user => "oar", :keys => ["~/my_ssh_jobkey"], :port => 6667 })
48
- self.merge!(opts)
49
-
47
+ self.merge!({:user => "oar", :keys => ["~/my_ssh_jobkey"], :port => 6667 })
48
+ self.merge!(opts)
50
49
  end
51
50
 
52
51
  end