示例#1
0
    async def create_or_update_custom_object(self,
                                             name,
                                             group,
                                             version,
                                             plural,
                                             body,
                                             reraise=False):
        try:
            create = await self.create_custom_object(name=name,
                                                     group=group,
                                                     version=version,
                                                     plural=plural,
                                                     body=body)
            return create, True

        except ApiException as e_create:
            try:
                update = await self.update_custom_object(name=name,
                                                         group=group,
                                                         version=version,
                                                         plural=plural,
                                                         body=body)
                return update, False
            except ApiException as e:
                if reraise:
                    raise PolyaxonK8SError(
                        "Connection error: creation %s - update %s" %
                        (e_create, e)) from e
                else:
                    logger.error("K8S error: {}".format(e))
示例#2
0
 def get_volume(self, name, reraise=False):
     try:
         return self.k8s_api.read_persistent_volume(name=name)
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return None
示例#3
0
 def get_version(self, reraise=False):
     try:
         return self.k8s_version_api.get_code().to_dict()
     except ApiException as e:
         logger.error("K8S error: {}".format(e))
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
示例#4
0
 async def get_pod(self, name, reraise=False):
     try:
         return await self.k8s_api.read_namespaced_pod(
             name=name, namespace=self.namespace)
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return None
示例#5
0
 def get_ingress(self, name, reraise=False):
     try:
         return self.networking_v1_beta1_api.read_namespaced_ingress(
             name=name, namespace=self.namespace)
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return None
示例#6
0
 def get_deployment(self, name, reraise=False):
     try:
         return self.k8s_apps_api.read_namespaced_deployment(
             name=name, namespace=self.namespace)
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return None
示例#7
0
 def update_node_labels(self, node, labels, reraise=False):
     body = {"metadata": {"labels": labels}, "namespace": self.namespace}
     try:
         return self.k8s_api.patch_node(name=node, body=body)
     except ApiException as e:
         logger.error("K8S error: {}".format(e))
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
示例#8
0
 def list_nodes(self, reraise=False):
     try:
         res = self.k8s_api.list_node()
         return [p for p in res.items]
     except ApiException as e:
         logger.error("K8S error: {}".format(e))
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return []
示例#9
0
 async def _list_namespace_resource(self, resource_api, reraise=False, **kwargs):
     try:
         res = await resource_api(namespace=self.namespace, **kwargs)
         return [p for p in res.items]
     except ApiException as e:
         logger.error("K8S error: {}".format(e))
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return []
示例#10
0
 def create_or_update_ingress(self, name, body, reraise=False):
     try:
         return self.create_ingress(name=name, body=body), True
     except ApiException:
         try:
             return self.update_ingress(name=name, body=body), False
         except ApiException as e:
             if reraise:
                 raise PolyaxonK8SError("Connection error: %s" % e) from e
             else:
                 logger.error("K8S error: {}".format(e))
示例#11
0
 def delete_volume(self, name, reraise=False):
     try:
         self.k8s_api.delete_persistent_volume(
             name=name,
             body=client.V1DeleteOptions(
                 api_version=constants.K8S_API_VERSION_V1),
         )
         logger.debug("Volume `{}` Deleted".format(name))
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         else:
             logger.debug("Volume `{}` was not found".format(name))
示例#12
0
 async def get_custom_object(self, name, group, version, plural, reraise=False):
     try:
         return await self.k8s_custom_object_api.get_namespaced_custom_object(
             name=name,
             group=group,
             version=version,
             plural=plural,
             namespace=self.namespace,
         )
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return None
示例#13
0
 def _list_namespace_resource(self, resource_api, reraise=False, **kwargs):
     try:
         res = resource_api(namespace=self.namespace, **kwargs)
         if isinstance(res, dict):
             items = res["items"]
         else:
             items = res.items
         return [p for p in items]
     except ApiException as e:
         logger.error("K8S error: {}".format(e))
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         return []
示例#14
0
 def delete_job(self, name, reraise=False):
     try:
         self.k8s_batch_api.delete_namespaced_job(
             name=name,
             namespace=self.namespace,
             body=client.V1DeleteOptions(
                 api_version=constants.K8S_API_VERSION_V1),
         )
         logger.debug("Pod `{}` deleted".format(name))
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         else:
             logger.debug("Pod `{}` was not found".format(name))
示例#15
0
 def delete_ingress(self, name, reraise=False):
     try:
         self.networking_v1_beta1_api.delete_namespaced_ingress(
             name=name,
             namespace=self.namespace,
             body=client.V1DeleteOptions(
                 api_version=constants.K8S_API_VERSION_NETWORKING_V1_BETA1,
                 propagation_policy="Foreground",
             ),
         )
         logger.debug("Ingress `{}` deleted".format(name))
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         else:
             logger.debug("Ingress `{}` was not found".format(name))
示例#16
0
 def delete_deployment(self, name, reraise=False):
     try:
         self.k8s_apps_api.delete_namespaced_deployment(
             name=name,
             namespace=self.namespace,
             body=client.V1DeleteOptions(
                 api_version=constants.K8S_API_VERSION_APPS_V1,
                 propagation_policy="Foreground",
             ),
         )
         logger.debug("Deployment `{}` deleted".format(name))
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         else:
             logger.debug("Deployment `{}` was not found".format(name))
示例#17
0
 async def delete_custom_object(self, name, group, version, plural, reraise=False):
     try:
         await self.k8s_custom_object_api.delete_namespaced_custom_object(
             name=name,
             group=group,
             version=version,
             plural=plural,
             namespace=self.namespace,
             body=client.V1DeleteOptions(),
         )
         logger.debug("Custom object `{}` deleted".format(name))
     except ApiException as e:
         if reraise:
             raise PolyaxonK8SError("Connection error: %s" % e) from e
         else:
             logger.debug("Custom object `{}` was not found".format(name))