saas/kk_odoo_saas/utils_origin/pv_claim.py

56 lines
1.7 KiB
Python
Executable File

# -*- coding: utf-8 -*-
from kubernetes import client, config
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(f'Volume created. status={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': '1Gi', # TODO: setup in app
}
)
)
meta_data = client.V1ObjectMeta(
name=F'{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 = f'{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))