-#!/usr/bin/python3
+#!/usr/bin/env python3
'''
lljobstat command. Read job_stats files, parse and aggregate data of every
import sys
import time
import yaml
+import signal
+try:
+ from yaml import CLoader as Loader
+except ImportError:
+ from yaml import Loader
+
+signal.signal(signal.SIGINT, signal.default_int_handler)
class ArgParser: # pylint: disable=too-few-public-methods
'''
read single job_stats file, parse it and return an object
'''
cmd = ['lctl', 'get_param', '-n', param]
- output = subprocess.check_output(cmd).decode()
+ out = subprocess.check_output(cmd).decode()
+ output = out.replace('job_id: @', 'job_id: .')
try:
- yaml_obj = yaml.safe_load(output) # need several seconds...
+ yaml_obj = yaml.load(output, Loader=Loader) # need several seconds...
except yaml.scanner.ScannerError:
# only print the file name here
print("failed to parse the content of %s" % param, file=sys.stdout)
self.args = argparser.args
i = 0
- while True:
- self.run_once_retry()
- i += 1
- if self.args.repeats != -1 and i >= self.args.repeats:
- break
- time.sleep(self.args.interval)
+ try:
+ while True:
+ self.run_once_retry()
+ i += 1
+ if self.args.repeats != -1 and i >= self.args.repeats:
+ break
+ time.sleep(self.args.interval)
+ except (KeyboardInterrupt):
+ print("\nReceived KeyboardInterrupt - stopping", file=sys.stderr)
+ sys.exit()
if __name__ == "__main__":