Ejemplo n.º 1
0
def authenticate(aDict):
    """Function docstring for authenticate TBD

 Args:
  - node (required)
  - username (required)
  - project_id (required)
  - password (required)
  - project_name (required)

 Output:
 """
    from sdcp.core.logger import log
    ret = {}
    controller = Device(SC['node'][aDict['node']], None)
    res = controller.auth({
        'project': aDict['project_name'],
        'username': aDict['username'],
        'password': aDict['password']
    })
    ret = {'authenticated': res['auth']}
    if res['auth'] == 'OK':
        with DB() as db:
            ret.update({
                'project_name': aDict['project_name'],
                'project_id': aDict['project_id'],
                'username': aDict['username'],
                'token': controller.get_token(),
                'expires': controller.get_cookie_expire()
            })
            db.do(
                "INSERT INTO openstack_tokens(token,expires,project_id,username,node) VALUES('%s','%s','%s','%s','%s')"
                % (controller.get_token(), controller.get_token_expire(),
                   aDict['project_id'], aDict['username'],
                   SC['node'][aDict['node']]))
            token_id = db.get_last_id()
            for service in ['heat', 'nova', 'neutron', 'glance']:
                svc = controller.get_service(service, 'public')
                if len(svc['path']) > 0:
                    svc['path'] = svc['path'] + '/'
                db.do(
                    "INSERT INTO openstack_services(id,service,service_port,service_url,service_id) VALUES('%s','%s','%s','%s','%s')"
                    % (token_id, service, svc['port'], svc['path'], svc['id']))
            db.do(
                "INSERT INTO openstack_services(id,service,service_port,service_url,service_id) VALUES('%s','%s','%s','%s','%s')"
                % (token_id, "contrail", 8082, '', ''))
        log("openstack_authenticate - successful login and catalog init for %s@%s"
            % (aDict['username'], aDict['node']))
    else:
        log("openstack_authenticate - error logging in for  %s@%s" %
            (aDict['username'], ctrl))
    return ret
Ejemplo n.º 2
0
def application(aDict):
    """Function docstring for application. Delivers the information for SDCP login to redirect to the openstack App.

 Args:
  - node (required)
  - appformix (optional)
  - name (optional)
  - token (optional)
 Output:
 """
    from datetime import datetime, timedelta
    ret = {
        'title': "%s 2 Cloud" % (aDict.get('name', 'iaas')),
        'choices': [],
        'message':
        "Welcome to the '%s' Cloud Portal" % (aDict.get('name', 'iaas')),
        'portal': 'openstack'
    }
    try:
        if aDict.get('token'):
            controller = Device(SC['node'][aDict['node']], aDict.get('token'))
        else:
            controller = Device(SC['node'][aDict['node']], None)
            res = controller.auth({
                'project': SC['openstack']['project'],
                'username': SC['openstack']['username'],
                'password': SC['openstack']['password']
            })
        auth = controller.call("5000", "v3/projects")
        if auth['code'] == 200:
            projects = []
            for project in auth['data']['projects']:
                projects.append({
                    'name':
                    project['name'],
                    'id':
                    "%s_%s" % (project['id'], project['name'])
                })
            ret['choices'] = [{
                'display': 'Customer',
                'id': 'project',
                'data': projects
            }]
    except Exception as e:
        ret['exception'] = str(e)
    ret['parameters'] = [{
        'display': 'Username',
        'id': 'username',
        'data': 'text'
    }, {
        'display': 'Password',
        'id': 'password',
        'data': 'password'
    }]
    cookie = {
        'name': aDict.get('name', 'iaas'),
        'node': aDict['node'],
        'portal': 'openstack'
    }
    if aDict.get('appformix'):
        cookie['appformix'] = aDict.get('appformix')
    ret['cookie'] = ",".join(["%s=%s" % (k, v) for k, v in cookie.iteritems()])
    ret['expires'] = (datetime.utcnow() +
                      timedelta(hours=1)).strftime('%a, %d %b %Y %H:%M:%S GMT')
    return ret