--- kind: ConfigMap apiVersion: v1 metadata: name: sdc-check-job-completion namespace: onap-sdc data: sdc_check_job_completion.py: | #!/usr/bin/python from __future__ import print_function import time, argparse, logging, sys, os import kubernetes.client from kubernetes import client, config from pprint import pprint #extract env variables. namespace = os.environ['NAMESPACE'] cert = os.environ['CERT'] host = os.environ['KUBERNETES_SERVICE_HOST'] token_path = os.environ['TOKEN'] with open(token_path, 'r') as token_file: token = token_file.read().replace('\n', '') client.configuration.api_key['authorization'] = token client.configuration.api_key_prefix['authorization'] = 'Bearer' client.configuration.host = "https://" + str(host) client.configuration.ssl_ca_cert = cert api_instance = client.BatchV1Api() #setup logging log = logging.getLogger(__name__) handler = logging.StreamHandler(sys.stdout) handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) handler.setLevel(logging.INFO) log.addHandler(handler) log.setLevel(logging.INFO) def is_ready(job_name): log.info( "[INFO] Checking if " + job_name + " is completed") pretty = True job_status = False try: api_response = api_instance.read_namespaced_job_status(job_name, namespace, pretty=pretty) except Exception as e: print("Exception when calling BatchV1Api->read_namespaced_job_status: %s\n" % e) pprint(api_response) if api_response.status.succeeded == 1: job_status_type = api_response.status.conditions[0].type if job_status_type == "Complete": job_status = True print("[DBG] jobStatus: " + unicode(job_status)) return job_status def main(args): for job_name in args: timeout = time.time() + 60 * 10 while True: ready = is_ready(job_name) if ready is True : break elif time.time() > timeout: log.warning( "timed out waiting for '" + job_name + "' to be ready") exit(1) else: time.sleep(5) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Process some names.') parser.add_argument('--job-name', action='append', required=True, help='A container name') args = parser.parse_args() arg_dict = vars(args) for arg in arg_dict.itervalues(): main(arg)