def add_backend(request, renderer='json'): try: backends = request.environ['beaker.session']['backends'] except: backends = request.registry.settings['backends'] params = request.json_body provider = params.get('provider', '0')['provider'] apikey = params.get('apikey', '') apisecret = params.get('apisecret', '') apiurl = params.get('apiurl', '') tenant_name = params.get('tenant_name', '') if apisecret == 'getsecretfromdb': for backend_id in backends: backend = backends[backend_id] if backend.get('apikey', None) == apikey: apisecret = backend.get('apisecret', None) region = '' if not provider.__class__ is int and ':' in provider: region = provider.split(':')[1] provider = provider.split(':')[0] if not provider or not apikey or not apisecret: return Response('Invalid backend data', 400) backend_id = generate_backend_id(provider, region, apikey) if backend_id in backends: return Response('Backend exists', 409) backend = {'title': params.get('provider', '0')['title'], 'provider': provider, 'apikey': apikey, 'apisecret': apisecret, 'apiurl': apiurl, 'tenant_name': tenant_name, 'region': region, 'poll_interval': request.registry.settings['default_poll_interval'], 'enabled': 1, } request.registry.settings['backends'][backend_id] = backend save_settings(request) ret = {'id' : backend_id, 'apikey' : backend['apikey'], 'apiurl' : backend['apiurl'], 'tenant_name' : backend['tenant_name'], 'title' : backend['title'], 'provider' : backend['provider'], 'poll_interval': backend['poll_interval'], 'region' : backend['region'], 'status' : 'off', 'enabled' : 1, } return ret
def add_backend(request, renderer="json"): params = request.json_body provider = params.get("provider", "0")["provider"] apikey = params.get("apikey", "") apisecret = params.get("apisecret", "") region = "" if not provider.__class__ is int and ":" in provider: region = provider.split(":")[1] provider = provider.split(":")[0] if not provider or not apikey or not apisecret: return Response("Invalid backend data", 400) backend_id = generate_backend_id(provider, region, apikey) backend = { "title": params.get("provider", "0")["title"], "provider": provider, "apikey": apikey, "apisecret": apisecret, "region": region, "poll_interval": request.registry.settings["default_poll_interval"], "enabled": 1, } request.registry.settings["backends"][backend_id] = backend save_settings(request) ret = { "id": backend_id, "apikey": backend["apikey"], "title": backend["title"], "provider": backend["provider"], "poll_interval": backend["poll_interval"], "region": backend["region"], "status": "off", "enabled": 1, } return ret