35 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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
 |