Exemplo n.º 1
0
def get_auth_params_from_request(request):
    api_version = VERSIONS.get_active_version()
    cinder_url = ""
    auth_url = base.url_for(request, 'identity')
    try:
        # The cinder client assumes that the v2 endpoint type will be
        # 'volumev2'.
        if api_version['version'] == 2:
            try:
                cinder_url = base.url_for(request, 'volumev2')
            except exceptions.ServiceCatalogException:
                LOG.warning("Cinder v2 requested but no 'volumev2' service "
                            "type available in Keystone catalog.")
    except exceptions.ServiceCatalogException:
        LOG.debug('no volume service configured.')
        raise

    return(
        api_version,
        request.user.username,
        request.user.token.id,
        request.user.tenant_id,
        cinder_url,
        auth_url,
    )
Exemplo n.º 2
0
def novaclient(request):
    insecure = getattr(settings, "OPENSTACK_SSL_NO_VERIFY", False)
    LOG.debug(
        'novaclient connection created using token "%s" and url "%s"'
        % (request.user.token.id, url_for(request, "compute"))
    )
    # jt
    #    c = nova_client.Client(request.user.username,
    #                           request.user.token.id,
    #                           project_id=request.user.tenant_id,
    #                           auth_url=url_for(request, 'compute'),
    #                           insecure=insecure,
    #                           http_log_debug=settings.DEBUG)
    c = nova_client.Client(
        request.user.username,
        request.user.token.id,
        project_id=request.user.tenant_id,
        region_name=request.session.get("region_name", None),
        auth_url=url_for(request, "compute"),
        insecure=insecure,
        http_log_debug=settings.DEBUG,
    )
    c.client.auth_token = request.user.token.id
    c.client.management_url = url_for(request, "compute")
    return c
