Пример #1
0
    def space_check(self, context_src, local_dump_file):
        """
        Method to read the local file size and checking if the remote pod has enough free space available

        :param context_src:
        :param local_dump_file:
        :return:
        """
        context_dest = self.arguments.val("tcontext")
        namespace_src = self.arguments.val("snamespace")
        namespace_dest = self.arguments.val("tnamespace")
        pod_src = self.arguments.val("spod")
        pod_dest = self.arguments.val("tpod")

        file_size_kb = (os.path.getsize(local_dump_file) // 1024)
        file_size_mb = (file_size_kb // 1024) + 1
        if file_size_kb < 10000:
            print("file size:", file_size_kb, "KB")
        else:
            print("file size:", file_size_mb, "MB")
        # switch kube-ctl context
        load_kube(context_dest)
        has_enough_space = EnoughSpaceCheck(context_src, namespace_src, pod_src, file_size_mb).run()
        if not has_enough_space:
            raise SystemExit(
                "Not enough space on target pod " + pod_dest + " in namespace " + namespace_dest + " and context " + context_dest)
Пример #2
0
def confirm_cluster_role(context):
    if context is None:
        raise SystemExit("invalid empty context for ClusterRole given")
    load_kube(context)
    api = client.RbacAuthorizationV1Api()
    return general_confirm("ClusterRole", lambda: api.list_cluster_role(),
                           lambda i: i.metadata.name)
Пример #3
0
def run_command_in_pod(context, namespace, pod, command):
    """
    returns string or None on failure

    :param context:
    :param namespace:
    :param pod:
    :param command:
    :return:
    """
    if context is None:
        raise SystemExit("Null context given")
    load_kube(context)
    api = core_v1_api.CoreV1Api()
    try:
        command_ = init_exec_command + ["-c", command]
        resp = stream.stream(api.connect_get_namespaced_pod_exec,
                             name=pod,
                             namespace=namespace,
                             command=command_,
                             stderr=True,
                             stdin=False,
                             stdout=True,
                             tty=False)
        return resp
    except ApiException as err:
        print("Something went wrong while connecting to pod", pod,
              "in namespace", namespace)
        print(err)
        return None
Пример #4
0
def confirm_storage_class(context):
    if context is None:
        raise SystemExit("invalid empty context for StorageClass given")
    load_kube(context)
    api = client.StorageV1Api()
    return general_confirm("StorageClass", lambda: api.list_storage_class(),
                           lambda i: i.metadata.name)
Пример #5
0
def confirm_node(context):
    if context is None:
        raise SystemExit("invalid empty context for Node given")
    load_kube(context)
    api = client.CoreV1Api()
    return general_confirm("Node", lambda: api.list_node(),
                           lambda i: i.metadata.name)
Пример #6
0
def confirm_priority_class(context):
    if context is None:
        raise SystemExit("invalid empty context for PriorityClass given")
    load_kube(context)
    api = client.SchedulingV1beta1Api()
    return general_confirm("PriorityClass", lambda: api.list_priority_class(),
                           lambda i: i.metadata.name)
Пример #7
0
def confirm_pod_security_policy(context):
    if context is None:
        raise SystemExit("invalid empty context for PodSecurityPolicy given")
    load_kube(context)
    api = client.PolicyV1beta1Api()
    return general_confirm("PodSecurityPolicy",
                           lambda: api.list_pod_security_policy(),
                           lambda i: i.metadata.name)
Пример #8
0
def confirm_persistent_volume(context):
    if context is None:
        raise SystemExit("invalid empty context for PersistentVolume given")
    load_kube(context)
    api = client.CoreV1Api()
    return general_confirm("PersistentVolume",
                           lambda: api.list_persistent_volume(),
                           lambda i: i.metadata.name)
Пример #9
0
def confirm_volume_attachment(context):
    if context is None:
        raise SystemExit("invalid empty context for VolumeAttachment given")
    load_kube(context)
    api = client.StorageV1Api()
    return general_confirm("VolumeAttachment",
                           lambda: api.list_volume_attachment(),
                           lambda i: i.metadata.name)
Пример #10
0
def apply_kube_yaml(context, abs_file_location):
    if context is None:
        raise SystemExit('Null context given')
    load_kube(context)
    apply_cmd = "kubectl apply -f {0} --context {1}".format(
        abs_file_location, context)
    print('Executing cmd: %s' % apply_cmd)
    output = subprocess.check_output(apply_cmd, shell=True)
    print(str(bytes(output), 'utf-8'))
Пример #11
0
def confirm_certificate_signing_request(context):
    if context is None:
        raise SystemExit(
            "invalid empty context for CertificateSigningRequest given")
    load_kube(context)
    api = client.CertificatesV1beta1Api()
    return general_confirm("CertificateSigningRequest",
                           lambda: api.list_certificate_signing_request(),
                           lambda i: i.metadata.name)
Пример #12
0
    def run(self):
        load_kube(self.context)

        cmd = "kubectl cp {0} {1}/{2}:{3}".format(self.local_source_file,
                                                  self.namespace, self.pod,
                                                  self.dest_file_in_pod)
        print("executing:", cmd)
        process = subprocess.run(cmd, shell=True)
        print(process)
Пример #13
0
def confirm_custom_resource_definition(context):
    if context is None:
        raise SystemExit(
            "invalid empty context for CustomResourceDefinition given")
    load_kube(context)
    api = client.ApiextensionsV1beta1Api()
    return general_confirm("CustomResourceDefinition",
                           lambda: api.list_custom_resource_definition(),
                           lambda i: i.metadata.name)
Пример #14
0
def confirm_role(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for Role given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for Role given")
    load_kube(context)
    api = client.RbacAuthorizationV1Api()
    return general_confirm("Role", lambda: api.list_namespaced_role(namespace),
                           lambda i: i.metadata.name)
Пример #15
0
def remove_cluster_role_binding(context, name):
    if context is None:
        raise SystemExit("invalid empty context for ClusterRoleBinding given")
    if name is None:
        raise SystemExit("invalid empty name for ClusterRoleBinding given")

    load_kube(context)
    api = client.RbacAuthorizationV1Api()
    ret, status, _ = api.delete_cluster_role_binding_with_http_info(name)
    handle_status(ret, status, "ClusterRoleBinding", None, name)
Пример #16
0
def remove_pod_security_policy(context, name):
    if context is None:
        raise SystemExit("invalid empty context for PodSecurityPolicy given")
    if name is None:
        raise SystemExit("invalid empty name for PodSecurityPolicy given")

    load_kube(context)
    api = client.PolicyV1beta1Api()
    ret, status, _ = api.delete_pod_security_policy_with_http_info(name)
    handle_status(ret, status, "PodSecurityPolicy", None, name)
Пример #17
0
def remove_volume_attachment(context, name):
    if context is None:
        raise SystemExit("invalid empty context for VolumeAttachment given")
    if name is None:
        raise SystemExit("invalid empty name for VolumeAttachment given")

    load_kube(context)
    api = client.StorageV1Api()
    ret, status, _ = api.delete_volume_attachment_with_http_info(name)
    handle_status(ret, status, "VolumeAttachment", None, name)
Пример #18
0
def remove_storage_class(context, name):
    if context is None:
        raise SystemExit("invalid empty context for StorageClass given")
    if name is None:
        raise SystemExit("invalid empty name for StorageClass given")

    load_kube(context)
    api = client.StorageV1Api()
    ret, status, _ = api.delete_storage_class_with_http_info(name)
    handle_status(ret, status, "StorageClass", None, name)
Пример #19
0
def remove_priority_class(context, name):
    if context is None:
        raise SystemExit("invalid empty context for PriorityClass given")
    if name is None:
        raise SystemExit("invalid empty name for PriorityClass given")

    load_kube(context)
    api = client.SchedulingV1beta1Api()
    ret, status, _ = api.delete_priority_class_with_http_info(name)
    handle_status(ret, status, "PriorityClass", None, name)
Пример #20
0
def confirm_lease(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for Lease given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for Lease given")
    load_kube(context)
    api = client.CoordinationV1beta1Api()
    return general_confirm("Lease",
                           lambda: api.list_namespaced_lease(namespace),
                           lambda i: i.metadata.name)
Пример #21
0
def confirm_endpoints(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for Endpoints given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for Endpoints given")
    load_kube(context)
    api = client.CoreV1Api()
    return general_confirm("Endpoints",
                           lambda: api.list_namespaced_endpoints(namespace),
                           lambda i: i.metadata.name)
Пример #22
0
def remove_node(context, name):
    if context is None:
        raise SystemExit("invalid empty context for Node given")
    if name is None:
        raise SystemExit("invalid empty name for Node given")

    load_kube(context)
    api = client.CoreV1Api()
    ret, status, _ = api.delete_node_with_http_info(name)
    handle_status(ret, status, "Node", None, name)
Пример #23
0
def confirm_cron_job(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for CronJob given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for CronJob given")
    load_kube(context)
    api = client.BatchV1beta1Api()
    return general_confirm(
        "CronJob", lambda: api.list_namespaced_cron_job(namespace=namespace),
        lambda i: i.metadata.name)
Пример #24
0
def wait_for_node_is_away(context, name):
    if name is None:
        raise SystemExit("invalid empty name for Node given")
    if context is None:
        raise SystemExit("invalid empty name context given")
    load_kube(context)
    print("check removal of", "Node", name)
    api = client.CoreV1Api()
    return general_away_check(None, "Node", name,
                              lambda: api.read_node_with_http_info(name))
Пример #25
0
def wait_for_cluster_role_is_up(context, name):
    if name is None:
        raise SystemExit("invalid empty name for ClusterRole given")
    if context is None:
        raise SystemExit("invalid empty name context given")
    load_kube(context)
    print("check availability of", "ClusterRole", name)
    api = client.RbacAuthorizationV1Api()
    return general_up_check(None, "ClusterRole", name,
                            lambda: api.read_cluster_role_with_http_info(name))
Пример #26
0
def confirm_ingress(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for Ingress given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for Ingress given")
    load_kube(context)
    api = client.ExtensionsV1beta1Api()
    return general_confirm(
        "Ingress", lambda: api.list_namespaced_ingress(namespace=namespace),
        lambda i: i.metadata.name)
Пример #27
0
def confirm_resource_quota(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for ResourceQuota given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for ResourceQuota given")
    load_kube(context)
    api = client.CoreV1Api()
    return general_confirm(
        "ResourceQuota", lambda: api.list_namespaced_resource_quota(namespace),
        lambda i: i.metadata.name)
Пример #28
0
def confirm_service(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for Service given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for Service given")
    load_kube(context)
    api = client.CoreV1Api()
    return general_confirm(
        "Service", lambda: api.list_namespaced_service(namespace=namespace),
        lambda i: i.metadata.name)
Пример #29
0
def wait_for_volume_attachment_is_up(context, name):
    if name is None:
        raise SystemExit("invalid empty name for VolumeAttachment given")
    if context is None:
        raise SystemExit("invalid empty name context given")
    load_kube(context)
    print("check availability of", "VolumeAttachment", name)
    api = client.StorageV1Api()
    return general_up_check(
        None, "VolumeAttachment", name,
        lambda: api.read_volume_attachment_with_http_info(name))
Пример #30
0
def confirm_network_policy(context, namespace):
    if context is None:
        raise SystemExit("invalid empty context for NetworkPolicy given")
    if namespace is None:
        raise SystemExit("invalid empty namespace for NetworkPolicy given")
    load_kube(context)
    api = client.ExtensionsV1beta1Api()
    return general_confirm(
        "NetworkPolicy",
        lambda: api.list_namespaced_network_policy(namespace=namespace),
        lambda i: i.metadata.name)