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:
nico 2020-03-06 11:58:01 +01:00
parent c8d88a537d
commit d827444889
Signed by: mightyBroccoli
GPG Key ID: EA7C31AAB1BDC1A2
4 changed files with 36 additions and 24 deletions

1
.gitignore vendored
View File

@ -114,3 +114,4 @@ venv
# config # config
config.json config.json
config.yml

View File

@ -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)

View File

@ -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
}

View File

@ -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