yaml config
+ implement yaml config file parsing * update default config file * update global config file from .conf to .yml ( debatable ) Signed-off-by: nico <nico@magicbroccoli.de>
This commit is contained in:
		
							parent
							
								
									c8d88a537d
								
							
						
					
					
						commit
						d827444889
					
				| 
						 | 
					@ -114,3 +114,4 @@ venv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# config
 | 
					# config
 | 
				
			||||||
config.json
 | 
					config.json
 | 
				
			||||||
 | 
					config.yml
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								config.py
								
								
								
								
							
							
						
						
									
										15
									
								
								config.py
								
								
								
								
							| 
						 | 
					@ -1,20 +1,23 @@
 | 
				
			||||||
#!/usr/bin/env python3
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
# -*- coding: utf-8 -*-
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
import json
 | 
					 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
from os import environ
 | 
					from os import environ
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from ruamel.yaml import YAML
 | 
				
			||||||
 | 
					from ruamel.yaml.parser import ParserError
 | 
				
			||||||
 | 
					from ruamel.yaml.scanner import ScannerError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Config:
 | 
					class Config:
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        # class variables
 | 
					        # class variables
 | 
				
			||||||
        self.content = None
 | 
					        self.content = None
 | 
				
			||||||
        self.conf_file = Path('/etc/ejabberd-metrics.conf')
 | 
					        self.conf_file = Path('/etc/ejabberd-metrics.yml')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # dev config overwrite
 | 
					        # dev config overwrite
 | 
				
			||||||
        if environ.get('ejabberd_metrics_dev'):
 | 
					        if environ.get('ejabberd_metrics_dev'):
 | 
				
			||||||
            self.conf_file = Path('config.json')
 | 
					            self.conf_file = Path('config.yml')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # read config file
 | 
					        # read config file
 | 
				
			||||||
        self._read()
 | 
					        self._read()
 | 
				
			||||||
| 
						 | 
					@ -23,13 +26,13 @@ class Config:
 | 
				
			||||||
        """init the config object with this method"""
 | 
					        """init the config object with this method"""
 | 
				
			||||||
        self._check()
 | 
					        self._check()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # open and load json content from config
 | 
					        # open file as an iostream
 | 
				
			||||||
        with open(self.conf_file, 'r', encoding='utf-8') as f:
 | 
					        with open(self.conf_file, 'r', encoding='utf-8') as f:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self.content = json.load(f)
 | 
					                self.content = YAML(typ='safe').load(f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # catch json decoding errors
 | 
					            # catch json decoding errors
 | 
				
			||||||
            except json.JSONDecodeError as err:
 | 
					            except (ParserError, ScannerError) as err:
 | 
				
			||||||
                print(err, file=sys.stderr)
 | 
					                print(err, file=sys.stderr)
 | 
				
			||||||
                exit(1)
 | 
					                exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,18 +0,0 @@
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	"url": "http://[::1]:5280/api",
 | 
					 | 
				
			||||||
	"login": {
 | 
					 | 
				
			||||||
		"user": "metric-user",
 | 
					 | 
				
			||||||
		"server": "chat.sum7.eu",
 | 
					 | 
				
			||||||
		"password": "password"
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	"api": "rest",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"--comment": "influxdb",
 | 
					 | 
				
			||||||
	"influxdb_host": "localhost",
 | 
					 | 
				
			||||||
	"influxdb_port": 8086,
 | 
					 | 
				
			||||||
	"influxdb_db": "ejabberd",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"--comment": "prometheus",
 | 
					 | 
				
			||||||
	"prometheus_port": 8080,
 | 
					 | 
				
			||||||
	"prometheus_refresh": 10
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					# endpoint url
 | 
				
			||||||
 | 
					url: "http://[::1]:5280/api"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# user credentials to the endpoint url
 | 
				
			||||||
 | 
					login:
 | 
				
			||||||
 | 
					  user: "metric-user"
 | 
				
			||||||
 | 
					  server: "chat.sum7.eu"
 | 
				
			||||||
 | 
					  password: "password"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# muc subdomain
 | 
				
			||||||
 | 
					# default : "conference"
 | 
				
			||||||
 | 
					muc_host: "chat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# api configuration
 | 
				
			||||||
 | 
					# default : rpc
 | 
				
			||||||
 | 
					api: "rest"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# influx db configuration
 | 
				
			||||||
 | 
					influxdb_host: "localhost"
 | 
				
			||||||
 | 
					influxdb_port: 8086
 | 
				
			||||||
 | 
					influxdb_db: "example"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# prometheus configuration
 | 
				
			||||||
 | 
					prometheus_port: 8080
 | 
				
			||||||
 | 
					prometheus_refresh: 10
 | 
				
			||||||
		Loading…
	
		Reference in New Issue