ruby-cute 0.12 → 0.24

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.
data/debian/changelog CHANGED
@@ -1,3 +1,111 @@
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
+
97
+ ruby-cute (0.13) unstable; urgency=medium
98
+
99
+ * New release.
100
+
101
+ -- Lucas Nussbaum <lucas@debian.org> Mon, 23 Mar 2020 21:03:21 +0100
102
+
103
+ ruby-cute (0.12) unstable; urgency=medium
104
+
105
+ * New release.
106
+
107
+ -- Lucas Nussbaum <lucas@debian.org> Thu, 24 Jan 2019 21:09:55 +0100
108
+
1
109
  ruby-cute (0.11) unstable; urgency=medium
2
110
 
3
111
  * 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