Exemplo n.º 3
0
def novaclient(request, region=None):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    LOG.debug('novaclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, base.url_for(request, 'compute', region=region)))
    if request.user.is_superuser:
        c = nova_client.Client(request.user.username,
                               request.user.token.id,
                               project_id=request.user.tenant_id,
                               auth_url=base.url_for(request, 'compute', region=region),
                               insecure=insecure,
                               cacert=cacert,
                               http_log_debug=settings.DEBUG)
    else:
        c = nova_client.Client(request.user.username,
                               request.user.token.id,
                               project_id=request.user.tenant_id,
                               auth_url=base.url_for(request, 'compute', region=region),
                               insecure=insecure,
                               timeout=3,
                               cacert=cacert,
                               http_log_debug=settings.DEBUG)
    c.client.auth_token = request.user.token.id
    c.client.management_url = base.url_for(request, 'compute', region=region)
    return c
Exemplo n.º 4
0
def cinderclient(request):
    api_version = VERSIONS.get_active_version()

    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    cinder_url = ""
    try:
        # The cinder client assumes that the v2 endpoint type will be
        # 'volumev2'. However it also allows 'volume' type as a
        # fallback if the requested version is 2 and there is no
        # 'volumev2' endpoint.
        if api_version['version'] == 2:
            try:
                cinder_url = base.url_for(request, 'volumev2')
            except exceptions.ServiceCatalogException:
                LOG.warning("Cinder v2 requested but no 'volumev2' service "
                            "type available in Keystone catalog. Falling back "
                            "to 'volume'.")
        if cinder_url == "":
            cinder_url = base.url_for(request, 'volume')
    except exceptions.ServiceCatalogException:
        LOG.debug('no volume service configured.')
        raise
    c = api_version['client'].Client(request.user.username,
                                     request.user.token.id,
                                     project_id=request.user.tenant_id,
                                     auth_url=cinder_url,
                                     insecure=insecure,
                                     cacert=cacert,
                                     http_log_debug=settings.DEBUG)
    c.client.auth_token = request.user.token.id
    c.client.management_url = cinder_url
    return c
Exemplo n.º 5
0
def crdclient(request):
    LOG.debug('crdfwclient connection created using token "%s" and url "%s"'
              % (request.user.token.id, base.url_for(request, 'crd')))
    LOG.debug('user_id=%(user)s, tenant_id=%(tenant)s' %
              {'user': request.user.id, 'tenant': request.user.tenant_id})
    c = fw_client.Client(token=request.user.token.id,
                              endpoint_url=base.url_for(request, 'crd'))
    return c
Exemplo n.º 6
0
def quantumclient(request):
    LOG.debug('quantumclient connection created using token "%s" and url "%s"'
              % (request.user.token.id, url_for(request, 'network')))
    LOG.debug('user_id=%(user)s, tenant_id=%(tenant)s' %
              {'user': request.user.id, 'tenant': request.user.tenant_id})
    c = quantum_client.Client(token=request.user.token.id,
                              endpoint_url=url_for(request, 'network'))
    return c
Exemplo n.º 7
0
def crdclient(request):
    LOG.debug(
        'crdcnsclient connection created using token "%s" and url "%s"'
        % (request.user.token.id, base.url_for(request, "crd"))
    )
    LOG.debug("user_id=%(user)s, tenant_id=%(tenant)s" % {"user": request.user.id, "tenant": request.user.tenant_id})
    c = cns_client.Client(token=request.user.token.id, endpoint_url=base.url_for(request, "crd"))
    return c
Exemplo n.º 8
0
def neutronclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    c = neutron_client.Client(token=request.user.token.id,
                              auth_url=base.url_for(request, 'identity'),
                              endpoint_url=base.url_for(request, 'network'),
                              insecure=insecure, ca_cert=cacert)
    return c
Exemplo n.º 9
0
def tackerclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    c = tacker_client.Client(
        token=request.user.token.id,
        auth_url=base.url_for(request, 'identity'),
        endpoint_url=base.url_for(request, 'nfv-orchestration'),
        insecure=insecure, ca_cert=cacert)
    return c
Exemplo n.º 10
0
def neutronclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    LOG.debug('neutronclient connection created using token "%s" and url "%s"'
              % (request.user.token.id, url_for(request, 'network')))
    LOG.debug('user_id=%(user)s, tenant_id=%(tenant)s' %
              {'user': request.user.id, 'tenant': request.user.tenant_id})
    c = neutron_client.Client(token=request.user.token.id,
                              endpoint_url=url_for(request, 'network'),
                              insecure=insecure)
    return c
Exemplo n.º 11
0
def tackerclient(request):
    insecure = getattr(settings, "OPENSTACK_SSL_NO_VERIFY", False)
    cacert = getattr(settings, "OPENSTACK_SSL_CACERT", None)
    c = tacker_client.Client(
        token=request.user.token.id,
        auth_url=base.url_for(request, "identity"),
        endpoint_url=base.url_for(request, "servicevm"),
        insecure=insecure,
        ca_cert=cacert,
    )
    return c
Exemplo n.º 12
0
def get_auth_params_from_request(request):
    """Extracts the properties from the request object needed by the novaclient
    call below. These will be used to memoize the calls to novaclient
    """
    return (
        request.user.username,
        request.user.token.id,
        request.user.tenant_id,
        base.url_for(request, 'compute'),
        base.url_for(request, 'identity')
    )
Exemplo n.º 13
0
    def create_nova_client_baremetal():
        insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
        nc = nova.nova_client.Client(request.user.username,
                                     request.user.token.id,
                                     project_id=request.user.tenant_id,
                                     auth_url=base.url_for(request, 'compute'),
                                     insecure=insecure,
                                     http_log_debug=settings.DEBUG)
        nc.client.auth_token = request.user.token.id
        nc.client.management_url = base.url_for(request, 'compute')

        return nc
Exemplo n.º 14
0
def neutronclient(request):
    insecure = getattr(settings, "OPENSTACK_SSL_NO_VERIFY", False)
    cacert = getattr(settings, "OPENSTACK_SSL_CACERT", None)
    LOG.debug(
        'neutronclient connection created using token "%s" and url "%s"'
        % (request.user.token.id, base.url_for(request, "network"))
    )
    LOG.debug("user_id=%(user)s, tenant_id=%(tenant)s" % {"user": request.user.id, "tenant": request.user.tenant_id})
    c = neutron_client.Client(
        token=request.user.token.id, endpoint_url=base.url_for(request, "network"), insecure=insecure, ca_cert=cacert
    )
    return c
Exemplo n.º 15
0
def neutronclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    LOG.debug('neutronclient connection created using token "%s" and url "%s"'
              % (request.user.token.id, base.url_for(request, 'network')))
    LOG.debug('user_id=%(user)s, tenant_id=%(tenant)s' %
              {'user': request.user.id, 'tenant': request.user.tenant_id})
    c = neutron_client.Client(token=request.user.token.id,
                              auth_url=base.url_for(request, 'identity'),
                              endpoint_url=base.url_for(request, 'network'),
                              insecure=insecure, ca_cert=cacert)
    return c
Exemplo n.º 16
0
def novaclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    LOG.debug('novaclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, url_for(request, 'compute')))
    c = nova_client.Client(request.user.username,
                           request.user.token.id,
                           project_id=request.user.tenant_id,
                           auth_url=url_for(request, 'compute'),
                           insecure=insecure)
    c.client.auth_token = request.user.token.id
    c.client.management_url = url_for(request, 'compute')
    return c
Exemplo n.º 17
0
def get_auth_params_from_request(request):
    """Extracts properties needed by novaclient call from the request object.

    These will be used to memoize the calls to novaclient.
    """
    return (
        request.user.username,
        request.user.token.id,
        request.user.tenant_id,
        request.user.token.project.get('domain_id'),
        base.url_for(request, 'compute'),
        base.url_for(request, 'identity')
    )
Exemplo n.º 18
0
def novaclient(request, region=None):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    c = nova_client.Client(request.user.username,
                           request.user.token.id,
                           project_id=request.user.tenant_id,
                           auth_url=base.url_for(request, 'compute'),
                           insecure=insecure,
                           cacert=cacert,
                           http_log_debug=settings.DEBUG)
    c.client.auth_token = request.user.token.id
    c.client.management_url = base.url_for(request, 'compute', region=region)
    return c
Exemplo n.º 19
0
    def test_url_for(self):
        url = api_base.url_for(self.request, 'image')
        self.assertEqual(url, 'http://public.glance.example.com:9292/v1')

        url = api_base.url_for(self.request, 'image', endpoint_type='adminURL')
        self.assertEqual(url, 'http://admin.glance.example.com:9292/v1')

        url = api_base.url_for(self.request, 'compute')
        self.assertEqual(url, 'http://public.nova.example.com:8774/v2')

        url = api_base.url_for(self.request, 'compute',
                               endpoint_type='adminURL')
        self.assertEqual(url, 'http://admin.nova.example.com:8774/v2')

        url = api_base.url_for(self.request, 'volume')
        self.assertEqual(url, 'http://public.nova.example.com:8776/v1')

        url = api_base.url_for(self.request, 'volume',
                               endpoint_type="internalURL")
        self.assertEqual(url, 'http://int.nova.example.com:8776/v1')

        url = api_base.url_for(self.request, 'volume',
                               endpoint_type='adminURL')
        self.assertEqual(url, 'http://admin.nova.example.com:8776/v1')

        self.assertNotIn('notAnApi', self.request.user.service_catalog,
                         'Select a new nonexistent service catalog key')
        with self.assertRaises(exceptions.ServiceCatalogException):
            url = api_base.url_for(self.request, 'notAnApi')
Exemplo n.º 20
0
def client(request):
    try:
        service_type = SAHARA_SERVICE
        sahara_url = base.url_for(request, service_type)
    except exceptions.ServiceCatalogException:
        # if no endpoint found, fallback to the old service_type
        service_type = SAHARA_SERVICE_FALLBACK
        sahara_url = base.url_for(request, service_type)

    return api_client.Client(VERSIONS.get_active_version()["version"],
                             sahara_url=sahara_url,
                             service_type=service_type,
                             project_id=request.user.project_id,
                             input_auth_token=request.user.token.id)
Exemplo n.º 21
0
    def handle(self, request, data):
        print "++++++++++++ ////////////// data = %s"%data
        uri = request.get_full_path()
        match = re.search('/project/vpns/([^/]+)/autoburst/', uri)
        vpn_id = match.group(1)
        print "++++++++++++ ////////////// RBA RBA vpn_id = %s"%vpn_id


        self.p_tk=request.user.token.id
        try:
                messages.success(request, _("AutoBurst is enabled on the remote VMs using this elastic wan..."))
                pgsplit=re.split(r'\.',str(data['p_gw']))
                self.p_site=pgsplit[0]+'.'+pgsplit[1]
                egsplit=re.split(r'\.',str(data['e_gw']))
                self.e_site=egsplit[0]+'.'+egsplit[1]

                # should use a modular client below once it supports complex jsons:
                #api.elasticnet.elasticnet_add_link(request, vpn_id, self.p_site, str(data['p_gw']) , str(data['p_nets']), self.p_tk, self.e_site, str(data['e_gw']) , str(data['e_nets']), self.e_tk, str(data['bw']))
                if str(request.user.username).startswith("acme"):
                  o = urlparse.urlparse(url_for(request, "ipsecvpn"))
                else:
                  o = urlparse.urlparse(url_for(request, "vpn"))


                conn0 = Connection("http://"+str(o.hostname)+":9797", "ericsson", "ericsson")
                uri0 = "/v1.0/tenants/acme/networks/"+str(vpn_id)+"/links.json"
                LOG.debug("http://"+str(o.hostname)+":9797")
                LOG.debug(uri0)
		bw=None
                header = {}
                header["Content-Type"]= "application/json"
                jsonbody='{"sites": [{"id":"'+str(self.p_site)+'", "gateway":"'+ str(data['p_gw']) +'", "network":"'+  str(data['p_nets']) +'", "token_id":"'+str(self.p_tk)+ '"}, {"id":"' \
                  + str(self.e_site)+'", "gateway":"'+ str(data['e_gw']) +'", "network":"'+  str(data['e_nets']) +'", "token_id":"'+str(self.e_tk)+ '"}], "qos":{"bandwidth":"' \
                  + str(bw)+'"}, "usecase":{"action":"autoburst", "vmuuid":"' \
		  + str(data['e_servers'])+'", "vmtenantid":"'+str(self.vmtenantid)+'", "vmsla":"'+str(data['sla'])+'"}}'
                print "+++ ewan result json body =%s"%jsonbody
                result=conn0.request_post(uri0, body=jsonbody, headers=header)
                print "+++ ewan result body =%s"%result["body"]
                body=json.loads(result["body"])
                print "+++ewan body=%s"%body
                linkid=str(body['link']['id'])
                print "+++ewan linkid=%s"%linkid

                messages.success(request, _("Link added successfully."))
                shortcuts.redirect("horizon:project:vpns:index")
                return True
        except Exception as e:
            msg = _('Failed to authorize Link from remote Enterprise Site crendentials : %s') % e.message
            LOG.info(msg)
            return shortcuts.redirect("horizon:project:vpns:index")
Exemplo n.º 22
0
    def handle(self, request, data):
        print "++++++++++++ ////////////// data = %s"%data
        uri = request.get_full_path()
        match = re.search('/project/ipsec/([^/]+)/preaddlink/', uri)
        vpn_id = match.group(1)
        print "++++++++++++ ////////////// RBA RBA vpn_id = %s"%vpn_id

	self.p_tk=request.user.token.id
	try:
        	messages.success(request, _("Link in process of establishement... Pushing low level network configuration..."))
		pgsplit=re.split(r'\.',str(data['p_gw']))
		self.p_site=pgsplit[0]+'.'+pgsplit[1]
        	egsplit=re.split(r'\.',str(data['e_gw']))
        	self.e_site=egsplit[0]+'.'+egsplit[1]

	        print "++++++ data to plugin : vpn=%s, psite=%s, pgw=%s, pnets=%s, ptk=%s, esite=%s, egw=%s, enets=%s, etk=%s, bw=%s"%(vpn_id, self.p_site, data['p_gw'] , data['p_nets'], 
		   self.p_tk, self.e_site, data['e_gw'] , data['e_nets'], self.e_tk, data['bw'])
		
		# should use a modular client below once it supports complex jsons: 
		#api.elasticnet.elasticnet_add_link(request, vpn_id, self.p_site, str(data['p_gw']) , str(data['p_nets']), self.p_tk, self.e_site, str(data['e_gw']) , str(data['e_nets']), self.e_tk, str(data['bw']))
		if str(request.user.username).startswith("acme"):
		  o = urlparse.urlparse(url_for(request, "ipsecvpn"))
		else:
		  o = urlparse.urlparse(url_for(request, "vpn"))

		conn0 = Connection("http://"+str(o.hostname)+":9797", "ericsson", "ericsson")
	        uri0 = "/v1.0/tenants/acme/networks/"+str(vpn_id)+"/links.json"
                LOG.debug("http://"+str(o.hostname)+":9797")
                LOG.debug(uri0)
                header = {}
                header["Content-Type"]= "application/json"
                jsonbody='{"sites": [{"id":"'+str(self.p_site)+'", "gateway":"'+ str(data['p_gw']) +'", "network":"'+  str(data['p_nets']) +'", "token_id":"'+str(self.p_tk)+ '"}, {"id":"' \
		  + str(self.e_site)+'", "gateway":"'+ str(data['e_gw']) +'", "network":"'+  str(data['e_nets']) +'", "token_id":"'+str(self.e_tk)+ '"}], "qos":{"bandwidth":"' \
		  + str(data['bw'])+'", "eir":"'+ str(data['eir'])+ '", "cbs":"'+ str(data['cbs'])+ '", "pbs":"'+ str(data['pbs'])+ '"}}'
                print "+++ ewan result json body =%s"%jsonbody
                result=conn0.request_post(uri0, body=jsonbody, headers=header)
                print "+++ ewan result body =%s"%result["body"]
                body=json.loads(result["body"])
                print "+++ewan body=%s"%body
                linkid=str(body['link']['id'])
                print "+++ewan linkid=%s"%linkid

                messages.success(request, _("Link added successfully."))
		shortcuts.redirect("horizon:project:ipsec:index")
		return True
        except Exception as e:
	    msg = _('Failed to authorize Link from remote Enterprise Site crendentials : %s') % e.message
            LOG.info(msg)
	    return shortcuts.redirect("horizon:project:ipsec:index")
Exemplo n.º 23
0
def _get_auth_params_from_request(request):
    """Extracts the properties from the request object needed by the monascaclient call below.

     These will be used to memoize the calls to monascaclient
    """

    LOG.debug('Extracting intel from request')
    return (
        request.user.user_domain_id,
        request.user.token.id,
        request.user.tenant_id,
        request.user.token.project.get('domain_id'),
        base.url_for(request, MONITORING_SERVICE),
        base.url_for(request, KEYSTONE_SERVICE)
    )
Exemplo n.º 24
0
def magnumclient(request):
    magnum_url = ""
    service_type = 'container-infra'
    try:
        magnum_url = base.url_for(request, service_type)
    except exceptions.ServiceCatalogException:
        LOG.debug('No Container Infrastructure Management service is '
                  'configured.')
        return None

    LOG.debug('magnumclient connection created using the token "%s" and url'
              '"%s"' % (request.user.token.id, magnum_url))

    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    openstack_api_versions = getattr(settings, 'OPENSTACK_API_VERSIONS', {})
    magnum_api_version = openstack_api_versions.get(service_type, 1.1)

    c = magnum_client.Client(username=request.user.username,
                             project_id=request.user.tenant_id,
                             input_auth_token=request.user.token.id,
                             magnum_url=magnum_url,
                             insecure=insecure,
                             api_version=magnum_api_version,
                             cacert=cacert)
    return c
Exemplo n.º 25
0
def _get_endpoint_url(request, endpoint_type, catalog=None):
    if getattr(request.user, "service_catalog", None):
        return base.url_for(request,
                            service_type='identity',
                            endpoint_type=endpoint_type)
    return request.session.get('region_endpoint',
                               getattr(settings, 'OPENSTACK_KEYSTONE_URL'))
Exemplo n.º 26
0
def vitrageclient(request, password=None):
    endpoint = base.url_for(request, 'identity')
    tokenId = request.user.token.id
    tenentName = request.user.tenant_name
    auth = Token(auth_url=endpoint, token=tokenId, project_name=tenentName)
    session = Session(auth=auth, timeout=600)
    return vitrage_client.Client('1', session)
Exemplo n.º 27
0
def baremetalclient(request):
    def create_remote_nova_client_baremetal():
        nc = nova.nova_client.Client(REMOTE_NOVA_BAREMETAL_CREDS['user'],
                        REMOTE_NOVA_BAREMETAL_CREDS['password'],
                        REMOTE_NOVA_BAREMETAL_CREDS['tenant'],
                        auth_url=REMOTE_NOVA_BAREMETAL_CREDS['auth_url'],
                        bypass_url=REMOTE_NOVA_BAREMETAL_CREDS['bypass_url'])
        return nc

    def create_nova_client_baremetal():
        insecure = getattr(django.conf.settings, 'OPENSTACK_SSL_NO_VERIFY',
                           False)
        nc = nova.nova_client.Client(
                request.user.username,
                request.user.token.id,
                project_id=request.user.tenant_id,
                auth_url=base.url_for(request, 'compute'),
                insecure=insecure,
                http_log_debug=django.conf.settings.DEBUG)
        nc.client.auth_token = request.user.token.id
        nc.client.management_url = base.url_for(request, 'compute')

        return nc

    if REMOTE_NOVA_BAREMETAL_CREDS:
        LOG.debug('remote nova baremetal client connection created')
        nc = create_remote_nova_client_baremetal()
    else:
        LOG.debug('nova baremetal client connection created using token "%s" '
                  'and url "%s"' %
                  (request.user.token.id, base.url_for(request, 'compute')))
        nc = create_nova_client_baremetal()

    return baremetal.BareMetalNodeManager(nc)
Exemplo n.º 28
0
def swift_get_container(request, container_name, with_data=True):
    if with_data:
        headers, data = swift_api(request).get_object(container_name, "")
    else:
        data = None
        headers = swift_api(request).head_container(container_name)
    timestamp = None
    is_public = False
    public_url = None
    try:
        is_public = GLOBAL_READ_ACL in headers.get('x-container-read', '')
        if is_public:
            swift_endpoint = base.url_for(request,
                                          'object-store',
                                          endpoint_type='publicURL')
            parameters = urlparse.quote(container_name.encode('utf8'))
            public_url = swift_endpoint + '/' + parameters
        ts_float = float(headers.get('x-timestamp'))
        timestamp = timeutils.iso8601_from_timestamp(ts_float)
    except Exception:
        pass
    container_info = {
        'name': container_name,
        'container_object_count': headers.get('x-container-object-count'),
        'container_bytes_used': headers.get('x-container-bytes-used'),
        'timestamp': timestamp,
        'data': data,
        'is_public': is_public,
        'public_url': public_url,
    }
    return Container(container_info)
Exemplo n.º 29
0
def manilaclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    manila_url = ""
    try:
        manila_url = base.url_for(request, MANILA_SERVICE_TYPE)
    except exceptions.ServiceCatalogException:
        LOG.debug('no share service configured.')
        return None
    LOG.debug('manilaclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, manila_url))
    c = manila_client.Client(
        MANILA_VERSION,
        username=request.user.username,
        input_auth_token=request.user.token.id,
        project_id=request.user.tenant_id,
        service_catalog_url=manila_url,
        insecure=insecure,
        cacert=cacert,
        http_log_debug=settings.DEBUG,
        user_agent=MANILA_UI_USER_AGENT_REPR,
    )
    c.client.auth_token = request.user.token.id
    c.client.management_url = manila_url
    return c
Exemplo n.º 30
0
def accountsclient(request):
    t = request.user.token.id
    url = url_for(request, 'account')
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    LOG.debug('accountsclient connection created using token "%s" and url "%s"'
            % (request.user.token.id, url))
    return accounts_client(url, token=t, insecure=insecure)
Exemplo n.º 31
0
def ceilometerclient(request):
    """Initialization of Ceilometer client."""

    endpoint = base.url_for(request, 'metering')
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    LOG.debug('ceilometerclient connection created using token "%s" '
              'and endpoint "%s"' % (request.user.token.id, endpoint))
    return ceilometer_client.Client('2', endpoint,
                                    token=(lambda: request.user.token.id),
                                    insecure=insecure,
                                    ca_file=cacert)
Exemplo n.º 32
0
def action_request(request, action, requestdict):
    endpoint = base.url_for(request, 'identity')
    token_id = request.user.token.id
    tenant_name = request.user.tenant_name
    project_domain_id = request.user.token.project.get('domain_id', 'Default')
    auth = Token(auth_url=endpoint, token=token_id,
                 project_name=tenant_name,
                 project_domain_id=project_domain_id)

    session = Session(auth=auth, timeout=600)
    result = action_manager.ActionManager.execute(session, str(action),requestdict)
    return result
Exemplo n.º 33
0
def get_microversion(request, features):
    for service_name in ('volume', 'volumev2', 'volumev3'):
        try:
            cinder_url = base.url_for(request, service_name)
            break
        except exceptions.ServiceCatalogException:
            continue
    else:
        return None
    min_ver, max_ver = cinder_client.get_server_version(cinder_url)
    return (microversions.get_microversion_for_features(
        'cinder', features, api_versions.APIVersion, min_ver, max_ver))
Exemplo n.º 34
0
def swift_api(request):
    endpoint = base.url_for(request, 'object-store')
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    LOG.debug('Swift connection created using token "%s" and url "%s"' %
              (request.user.token.id, endpoint))
    return swiftclient.client.Connection(None,
                                         request.user.username,
                                         None,
                                         preauthtoken=request.user.token.id,
                                         preauthurl=endpoint,
                                         cacert=cacert,
                                         auth_version="2.0")
Exemplo n.º 35
0
def swift_api(request):
    endpoint = base.url_for(request, 'object-store')
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    return swiftclient.client.Connection(None,
                                         request.user.username,
                                         None,
                                         preauthtoken=request.user.token.id,
                                         preauthurl=endpoint,
                                         cacert=cacert,
                                         insecure=insecure,
                                         auth_version="2.0")
Exemplo n.º 36
0
def glanceclient(request):
    o = urlparse.urlparse(base.url_for(request, 'image'))
    url = "://".join((o.scheme, o.netloc))
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    LOG.debug('glanceclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, url))
    return glance_client.Client('1',
                                url,
                                token=request.user.token.id,
                                insecure=insecure,
                                cacert=cacert)
Exemplo n.º 37
0
def get_node_info(request, uuid):
    auth_url=base.url_for(request, 'identity'),
    kwargs = {
        'os_auth_token': request.user.token.id,
        'ironic_url':'http://223.3.73.169:6385/',
        #'ironic_url':auth_url,
        # 'timeout': args.timeout,
        # 'ca_file': args.ca_file,
        # 'cert_file': args.cert_file,
        # 'key_file': args.key_file,
    }
    client = ironic_client.get_client(1,**kwargs)
    return client.node.get(uuid)
Exemplo n.º 38
0
def distilclient(request):
    try:
        try:
            from distilclient import client
        except Exception:
            from distil.client import client
        auth_url = base.url_for(request, service_type='identity')
        distil_url = base.url_for(request, service_type='rating')
        insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
        cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
        distil = client.Client(distil_url=distil_url,
                               os_auth_token=request.user.token.id,
                               os_tenant_id=request.user.tenant_id,
                               os_auth_url=auth_url,
                               os_region_name=request.user.services_region,
                               insecure=insecure,
                               os_cacert=cacert)
        distil.request = request
    except Exception as e:
        LOG.error(e)
        return
    return distil
Exemplo n.º 39
0
def _get_endpoint_url(request):
    # If the request is made by an anonymous user, this endpoint request fails.
    # Thus, we must hardcode this in Horizon.
    if getattr(request.user, "service_catalog", None):
        url = base.url_for(request, service_type='registration')
    else:
        url = getattr(settings, 'OPENSTACK_REGISTRATION_URL')

    # Ensure ends in slash
    if not url.endswith('/'):
        url += '/'

    return url
Exemplo n.º 40
0
def ironicclient(request):
    """Returns a client connected to the Ironic backend.
    """
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', DEFAULT_INSECURE)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', DEFAULT_CACERT)
    ironic_url = base.url_for(request, IRONIC_CLIENT_CLASS_NAME)

    return client.Client(1,
                         ironic_url,
                         project_id=request.user.project_id,
                         token=request.user.token.id,
                         insecure=insecure,
                         cacert=cacert)
Exemplo n.º 41
0
def novaclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    LOG.debug('novaclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, url_for(request, 'compute')))
    # jt
    #    c = nova_client.Client(request.user.username,
    #                           request.user.token.id,
    #                           project_id=request.user.tenant_id,
    #                           auth_url=url_for(request, 'compute'),
    #                           insecure=insecure,
    #                           http_log_debug=settings.DEBUG)
    c = nova_client.Client(request.user.username,
                           request.user.token.id,
                           project_id=request.user.tenant_id,
                           region_name=request.session.get(
                               'region_name', None),
                           auth_url=url_for(request, 'compute'),
                           insecure=insecure,
                           http_log_debug=settings.DEBUG)
    c.client.auth_token = request.user.token.id
    c.client.management_url = url_for(request, 'compute')
    return c
def get_auth_params_from_request(request):
    """Extracts properties needed by zunclient call from the request object.

    These will be used to memoize the calls to zunclient.
    """
    endpoint_override = ""
    try:
        endpoint_override = base.url_for(request, 'container')
    except exceptions.ServiceCatalogException:
        LOG.debug('No Container Management service is configured.')
        return None
    return (request.user.username, request.user.token.id,
            request.user.tenant_id, endpoint_override)
Exemplo n.º 43
0
def _get_endpoint_url(request, endpoint_type, catalog=None):
    if getattr(request.user, "service_catalog", None):
        url = base.url_for(request,
                           service_type='identity',
                           endpoint_type=endpoint_type)
    else:
        auth_url = getattr(settings, 'OPENSTACK_KEYSTONE_URL')
        url = request.session.get('region_endpoint', auth_url)

    # TODO(gabriel): When the Service Catalog no longer contains API versions
    # in the endpoints this can be removed.
    url = auth_utils.fix_auth_url_version(url)

    return url
Exemplo n.º 44
0
def troveclient(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    trove_url = base.url_for(request, 'database')
    c = client.Client(request.user.username,
                      request.user.token.id,
                      project_id=request.user.project_id,
                      auth_url=trove_url,
                      insecure=insecure,
                      cacert=cacert,
                      http_log_debug=settings.DEBUG)
    c.client.auth_token = request.user.token.id
    c.client.management_url = trove_url
    return c
Exemplo n.º 45
0
def zaqarclient(request):
    zaqar_url = ""
    service_type = 'messaging'
    try:
        zaqar_url = base.url_for(request, service_type)
    except exceptions.ServiceCatalogException:
        LOG.debug('No messaging service is configured.')
        return None

    LOG.debug('zaqarclient connection created using the token "%s" and url'
              '"%s"' % (request.user.token.id, zaqar_url))

    opts = {
        'os_auth_token': request.user.token.id,
        'os_auth_url': base.url_for(request, 'identity'),
        'os_project_id': request.user.tenant_id,
        'os_service_type': service_type
    }

    auth_opts = {'backend': 'keystone', 'options': opts}

    conf = {'auth_opts': auth_opts}

    return zaqar_client.Client(url=zaqar_url, version=2, conf=conf)
Exemplo n.º 46
0
def magnumclient(request):
    magnum_url = ""
    try:
        magnum_url = base.url_for(request, 'container')
    except exceptions.ServiceCatalogException:
        LOG.debug('No Containers service is configured.')
        return None

    LOG.debug('magnumclient connection created using the token "%s" and url'
              '"%s"' % (request.user.token.id, magnum_url))
    c = magnum_client.Client(username=request.user.username,
                             project_id=request.user.tenant_id,
                             input_auth_token=request.user.token.id,
                             magnum_url=magnum_url)
    return c
Exemplo n.º 47
0
def get_auth_params_from_request(request):
    api_version = VERSIONS.get_active_version()
    cinder_url = ""
    auth_url = base.url_for(request, 'identity')
    try:
        # The cinder client assumes that the v2 endpoint type will be
        # 'volumev2'.
        if api_version['version'] == 2:
            try:
                cinder_url = base.url_for(request, 'volumev2')
            except exceptions.ServiceCatalogException:
                LOG.warning("Cinder v2 requested but no 'volumev2' service "
                            "type available in Keystone catalog.")
    except exceptions.ServiceCatalogException:
        LOG.debug('no volume service configured.')
        raise

    return(
        request.user.username,
        request.user.token.id,
        request.user.tenant_id,
        cinder_url,
        auth_url,
    )
Exemplo n.º 48
0
def barbicanclient(request):
    region = request.user.services_region
    endpoint = base.url_for(request, 'key-manager')
    auth_url, _ = auth_utils.fix_auth_url_version_prefix(
        settings.OPENSTACK_KEYSTONE_URL)
    auth = token_endpoint.Token(auth_url, request.user.token.id)

    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    # If 'insecure' is True, 'verify' is False in all cases; otherwise
    # pass the cacert path if it is present, or True if no cacert.
    verify = not insecure and (cacert or True)
    return barbican_client.Client(session=session.Session(auth=auth,
                                                          verify=verify),
                                  endpoint=endpoint,
                                  region_name=region)
Exemplo n.º 49
0
def _get_endpoint_url(request, endpoint_type, catalog=None):
    if getattr(request.user, "service_catalog", None):
        url = base.url_for(request,
                           service_type='identity',
                           endpoint_type=endpoint_type)
    else:
        auth_url = getattr(settings, 'OPENSTACK_KEYSTONE_URL')
        url = request.session.get('region_endpoint', auth_url)

    # TODO(gabriel): When the Service Catalog no longer contains API versions
    # in the endpoints this can be removed.
    bits = urlparse.urlparse(url)
    root = "://".join((bits.scheme, bits.netloc))
    url = "%s/v%s" % (root, VERSIONS.active)

    return url
Exemplo n.º 50
0
def glanceclient(request, version=None):
    api_version = VERSIONS.get_active_version()

    url = base.url_for(request, 'image')
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)

    # TODO(jpichon): Temporarily keep both till we update the API calls
    # to stop hardcoding a version in this file. Once that's done we
    # can get rid of the deprecated 'version' parameter.
    if version is None:
        return api_version['client'].Client(url, token=request.user.token.id,
                                            insecure=insecure, cacert=cacert)
    else:
        return glance_client.Client(version, url, token=request.user.token.id,
                                    insecure=insecure, cacert=cacert)
Exemplo n.º 51
0
def share_update(request,
                 share_id,
                 name,
                 description,
                 is_public='',
                 lease_days=None):
    share_data = {'display_name': name, 'display_description': description}
    if not isinstance(is_public, six.string_types):
        is_public = six.text_type(is_public)
    if is_public and is_public.lower() != 'none':
        share_data['is_public'] = is_public
    controllername1 = str(base.url_for(request, 'sharev2')).split(':')
    controllername2 = str(controllername1[1]).split('/')
    controllername = controllername2[2]
    lease.update_share_lease(controllername, share_id.id, lease_days)
    return manilaclient(request).shares.update(share_id, **share_data)
Exemplo n.º 52
0
def nova_client_client(request):
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    endpoint_type = getattr(settings, 'OPENSTACK_ENDPOINT_TYPE', 'publicURL')
    identity_url = base.url_for(request, 'identity')
    loader = loading.get_plugin_loader('token')
    auth = loader.load_from_options(auth_url=identity_url,
                                    token=request.user.token.id,
                                    tenant_id=request.user.project_id)
    sess = session.Session(auth=auth)
    nova = nova_client.Client(NOVA_VERSION,
                              session=sess,
                              insecure=insecure,
                              cacert=cacert,
                              endpoint_type=endpoint_type,
                              http_log_debug=settings.DEBUG)
    return nova
Exemplo n.º 53
0
def get_proxy_list(request):
    try:
        resp = requests.get(base.url_for(request, 'proxy') + '/mapping')
        if resp.status_code == 400 and resp.text == 'No such project':
            proxies = []
        elif not resp:
            raise Exception("Got status " + str(resp.status_code))
        else:
            proxies = [
                Proxy(route['domain'], route['backends'])
                for route in resp.json()['routes']
            ]
    except Exception:
        proxies = []
        exceptions.handle(request,
                          _("Unable to retrieve proxies: " + resp.text))
    return proxies
Exemplo n.º 54
0
    def _add_sites(self,
                   request,
                   data,
                   vpn=None,
                   tenant_name=None,
                   no_redirect=False):
        if vpn:
            vpn_id = vpn['vpn']['id']
            vpn_name = self.clean(data['net_name'])
        else:
            vpn_id = self.context.get('vpn_id')
            vpn_name = self.context.get('vpn_name')
        try:

            o = urlparse.urlparse(url_for(request, "compute"))
            hostname = str(o.hostname)
            lsite = api.elasticnet.elasticnet_add_site(
                request, vpn_id, vpn_name + '.Provider_AZ1', hostname, '',
                str(request.user.username), str(request.user.token.id),
                str(request.user.tenant_name))
            messages.success(
                request,
                _("Local Provider Site %s added successfully.") % vpn_name +
                '.Provider_AZ1')

            data['token'] = ''
            if data['site_name']:
                rsite = api.elasticnet.elasticnet_add_site(
                    request, vpn_id,
                    vpn_name + '.' + self.clean(data['site_name']),
                    data['keystone'], data['token'], data['user'],
                    data['password'], data['tenant'])
                messages.success(
                    request,
                    _("Enterprise Site %s added successfully.") % vpn_name +
                    '.' + self.clean(data['site_name']))
            return rsite
        except Exception as e:
            if no_redirect:
                redirect = None
            else:
                redirect = self.get_failure_url()
            exceptions.handle(request,
                              "Failed to add site because %s" % e,
                              redirect=redirect)
            return False
Exemplo n.º 55
0
def server_update(request, instance_id, name, lease_days):

    controllername1 = str(base.url_for(request, 'compute')).split(':')
    controllername2 = str(controllername1[1]).split('/')
    controllername = controllername2[2]

    db = pymysql.connect(host=controllername, port=3306, user='******', passwd='BSoniC', db='expo_nova')
    cursor = db.cursor()
    lease_days_pass = str(lease_days)
    viname = str(name)
    generatetime1 = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')
    generatetime = str(generatetime1)
    cursor.execute("update lease_active_vms set created_on='"+generatetime+"', leasedays='"+lease_days_pass+"' where hostname='"+viname+"'")
    db.commit()
    db.close()

    return novaclient(request).servers.update(instance_id, name=name)
Exemplo n.º 56
0
def tuskarclient(request, password=None):
    api_version = "2"
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    ca_file = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
    endpoint = base.url_for(request, TUSKAR_SERVICE)

    LOG.debug('tuskarclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, endpoint))

    client = tuskar_client.get_client(api_version,
                                      tuskar_url=endpoint,
                                      insecure=insecure,
                                      ca_file=ca_file,
                                      username=request.user.username,
                                      password=password,
                                      os_auth_token=request.user.token.id)
    return client
Exemplo n.º 57
0
def designateclient(request):
    designate_url = ""
    try:
        designate_url = url_for(request, 'dns')
    except exceptions.ServiceCatalogException:
        LOG.debug('no dns service configured.')
        return None

    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)

    return Client(endpoint=designate_url,
                  token=request.user.token.id,
                  username=request.user.username,
                  tenant_id=request.user.project_id,
                  insecure=insecure,
                  cacert=cacert)
Exemplo n.º 58
0
def get_microversion(request, features):
    for service_name in ('volume', 'volumev2', 'volumev3'):
        try:
            cinder_url = base.url_for(request, service_name)
            break
        except exceptions.ServiceCatalogException:
            continue
    else:
        return None

    insecure = settings.OPENSTACK_SSL_NO_VERIFY
    cacert = settings.OPENSTACK_SSL_CACERT

    min_ver, max_ver = cinder_client.get_server_version(cinder_url,
                                                        insecure, cacert)
    return microversions.get_microversion_for_features(
        'cinder', features, api_versions.APIVersion, min_ver, max_ver)
Exemplo n.º 59
0
def heatclient(request):
    #TODO: unhardcode api_version
    api_version = "1"
    insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
    endpoint = url_for(request, 'orchestration')
    LOG.debug('heatclient connection created using token "%s" and url "%s"' %
              (request.user.token.id, endpoint))
    kwargs = {
            'token': request.user.token.id,
            'insecure': insecure,
            #'timeout': args.timeout,
            #'ca_file': args.ca_file,
            #'cert_file': args.cert_file,
            #'key_file': args.key_file,
        }
    client = heat_client.Client(api_version, endpoint, **kwargs)
    client.format_parameters = format_parameters
    return client
Exemplo n.º 60
0
def _get_engine_kwargs(request, connection_str):
    from openstack_dashboard.api import base
    engines_kwargs = {
        # NOTE(tsufiev): actually Horizon doesn't use ceilometer backend (too
        # slow for UI), but since osprofiler still supports it (due to API
        # deprecation cycle limitations), Horizon also should support this
        # option
        'ceilometer': lambda req: {
            'endpoint': base.url_for(req, 'metering'),
            'insecure': settings.OPENSTACK_SSL_NO_VERIFY,
            'cacert': settings.OPENSTACK_SSL_CACERT,
            'token': (lambda: req.user.token.id),
            'ceilometer_api_version': '2'
        }
    }

    engine = urlparse(connection_str).scheme
    return engines_kwargs.get(engine, lambda req: {})(request)