70 lines
1.9 KiB
Python
Executable File
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))
|
|
|
|
|
|
|