aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Lasseter <66247271+nl987@users.noreply.github.com>2020-11-11 16:01:43 +0000
committerGitHub <noreply@github.com>2020-11-11 16:01:43 +0000
commitc218b3ab2cecab7efafdb8f9f3f18cb725dc9634 (patch)
treea7cd4945c95c14a8ebcd867c8a8cbdfadbe58ea7
parent72937de200cb22b300970c7080a8a5040737010f (diff)
parentfdc0cc08592e4606e684951b5e2503832b15d148 (diff)
Merge pull request #2 from university-of-york/slurm_number_jobs
New raider: number of jobs by partition, user, and state
-rw-r--r--.rubocop.yml7
-rw-r--r--slurm_number_jobs.rb34
2 files changed, 41 insertions, 0 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 48211dc..303f329 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,5 +1,12 @@
Layout/LineLength:
Max: 80
+Metrics/MethodLength:
+ CountAsOne:
+ - 'array'
+ - 'hash'
+ - 'heredoc'
+ Max: 20
+
AllCops:
NewCops: enable
diff --git a/slurm_number_jobs.rb b/slurm_number_jobs.rb
new file mode 100644
index 0000000..91fe630
--- /dev/null
+++ b/slurm_number_jobs.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+# Report the number of jobs currently in queue,
+# aggregated by state, user, and partition
+class SlurmNumberJobs
+ def initialize(collector, config)
+ @collector = collector
+ @config = config
+ end
+
+ def raid
+ raw = `squeue --format="%P,%u,%T" --noheader`
+ raw = raw.lines.map(&:strip)
+ raw = raw.map { |line| line.split(',') }
+
+ tally = raw.tally
+
+ @collector.redact!('slurm_number_jobs')
+
+ tally.each do |labelset, number|
+ @collector.report!(
+ 'slurm_number_jobs',
+ number,
+ help: 'Number of jobs for a given user, partition, and state',
+ type: 'gauge',
+ labels: {
+ partition: labelset[0],
+ user: labelset[1],
+ state: labelset[2]
+ }
+ )
+ end
+ end
+end