예제 #1
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    k8s_client = client.BatchV1Api()

    try:

        ## get pods from job
        label_selector = "job-name=" + data["name"]
        pretty = 'true'

        v1 = client.CoreV1Api()
        ret = v1.list_pod_for_all_namespaces(watch=False,
                                             label_selector=label_selector)

        print("pods found: %s" % len(ret.items))

        for i in ret.items:
            print("Removing pod %s" % (i.metadata.name))

        watch = True

        try:
            api_response = v1.delete_collection_namespaced_pod(
                data["namespace"],
                pretty=pretty,
                label_selector=label_selector,
                watch=watch)

            print(common.parseJson(api_response))
        except ApiException as e:
            print(
                "Exception when calling CoreV1Api->delete_collection_namespaced_pod: %s\n"
                % e)

        body = client.V1DeleteOptions(api_version='v1',
                                      kind="DeleteOptions",
                                      propagation_policy="Background")

        api_response = k8s_client.delete_namespaced_job(
            name=data["name"],
            namespace=data["namespace"],
            body=body,
            pretty=pretty)

        print(common.parseJson(api_response.status))

    except ApiException as e:
        log.error("Exception when calling delete_namespaced_job: %s\n" % e)
        sys.exit(1)
예제 #2
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    common.connect()

    data = {}
    data["api_version"] = os.environ.get('RD_CONFIG_API_VERSION')
    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')
    force = os.environ.get('RD_CONFIG_FORCE')

    try:

        k8s_client = client.BatchV1Api()
        job = k8s_client.read_namespaced_job(name=data["name"],
                                             namespace=data["namespace"])
        if not force and job.status and job.status.active:
            log.info('Previous job run still active; not deleting')
            return
        job.metadata.creation_timestamp = None
        job.metadata.uid = None
        job.metadata.resource_version = None
        job.status = None
        job.spec.selector = None
        job.spec.template.metadata = None

        body = client.V1DeleteOptions(api_version='v1',
                                      kind="DeleteOptions",
                                      propagation_policy="Background")
        pretty = 'pretty_example'

        api_response = k8s_client.delete_namespaced_job(
            name=data["name"],
            namespace=data["namespace"],
            body=body,
            pretty=pretty)

        print(common.parseJson(api_response))

        api_response = k8s_client.create_namespaced_job(
            body=job, namespace=data["namespace"])

        print(common.parseJson(api_response.status))

    except ApiException:
        log.exception("Exception creating job:")
        sys.exit(1)
def main():

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    try:
        api = client.AppsV1Api()

        api_response = api.read_namespaced_deployment(data["name"],
                                                      data["namespace"])

        print(common.parseJson(api_response.status))

        replicas = api_response.status.replicas
        r_replicas = api_response.status.ready_replicas
        u_replicas = api_response.status.unavailable_replicas

        if (u_replicas is not None):
            log.error("unavailable replicas on the deployment: %s\n",
                      u_replicas)
            sys.exit(1)

        if (replicas != r_replicas):
            log.error("ready replicas doesn't match with replicas: %s\n",
                      r_replicas)
            sys.exit(1)

    except ApiException:
        log.exception("Exception deleting deployment:")
        sys.exit(1)
예제 #4
0
def main():
    common.connect()
    disable_build = os.environ.get('RD_CONFIG_DISABLEBUILD')

    if disable_build != "false":
        sys.exit(0)

    data = {
        "yaml": os.environ.get('RD_CONFIG_YAML'),
        "namespace": os.environ.get('RD_CONFIG_NAMESPACE'),
        "name": os.environ.get('RD_CONFIG_NAME')
    }

    with client.ApiClient() as k8s_client:
        openshift_client = DynamicClient(k8s_client)

    try:
        dep = yaml.safe_load(data["yaml"])
        v1_bc = openshift_client.resources.get(
            api_version='build.openshift.io/v1', kind='BuildConfig')

        resp = v1_bc.apply(body=dep, namespace=data["namespace"])
        print(common.parseJson(resp.metadata))
    except ApiException as e:
        if e.status == 409:
            log.warning("Build config already exists.")
            # _trigger_build(data["namespace"], data["name"])
        else:
            log.error("Exception error creating: %s\n" % e)
            sys.exit(1)
