odoo-saas-kubernetes/kk_odoo_saas/utils/pv_claim.py

61 lines
1.7 KiB
Python
Executable File

from kubernetes import client, config
import logging
from odoo.addons.smile_log.tools import SmileDBLogger
def create_pv_claim(meta_data, specs, namespace="default", self=False):
_logger = SmileDBLogger(self._cr.dbname, self._name, self.id, self._uid)
k8s_apps_v1 = client.CoreV1Api()
dep = client.V1PersistentVolumeClaim(
api_version='v1',
kind='PersistentVolumeClaim',
metadata=meta_data,
spec=specs
)
try:
resp = k8s_apps_v1.create_namespaced_persistent_volume_claim(
body=dep, namespace=namespace)
_logger.info("Volume created. status='%s'" % resp.metadata.name)
except client.exceptions.ApiException as e:
_logger.error(msg=str(e))
def create_odoo_pv_claim(app_name, namespace="default", self=False):
specs = client.V1PersistentVolumeClaimSpec(
access_modes=[
'ReadWriteOnce'
],
storage_class_name="gp2",
resources=client.V1ResourceRequirements(
requests={
'storage': '8Gi'
}
)
)
meta_data = client.V1ObjectMeta(
name=app_name + "-odoo-web-pv-claim",
labels={"app": app_name}
)
create_pv_claim(meta_data=meta_data, specs=specs, namespace=namespace, self=self)
def delete_odoo_pv_claim(app_name, namespace="default", self=False):
_logger = SmileDBLogger(self._cr.dbname, self._name, self.id, self._uid)
claim_name = app_name + "-odoo-web-pv-claim"
core_v1_api = client.CoreV1Api()
try:
pv = core_v1_api.delete_namespaced_persistent_volume_claim(name=claim_name, namespace=namespace)
_logger.info(str(pv))
except client.exceptions.ApiException as e:
_logger.error(str(e))