medved/bin/config-linter.py

47 lines
1.3 KiB
Python
Raw Normal View History

2018-04-02 22:41:10 +00:00
import json, yaml
import sys, os
import importlib
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from Config import namedtupledict
from lib import Logger, Loader
logger = Logger('Linter')
logger.info('Reading config')
with open('data/config.yaml', 'r') as config:
data = yaml.load(config)
cnf = json.loads(json.dumps(data), object_hook=lambda d: namedtupledict('X', d.keys())(*d.values()))
logger.info("Config: \n%s", json.dumps(data, indent=2))
logger.info('CORE')
services_check = ["datamgr", "listener", "executor"]
services = []
logger.info("Checking services: %s", ", ".join(services))
for s, sv in cnf.core:
services.append(s)
print(services)
for s in services_check:
if not s in services:
logger.error("Service %s is not defined!", s)
else:
logger.info("Service %s is defined, continuing", s)
for k, v in cnf.core[s]:
if k == 'package':
try:
importlib.import_module(v)
except Exception as e:
logger.error("Unable to load package %s!\n%s", v, e)
else:
logger.info("Package %s was imported successfully", v)
elif k == 'service':
try:
Loader(cnf.core[s]['package']).get(v)
except Exception as e:
logger.error("Unable to load package %s!\n%s", v, e)
else:
logger.info("Service %s was imported successfully", v)