61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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))
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |