|
- #!/usr/bin/python
-
- from nilmdb.client.httpclient import HTTPClient, ClientError, ServerError
- from nilmdb.utils.printf import *
- import nilmrun
-
- import argparse
- import os
- import sys
-
- def main():
- """Kill/remove a process from the NilmRun server"""
- def_url = os.environ.get("NILMRUN_URL", "http://localhost/nilmrun/")
- parser = argparse.ArgumentParser(
- description = 'Kill/remove a process from the NilmRun server',
- formatter_class = argparse.ArgumentDefaultsHelpFormatter,
- version = nilmrun.__version__)
- group = parser.add_argument_group("Standard options")
- group.add_argument('-u', '--url',
- help = 'NilmRun server URL', default = def_url)
- group.add_argument('-n', '--noverify', action="store_true",
- help = 'Disable SSL certificate verification')
- group = parser.add_argument_group("Program")
- group.add_argument('-q', '--quiet', action="store_true",
- help = "Don't print out the final log contents")
- group.add_argument('pid', nargs='+', help="PIDs to kill")
- args = parser.parse_args()
-
- client = HTTPClient(baseurl = args.url, verify_ssl = not args.noverify)
-
- # Kill or remove process
- all_failed = True
- for pid in args.pid:
- try:
- s = client.post("process/remove", { "pid": pid })
- if not args.quiet:
- sys.stdout.write(s['log'])
- all_failed = False
- except ClientError as e:
- if "404" in e.status:
- fprintf(sys.stderr, "no such pid: %s\n", pid)
- else:
- raise
-
- # Return error if we failed to remove any of them
- if all_failed:
- raise SystemExit(1)
-
- if __name__ == "__main__":
- main()
|