2020-08-05 17:01:47 -04:00
|
|
|
#!/usr/bin/env python3
|
2013-08-06 14:38:43 -04:00
|
|
|
|
|
|
|
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',
|
2020-08-05 16:59:56 -04:00
|
|
|
formatter_class = argparse.ArgumentDefaultsHelpFormatter)
|
|
|
|
parser.add_argument("-v", "--version", action="version",
|
|
|
|
version=nilmrun.__version__)
|
2013-08-06 14:38:43 -04:00
|
|
|
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()
|