Пример #1
0
 def create_pvc(self, body, service_api: CoreV1Api = None):
     pvc = load_param_yaml(
         PVC_TEMPLATE,
         name=body.pvc_name,
         namespace=body.namespace,
         #accessModes="ReadWriteMany" if body.mode == "RWX" else "ReadWriteOnce",
         accessModes=body.mode,
         storage=body.disk,
         storageClassName=body.storage_class)
     try:
         service_api.create_namespaced_persistent_volume_claim(
             body.namespace, body=pvc)
     except Exception as e:
         logger.error(e)
         return -1
     return 2
Пример #2
0
def _create_pvc(api: CoreV1Api, name: str, namespace: str,
                pv: V1PersistentVolume) -> V1PersistentVolumeClaim:
    logger.info(f"creating pvc: {name}")
    try:
        return api.create_namespaced_persistent_volume_claim(
            namespace=namespace,
            body=V1PersistentVolumeClaim(
                api_version="v1",
                kind="PersistentVolumeClaim",
                metadata=V1ObjectMeta(name=name, namespace=namespace),
                spec=V1PersistentVolumeClaimSpec(
                    access_modes=["ReadWriteOnce"],
                    resources=V1ResourceRequirements(
                        requests=pv.spec.capacity),
                    storage_class_name=pv.spec.storage_class_name,
                    volume_name=pv.metadata.name,
                ),
            ),
        )
    except ApiException as e:
        if e.reason == CONFLICT and json.loads(
                e.body)["reason"] == ALREADY_EXISTS:
            logger.info(f"using existing pvc: {name}")
            return api.read_namespaced_persistent_volume_claim(name, namespace)
        raise