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
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