# -*- coding: utf-8 -*- import logging from kubernetes import client from odoo.addons.smile_log.tools import SmileDBLogger _logger = logging.getLogger(__name__) def create_service(specs, metadata, namespace='default', self=False): _logger = SmileDBLogger(self._cr.dbname, self._name, self.id, self._uid) core_v1_api = client.CoreV1Api() body = client.V1Service( api_version='v1', kind='Service', metadata=metadata, spec=specs ) # Creation of the Deployment in specified namespace try: service = core_v1_api.create_namespaced_service(namespace=namespace, body=body) _logger.info(f'Service created. status={service.metadata.name}') except client.exceptions.ApiException as e: _logger.error(str(e)) def create_odoo_service(app_name, namespace, self=False): service_name = f'{app_name}-odoo-service' specs = client.V1ServiceSpec( selector={'app': app_name, 'tier': 'backend'}, ports=[ client.V1ServicePort( name='odoo-port', protocol='TCP', port=80, target_port=8069, ), client.V1ServicePort( name='longpolling', protocol='TCP', port=8072, target_port=8072, ) ], type='NodePort' ) metadata = client.V1ObjectMeta( name=service_name, labels={'app': app_name} ) create_service(metadata=metadata, specs=specs, namespace=namespace, self=self) def delete_odoo_service(app_name, namespace, self=False): service_name = f'{app_name}-odoo-service' core_v1_api = client.CoreV1Api() try: service = core_v1_api.delete_namespaced_service(name=service_name, namespace=namespace) _logger.info(service) except client.exceptions.ApiException as e: _logger.error(str(e))