예제 #5
0
def _trigger_build(namespace, name):
    headers = {
        'Authorization': 'Bearer ' + os.environ.get('RD_CONFIG_TOKEN'),
        'Content-Type': 'application/json',
        'Accept': 'application/json',
    }

    data = '''
        {
        "kind":"BuildRequest","apiVersion":"build.openshift.io/v1",
        "metadata":
            {
                "name":"%s",
                "creationTimestamp":null
            },
            "triggeredBy":[{"message":"Manually triggered"}],
            "dockerStrategyOptions":{},
            "sourceStrategyOptions":{}
        }
    ''' % name

    url = os.environ.get(
        'RD_CONFIG_URL'
    ) + "/apis/build.openshift.io/v1/namespaces/{}/buildconfigs/{}/instantiate".format(
        namespace, name)
    if url is not None:
        try:
            response = requests.post(url=url,
                                     json=json.loads(data),
                                     headers=headers,
                                     verify=False)
            print(common.parseJson(response.text))
        except requests.HTTPError as e:
            log.error("Exception while triggering build: %s\n" % e)
            sys.exit(1)
def create_deployment(api_instance, deployment, data):
    # Create deployement
    api_response = api_instance.create_namespaced_deployment(
        body=deployment,
        namespace=data["namespace"])

    print(common.parseJson(api_response.status))
예제 #7
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}

    data["type"] = os.environ.get('RD_CONFIG_TYPE')
    data["yaml"] = os.environ.get('RD_CONFIG_YAML')
    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    try:
        if data["type"] == "ConfigMap":
            api_instance = client.CoreV1Api()
            dep = yaml.safe_load(data["yaml"])
            resp = api_instance.patch_namespaced_config_map(
                name=data["name"],
                namespace=data["namespace"],
                body=dep,
                pretty="true")

            print(common.parseJson(resp.metadata))
    except ApiException as e:
        log.error("Exception error creating: %s\n" % e)
        sys.exit(1)
예제 #8
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    api_instance = client.CoreV1Api()

    try:

        api_response = api_instance.delete_namespaced_service(
            name=data["name"],
            body=client.V1DeleteOptions(propagation_policy='Foreground',
                                        grace_period_seconds=5),
            namespace=data["namespace"],
            pretty="true")
        print(common.parseJson(api_response))

    except ApiException:
        log.exception("Exception when calling delete_namespaced_service:")
        sys.exit(1)
예제 #9
0
def wait():

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    retries = os.environ.get('RD_CONFIG_RETRIES')
    sleep = os.environ.get('RD_CONFIG_SLEEP')

    try:
        extensions_v1beta1 = client.ExtensionsV1beta1Api()

        api_response = extensions_v1beta1.read_namespaced_deployment(
            data["name"], data["namespace"], pretty="True")

        print common.parseJson(api_response.status)

        unavailable_replicas = api_response.status.unavailable_replicas
        replicas = api_response.status.replicas
        ready_replicas = api_response.status.ready_replicas

        retries_count = 0

        if (replicas == ready_replicas):
            log.info("Deployment is ready")
            sys.exit(0)

        while (unavailable_replicas is not None):
            log.info("wating for deployment")
            time.sleep(float(sleep))
            retries_count = retries_count + 1

            if retries_count > retries:
                log.error("number retries exedded")
                sys.exit(1)

            api_response = extensions_v1beta1.read_namespaced_deployment(
                data["name"], data["namespace"], pretty="True")
            unavailable_replicas = api_response.status.unavailable_replicas

            log.info("unavailable replicas: " + str(unavailable_replicas))

    except ApiException as e:
        log.error("Exception deleting deployment: %s\n" % e)
        sys.exit(1)
def delete_deployment(api_instance, data):
    # Delete deployment
    api_response = api_instance.delete_namespaced_deployment(
        name=data["name"],
        namespace=data["namespace"],
        body=client.V1DeleteOptions(propagation_policy='Foreground',
                                    grace_period_seconds=5))

    print(common.parseJson(api_response.status))
예제 #11
0
def wait():

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    retries = int(os.environ.get('RD_CONFIG_RETRIES'))
    sleep = int(os.environ.get('RD_CONFIG_SLEEP'))

    try:
        appsV1Api = client.AppsV1Api()

        api_response = appsV1Api.read_namespaced_deployment(data["name"],
                                                            data["namespace"],
                                                            pretty="True")

        print(common.parseJson(api_response.status))

        unavailable_replicas = api_response.status.unavailable_replicas
        replicas = api_response.status.replicas
        ready_replicas = api_response.status.ready_replicas

        if ready_replicas is None:
            ready_replicas = 0
        else:
            ready_replicas = int(ready_replicas)

        if replicas is None:
            replicas = 0
        else:
            replicas = int(replicas)

        retries_count = 0

        if (replicas == ready_replicas):
            log.info("Deployment is ready")
            sys.exit(0)

        while (unavailable_replicas is not None):
            log.info("waiting for deployment")
            time.sleep(float(sleep))
            retries_count = retries_count + 1

            if retries_count > retries:
                log.error("number of retries exceeded")
                sys.exit(1)

            api_response = appsV1Api.read_namespaced_deployment(
                data["name"], data["namespace"], pretty="True")
            unavailable_replicas = api_response.status.unavailable_replicas

            log.info("unavailable replicas: " + str(unavailable_replicas))

    except ApiException:
        log.exception("Exception deleting deployment:")
        sys.exit(1)
예제 #12
0
def main():
    # Configs can be set in Configuration class directly or using helper
    # utility. If no argument provided, the config will be loaded from
    # default location.
    common.connect()
    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}
    data["api_version"] = os.environ.get('RD_CONFIG_API_VERSION')
    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')
    data["type"] = os.environ.get('RD_CONFIG_TYPE')
    data["labels"] = os.environ.get('RD_CONFIG_LABELS')
    data["selectors"] = os.environ.get('RD_CONFIG_SELECTORS')
    data["ports"] = os.environ.get('RD_CONFIG_PORTS')

    # optionals
    if os.environ.get('RD_CONFIG_ANNOTATIONS'):
        data["annotations"] = os.environ.get('RD_CONFIG_ANNOTATIONS')

    if os.environ.get('RD_CONFIG_EXTERNAL_TRAFFIC_POLICY'):
        et_policy = os.environ.get('RD_CONFIG_EXTERNAL_TRAFFIC_POLICY')
        data["external_traffic_policy"] = et_policy

    if os.environ.get('RD_CONFIG_SESSION_AFFINITY'):
        data["session_affinity"] = os.environ.get('RD_CONFIG_SESSION_AFFINITY')

    if os.environ.get('RD_CONFIG_EXTERNAL_NAME'):
        data["external_name"] = os.environ.get('RD_CONFIG_EXTERNAL_NAME')

    if os.environ.get('RD_CONFIG_LOAD_BALANCER_IP'):
        data["load_balancer_ip"] = os.environ.get('RD_CONFIG_LOAD_BALANCER_IP')

    log.debug("Creating service from data:")
    log.debug(data)

    api_instance = client.CoreV1Api()
    service = create_service_object(data)

    log.debug("new service: ")
    log.debug(service)

    try:
        resp = api_instance.create_namespaced_service(
            namespace=data["namespace"],
            body=service
        )
        print(common.parseJson(resp.status))

    except ApiException:
        log.exception("Exception when calling create_namespaced_service:")
        sys.exit(1)
예제 #13
0
def main():
    common.connect()

    data = {"namespace": os.environ.get('RD_CONFIG_NAMESPACE'), "name": os.environ.get('RD_CONFIG_NAME')}

    with client.ApiClient() as k8s_client:
        openshift_client = DynamicClient(k8s_client)

    try:
        v1_bc = openshift_client.resources.get(api_version='build.openshift.io/v1', kind='BuildConfig')

        resp = v1_bc.delete(name=data["name"], namespace=data["namespace"])
        print(common.parseJson(resp.metadata))
    except ApiException as e:
        log.error("Exception error creating: %s\n" % e)
        sys.exit(1)
예제 #14
0
def update_deployment(api_instance, deployment, data):
    # Update the deployment
    api_response = api_instance.patch_namespaced_deployment(
        name=data["name"], namespace=data["namespace"], body=deployment)

    print(common.parseJson(api_response.status))
