Exemple #1
0
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
Exemple #2
0
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