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

70 lines
1.9 KiB
Python
Executable File

from kubernetes import client, config
import random
from urllib.parse import urlparse
import logging
_logger = logging.getLogger(__name__)
from odoo.addons.smile_log.tools import SmileDBLogger
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("Service created. status='%s'" % service.metadata.name)
except client.exceptions.ApiException as e:
_logger.error(str(e))
def create_odoo_service(app_name, namespace, self=False):
service_name = 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 = 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))