예제 #15
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}

    data["type"] = os.environ.get('RD_CONFIG_TYPE')
    data["yaml"] = os.environ.get('RD_CONFIG_YAML')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    try:
        if data["type"] == "Deployment":
            dep = yaml.safe_load(data["yaml"])
            api_instance = client.AppsV1Api()
            resp = api_instance.create_namespaced_deployment(
                body=dep, namespace=data["namespace"], pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "ConfigMap":
            api_instance = client.CoreV1Api()
            dep = yaml.safe_load(data["yaml"])
            resp = api_instance.create_namespaced_config_map(
                namespace=data["namespace"], body=dep, pretty="true")

            print(common.parseJson(resp.metadata))

        if data["type"] == "StatefulSet":
            dep = yaml.safe_load(data["yaml"])
            k8s_beta = client.AppsV1Api()
            resp = k8s_beta.create_namespaced_stateful_set(
                body=dep, namespace=data["namespace"], pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "Service":
            api_instance = client.CoreV1Api()
            dep = yaml.safe_load(data["yaml"])
            resp = api_instance.create_namespaced_service(
                namespace=data["namespace"], body=dep, pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "Ingress":
            dep = yaml.safe_load(data["yaml"])
            k8s_beta = client.ExtensionsV1beta1Api()
            resp = k8s_beta.create_namespaced_ingress(
                body=dep, namespace=data["namespace"], pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "Job":
            api_instance = client.BatchV1Api()
            dep = yaml.safe_load(data["yaml"])
            resp = api_instance.create_namespaced_job(
                namespace=data["namespace"], body=dep, pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "StorageClass":
            dep = yaml.safe_load(data["yaml"])
            api_instance = client.StorageV1Api()

            resp = api_instance.create_storage_class(body=dep, pretty="true")

            print(common.parseJson(resp.metadata))

        if data["type"] == "PersistentVolumeClaim":
            dep = yaml.safe_load(data["yaml"])
            api_instance = client.CoreV1Api()

            resp = api_instance.create_namespaced_persistent_volume_claim(
                namespace=data["namespace"], body=dep, pretty="true")

            print(common.parseJson(resp.status))

        if data["type"] == "Secret":
            dep = yaml.safe_load(data["yaml"])
            api_instance = client.CoreV1Api()

            resp = api_instance.create_namespaced_secret(
                namespace=data["namespace"], body=dep, pretty="true")

            print(common.parseJson(resp.metadata))

        if data["type"] == "PersistentVolume":
            dep = yaml.safe_load(data["yaml"])
            api_instance = client.CoreV1Api()

            resp = api_instance.create_persistent_volume(body=dep,
                                                         pretty="true")

            print(common.parseJson(resp.status))

    except ApiException:
        log.exception("Exception error creating:")
        sys.exit(1)
예제 #16
0
def wait():

    data = {}

    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    retries = int(os.environ.get('RD_CONFIG_RETRIES'))
    sleep = int(os.environ.get('RD_CONFIG_SLEEP'))

    try:
        AppsV1Api = client.AppsV1Api()

        api_response = AppsV1Api.read_namespaced_stateful_set(
            data["name"], data["namespace"], pretty="True")

        print(common.parseJson(api_response.status))

        current_replicas = api_response.status.current_replicas
        replicas = api_response.spec.replicas
        ready_replicas = api_response.status.ready_replicas

        if ready_replicas is None:
            ready_replicas = 0
        else:
            ready_replicas = int(ready_replicas)

        if replicas is None:
            replicas = 0
        else:
            replicas = int(replicas)

        retries_count = 0

        if (replicas == ready_replicas):
            log.info("Deployment is ready")
            sys.exit(0)

        while (ready_replicas < replicas):
            log.info("waiting for StatefulSet")
            time.sleep(float(sleep))
            retries_count = retries_count + 1

            if retries_count > retries:
                log.error("number of retries exceeded")
                sys.exit(1)

            api_response = AppsV1Api.read_namespaced_stateful_set(
                data["name"], data["namespace"], pretty="True")

            replicas = api_response.spec.replicas
            ready_replicas = api_response.status.ready_replicas

            if ready_replicas is None:
                ready_replicas = 0
            else:
                ready_replicas = int(ready_replicas)

            if replicas is None:
                replicas = 0
            else:
                replicas = int(replicas)

            print(common.parseJson(api_response.status))

        log.info("current_replicas" + str(replicas))

    except ApiException:
        log.exception("Exception deleting StatefulSet:")
        sys.exit(1)
예제 #17
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    common.connect()

    data = {}
    data["api_version"] = os.environ.get('RD_CONFIG_API_VERSION')
    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')
    data["container_name"] = os.environ.get('RD_CONFIG_CONTAINER_NAME')
    data["container_image"] = os.environ.get('RD_CONFIG_CONTAINER_IMAGE')

    data["image_pull_policy"] = os.environ.get('RD_CONFIG_IMAGE_PULL_POLICY')

    if os.environ.get('RD_CONFIG_PARALLELISM'):
        data["parallelism"] = os.environ.get('RD_CONFIG_PARALLELISM')

    if os.environ.get('RD_CONFIG_LABELS'):
        data["labels"] = os.environ.get('RD_CONFIG_LABELS')

    if os.environ.get('RD_CONFIG_ANNOTATIONS'):
        data["annotations"] = os.environ.get('RD_CONFIG_ANNOTATIONS')

    if os.environ.get('RD_CONFIG_SELECTORS'):
        data["selectors"] = os.environ.get('RD_CONFIG_SELECTORS')

    if os.environ.get('RD_CONFIG_CONTAINER_COMMAND'):
        cmd = os.environ.get('RD_CONFIG_CONTAINER_COMMAND')
        data["container_command"] = cmd

    if os.environ.get('RD_CONFIG_CONTAINER_ARGS'):
        data["container_args"] = os.environ.get('RD_CONFIG_CONTAINER_ARGS')

    if os.environ.get('RD_CONFIG_RESOURCES_REQUESTS'):
        req = os.environ.get('RD_CONFIG_RESOURCES_REQUESTS')
        data["resources_requests"] = req

    if os.environ.get('RD_CONFIG_VOLUME_MOUNTS'):
        data["volume_mounts"] = os.environ.get('RD_CONFIG_VOLUME_MOUNTS')

    if os.environ.get('RD_CONFIG_VOLUMES'):
        data["volumes"] = os.environ.get('RD_CONFIG_VOLUMES')

    if os.environ.get('RD_CONFIG_JOB_RESTART_POLICY'):
        rpolicy = os.environ.get('RD_CONFIG_JOB_RESTART_POLICY')
        data["job_restart_policy"] = rpolicy

    if os.environ.get('RD_CONFIG_COMPLETIONS'):
        data["completions"] = os.environ.get('RD_CONFIG_COMPLETIONS')

    if os.environ.get('RD_CONFIG_ACTIVE_DEADLINE_SECONDS'):
        active_ds = os.environ.get('RD_CONFIG_ACTIVE_DEADLINE_SECONDS')
        data["active_deadline_seconds"] = active_ds

    if os.environ.get('RD_CONFIG_BACKOFF_LIMIT'):
        backoff_limit = os.environ.get('RD_CONFIG_BACKOFF_LIMIT')
        data["backoff_limit"] = backoff_limit

    if os.environ.get('RD_CONFIG_ENVIRONMENTS'):
        data["environments"] = os.environ.get('RD_CONFIG_ENVIRONMENTS')

    if os.environ.get('RD_CONFIG_ENVIRONMENTS_SECRETS'):
        esecret = os.environ.get('RD_CONFIG_ENVIRONMENTS_SECRETS')
        data["environments_secrets"] = esecret

    if os.environ.get('RD_CONFIG_IMAGEPULLSECRETS'):
        data["image_pull_secrets"] = os.environ.get(
            'RD_CONFIG_IMAGEPULLSECRETS')

    if os.environ.get('RD_CONFIG_NODE_SELECTORS'):
        node_selector = os.environ.get('RD_CONFIG_NODE_SELECTORS')
        data["node_selector"] = node_selector

    if os.environ.get('RD_CONFIG_TOLERATIONS'):
        tolerations = os.environ.get('RD_CONFIG_TOLERATIONS')
        data["tolerations"] = tolerations

    if os.environ.get('RD_CONFIG_ENV_FROM'):
        env_from = os.environ.get('RD_CONFIG_ENV_FROM')
        data["env_from"] = env_from

    log.debug("Creating job")
    log.debug(data)

    job = create_job_object(data)

    log.debug("new job: ")
    log.debug(job)

    try:

        k8s_client = client.BatchV1Api()
        api_response = k8s_client.create_namespaced_job(
            body=job, namespace=data["namespace"])

        print(common.parseJson(api_response.status))

    except ApiException as e:
        log.error("Exception creating job: %s\n" % e)
        sys.exit(1)
예제 #18
0
def main():

    if os.environ.get('RD_CONFIG_DEBUG') == 'true':
        log.setLevel(logging.DEBUG)
        log.debug("Log level configured for DEBUG")

    data = {}
    data["name"] = os.environ.get('RD_CONFIG_NAME')
    data["type"] = os.environ.get('RD_CONFIG_TYPE')
    data["namespace"] = os.environ.get('RD_CONFIG_NAMESPACE')

    common.connect()

    try:
        if data["type"] == "Deployment":
            k8s_beta = client.ExtensionsV1beta1Api()
            resp = k8s_beta.delete_namespaced_deployment(
                name=data["name"],
                namespace=data["namespace"],
                body=client.V1DeleteOptions(propagation_policy='Foreground',
                                            grace_period_seconds=5),
                pretty="true")

        if data["type"] == "ConfigMap":
            k8s_beta = client.CoreV1Api()
            resp = k8s_beta.delete_namespaced_config_map(
                name=data["name"],
                namespace=data["namespace"],
                body=client.V1DeleteOptions(propagation_policy='Foreground',
                                            grace_period_seconds=5),
                pretty="true")

        if data["type"] == "StatefulSet":
            k8s_beta = client.AppsV1Api()
            resp = k8s_beta.delete_namespaced_stateful_set(
                name=data["name"],
                namespace=data["namespace"],
                body=client.V1DeleteOptions(propagation_policy='Foreground',
                                            grace_period_seconds=5),
                pretty="true")

        if data["type"] == "Service":
            api_instance = client.CoreV1Api()
            resp = api_instance.delete_namespaced_service(
                namespace=data["namespace"],
                name=data["name"],
                body=client.V1DeleteOptions(propagation_policy='Foreground',
                                            grace_period_seconds=5),
                pretty="true")

        if data["type"] == "Ingress":
            k8s_beta = client.ExtensionsV1beta1Api()
            body = client.V1DeleteOptions()
            resp = k8s_beta.delete_namespaced_ingress(
                name=data["name"],
                namespace=data["namespace"],
                body=body,
                pretty="true")

        if data["type"] == "Job":
            api_instance = client.BatchV1Api()

            resp = api_instance.delete_namespaced_job(
                name=data["name"],
                namespace=data["namespace"],
                body=client.V1DeleteOptions(api_version='v1',
                                            kind="DeleteOptions",
                                            propagation_policy="Background"),
                pretty="true")

        if data["type"] == "StorageClass":
            api_instance = client.StorageV1Api()

            resp = api_instance.delete_storage_class(
                name=data["name"],
                body=client.V1DeleteOptions(),
                pretty="true")

        if data["type"] == "PersistentVolumeClaim":
            api_instance = client.CoreV1Api()

            resp = api_instance.delete_namespaced_persistent_volume_claim(
                namespace=data["namespace"],
                body=client.V1DeleteOptions(),
                name=data["name"],
                pretty="true")

        if data["type"] == "Secret":
            api_instance = client.CoreV1Api()

            resp = api_instance.delete_namespaced_secret(
                namespace=data["namespace"],
                name=data["name"],
                body=client.V1DeleteOptions(),
                pretty="true")

        if data["type"] == "PersistentVolume":
            api_instance = client.CoreV1Api()

            resp = api_instance.delete_persistent_volume(
                name=data["name"],
                body=client.V1DeleteOptions(),
                pretty="true")

        print(common.parseJson(resp))

    except ApiException as e:
        log.error("Exception error creating: %s\n" % e)
        sys.exit(1)