Rename stop-jobs.py to be more clear what the distinction between the two scripts is.

This commit is contained in:
Joachim Meyer
2025-06-03 17:30:11 +02:00
parent 7f56102680
commit 1e0a9e8e53

View File

@@ -0,0 +1,70 @@
#!/usr/bin/python3
import time
from dateutil import parser as dateparser
import requests
import json
class CCApi:
config = {}
apiurl = ''
apikey = ''
headers = {}
debug = False
def __init__(self, config, debug=False):
self.config = config
self.apiurl = "%s/api/" % config['cc-backend']['host']
self.apikey = config['cc-backend']['apikey']
self.headers = {'accept': 'application/ld+json',
'Content-Type': 'application/json',
'Authorization': 'Bearer %s' % self.config['cc-backend']['apikey']}
self.debug = debug
def stopJob(self, id, data):
url = self.apiurl+"jobs/stop_job/%d" % id
r = requests.post(url, headers=self.headers, json=data)
if r.status_code == 200:
return r.json()
else:
print(data)
print(r.status_code, r.content)
return False
if __name__ == "__main__":
import argparse
about = """This script syncs the slurm jobs with the cluster cockpit backend. It uses
the slurm command line tools to gather the relevant slurm infos and reads
the corresponding info from cluster cockpit via its api.
After reading the data, it stops all jobs in cluster cockpit which are
not running any more according to slurm and afterwards it creates all new
running jobs in cluster cockpit.
"""
parser = argparse.ArgumentParser(description=about)
parser.add_argument(
"-c", "--config", help="Read config file. Default: config.json", default="config.json")
parser.add_argument(
"-j", "--jobs", help="Read job file file. Default: tobestopped.json", default="tobestopped.json")
parser.add_argument(
"-d", "--debug", help="Enable debug output", action="store_true")
args = parser.parse_args()
with open(args.config, 'r', encoding='utf-8') as f:
config = json.load(f)
cc = CCApi(config, args.debug)
with open("tobestopped.json") as f:
jobs = json.load(f)['data']['jobs']['items']
for job in jobs:
startTime = int(time.mktime(dateparser.parse(job['startTime']).timetuple()))
data = {
"jobState": "cancelled",
"stopTime": startTime+1,
"cluster": job['cluster'],
"jobId": job['jobId'],
"startTime": startTime
}
cc.stopJob(job['id'], data)