def set_db_backends(args, options): # pylint: disable-msg=W0613 """ POST /set_db_backends """ if 'xivo' not in args: raise HttpReqError(415, "missing option 'xivo'") else: xivodburi = list(urisup.uri_help_split(args['xivo'])) if xivodburi[0] is None or xivodburi[0].lower() not in WIZARD_XIVO_DB_ENGINES: raise HttpReqError(415, "invalid option 'xivo'") else: xivodburi[0] = xivodburi[0].lower() if WIZARD_XIVO_DB_ENGINES[xivodburi[0]]: xivodbparams = WIZARD_XIVO_DB_ENGINES[xivodburi[0]]['params'] else: xivodbparams = {} if xivodburi[3]: xivodbparams.update(dict(xivodburi[3])) if xivodbparams: xivodburi[3] = zip(xivodbparams.keys(), xivodbparams.values()) else: xivodburi[3] = None args['xivo'] = urisup.uri_help_unsplit(xivodburi) if 'ql' not in args: args['ql'] = args['xivo'] if 'ipbxengine' not in args: raise HttpReqError(415, "missing option 'ipbxengine'") elif args['ipbxengine'] not in WIZARD_IPBX_ENGINES: raise HttpReqError(415, "invalid ipbxengine: %r" % args['ipbxengine']) ipbxdbinfo = WIZARD_IPBX_ENGINES[args['ipbxengine']]['database'] if 'ipbx' not in args: raise HttpReqError(415, "missing option 'ipbx'") else: ipbxdburi = list(urisup.uri_help_split(args['ipbx'])) if ipbxdburi[0] is None or ipbxdburi[0].lower() not in ipbxdbinfo: raise HttpReqError(415, "invalid option 'ipbx'") else: ipbxdburi[0] = ipbxdburi[0].lower() if ipbxdbinfo[ipbxdburi[0]]['params']: ipbxdbparams = ipbxdbinfo[ipbxdburi[0]]['params'] else: ipbxdbparams = {} if ipbxdburi[3]: ipbxdbparams.update(dict(ipbxdburi[3])) if ipbxdbparams: ipbxdburi[3] = zip(ipbxdbparams.keys(), ipbxdbparams.values()) else: ipbxdburi[3] = None args['ipbx'] = urisup.uri_help_unsplit(ipbxdburi) if not WIZARDLOCK.acquire_read(Wdc['lock_timeout']): raise HttpReqError(503, "unable to take WIZARDLOCK for reading after %s seconds" % Wdc['lock_timeout']) try: connect = xivo_helpers.db_connect(args['xivo']) if not connect: raise HttpReqError(415, "unable to connect to 'xivo' database") connect = xivo_helpers.db_connect(args['ipbx']) if not connect: raise HttpReqError(415, "unable to connect to 'ipbx' database") merge_config_file(Wdc['agid_config_tpl_file'], Wdc['agid_config_custom_tpl_file'], Wdc['agid_config_file'], {'db': {'db_uri': args['ipbx']}}) merge_config_file(Wdc['provisioning_config_tpl_file'], Wdc['provisioning_config_custom_tpl_file'], Wdc['provisioning_config_file'], {'general': {'database_uri': args['ipbx']}}) merge_config_file(Wdc['webinterface_xivo_tpl_file'], Wdc['webinterface_xivo_custom_tpl_file'], Wdc['webinterface_xivo_file'], {'general': {'datastorage': '"%s"' % args['xivo']}}) merge_config_file(Wdc['webinterface_cti_tpl_file'], Wdc['webinterface_cti_custom_tpl_file'], Wdc['webinterface_cti_file'], {'general': {'datastorage': '"%s"' % args['xivo']}, 'queuelogger': {'datastorage': '"%s"' % args['ql']}, }) merge_config_file("%s.%s" % (Wdc['webinterface_ipbx_tpl_file'], args['ipbxengine']), "%s.%s" % (Wdc['webinterface_ipbx_custom_tpl_file'], args['ipbxengine']), Wdc['webinterface_ipbx_file'], {'general': {'datastorage': '"%s"' % args['ipbx']}}) if args['ipbxengine'] == 'asterisk': asterisk_configuration(ipbxdburi, ipbxdbinfo[ipbxdburi[0]], ipbxdbparams) finally: WIZARDLOCK.release()
return fallback def void(self, *args): print " * WARNING: callback not found for", name.upper(), "key" return True return void if __name__ == '__main__': print " * INFO: starting common.conf migration" if not os.path.exists(COMMON_CONFFILE): print " * FATAL: common.conf file not found. skip common.conf migration..."; sys.exit(0) #WARNING: we must remove trailing double quotes db_uri = ConfigDict.ReadSingleKey(XIVO_CONFFILE, 'general', 'datastorage')[1:-1] cursor = db_connect(db_uri).cursor() if cursor is None: print " * FATAL: cannot connect to xivo database. skip common.conf migration..."; sys.exit(0) cc = CommonConf(cursor) f = open(COMMON_CONFFILE) for l in f.xreadlines(): if l.startswith('#') or '=' not in l: continue try: (key, value) = l[:-1].strip().split('=', 1) # print "%s = %s" % (key, value) getattr(cc, key.lower())(value.replace('"', '').strip()) except Exception, e: