diff --git a/inventory_provider/tasks/config.py b/inventory_provider/tasks/config.py index 2d955ea63a4bd678b87014d3375f3459922638ca..70e3a90e38deeceeb0af2c4884f25c7ac8db5295 100644 --- a/inventory_provider/tasks/config.py +++ b/inventory_provider/tasks/config.py @@ -1,36 +1,42 @@ import logging import os - +from inventory_provider import config import redis.sentinel logger = logging.getLogger(__name__) -broker_hostname = os.getenv('BROKER_HOSTNAME') -assert broker_hostname is not None -broker_port = int(os.getenv('BROKER_PORT')) -broker_db_index = int(os.getenv('CELERY_DB_INDEX')) +assert os.path.isfile(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']), ( + 'config file %r not found' % + os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) -broker_scheme = os.getenv('BROKER_SCHEME', 'redis') -assert broker_scheme in ('redis', 'sentinel'), 'unsupported broker scheme' +with open(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) as f: + logging.info( + 'loading config from: %r' + % os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) + inventory_provider_config = config.load(f) -if broker_scheme == 'sentinel': - master_name = os.getenv('SENTINEL_MASTER_NAME') - assert master_name is not None +if 'sentinel' in inventory_provider_config: + params = inventory_provider_config['sentinel'] sentinel = redis.sentinel.Sentinel( - [(broker_hostname, broker_port)], - socket_timeout=0.1) - master = sentinel.discover_master(master_name) + [(params['hostname'], int(params['port']))], + socket_timeout=0.5) + master = sentinel.discover_master(params['name']) assert master - broker_hostname = master[0] - broker_port = master[1] + _broker_hostname = master[0] + _broker_port = master[1] +else: + params = inventory_provider_config['redis'] + _broker_hostname = params['hostname'] + _broker_port = int(params['port']) + +_broker_db_index = 1 # TODO: this should be a config param -if ':' in broker_hostname: +if ':' in _broker_hostname: # assume this means hostname is an ipv6 address - broker_hostname = '[%s]' % broker_hostname + _broker_hostname = '[%s]' % _broker_hostname -broker_url = 'redis://%s:%d/%d' % ( - broker_hostname, broker_port, broker_db_index) -result_backend = broker_url +broker_url = result_backend ='redis://%s:%d/%d' % ( + _broker_hostname, _broker_port, _broker_db_index) logger.debug('broker_url: %r' % broker_url)