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

35 lines
1.5 KiB
Python
Executable File

from kubernetes import config, client
import yaml
from kubernetes.client.rest import ApiException
from odoo.exceptions import UserError
import logging
_logger = logging.getLogger(__name__)
def read_logs(app_name, self=False, config_file=None, since_seconds=None, previous=False, tail_lines=None):
# Configs can be set in Configuration class directly or using helper
# utility. If no argument provided, the config will be loaded from
# default location.
try:
data2 = yaml.safe_load(config_file)
config.load_kube_config_from_dict(data2)
except config.config_exception.ConfigException as e:
raise UserError("Unable to Connect K8s Cluster")
try:
api_instance = client.CoreV1Api()
odoo_pods = api_instance.list_namespaced_pod(namespace='default',
label_selector='app={0},tier={1}'.format(str(self.app_name),
'backend'))
for pod in odoo_pods.items:
if pod.metadata and pod.metadata.name and (self.app_name + '-odoo-deployment' in pod.metadata.name):
odoo_logs = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace='default',
tail_lines=tail_lines, since_seconds=since_seconds)
return odoo_logs
return False
except ApiException as e:
_logger.error(e)
return False