示例#1
0
    def do_request(self, uri, method, body=None, query=None, headers=None):
        '''Wrapper for api_lib.do_request that includes auth logic.
        '''
        query = query or dict()
        headers = headers or dict()

        # Username will be None if user has opted to skip authorization.
        if self.username is not None:
            self.set_header_token(headers)
        try:
            return api_lib.do_request(
                uri,
                method,
                body=body,
                query=query,
                headers=headers,
                disable_ssl_certificate_validation=self.
                disable_ssl_certificate_validation)  # noqa
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            LOG.info("Got HTTPUnauthorized error, try logging in again")
            self.set_header_token(headers, force=True)
            return api_lib.do_request(
                uri,
                method,
                body=body,
                query=query,
                headers=headers,
                disable_ssl_certificate_validation=self.
                disable_ssl_certificate_validation)  # noqa
    def do_request(self, uri, method, body=None, query=None, headers=None):
        """ Wrapper for api_lib.do_request that includes auth logic.
        """
        query = query or dict()
        headers = headers or dict()

        self.set_header_token(headers)
        try:
            return api_lib.do_request(uri, method, body=body, query=query, headers=headers)
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            self.set_header_token(headers, force=True)
            return api_lib.do_request(uri, method, body=body, headers=headers)
示例#3
0
    def login(self):
        '''Login a user

        Make sure only one thread tries to login.  The other threads would
        block until the first thread succeeds in setting the global _token
        variable.
        '''
        global _sem
        global _token

        if _sem.acquire(blocking=False):
            try:
                auth = base64.b64encode(self.username + ':' + self.password)
                headers = {'Authorization': 'Basic ' + auth}

                if self.project_id is not None:
                    headers['X-Auth-Project'] = self.project_id

                LOG.info("Logging in to MidoNet API server")
                resp, _body = api_lib.do_request(self.uri, 'POST', body={},
                                                 headers=headers)
                set_cookie = resp['set-cookie']
                session, sep, exp = set_cookie.partition(";")
                session_key, sep, _token = session.partition("=")
            finally:
                _sem.release()
        else:
            LOG.debug("Waiting for token to get reset")
            # Wait for another thread to set the token and release
            _sem.acquire(blocking=True)
            _sem.release()
示例#4
0
    def login(self):
        '''Login a user

        Make sure only one thread tries to login.  The other threads would
        block until the first thread succeeds in setting the global _token
        variable.
        '''
        global _sem
        global _token

        if _sem.acquire(blocking=False):
            try:
                auth = base64.encodestring(self.username + ':' + self.password)
                headers = {'Authorization': 'Basic ' + auth}

                if self.project_id is not None:
                    headers['X-Auth-Project'] = self.project_id

                LOG.info("Logging in to MidoNet API server")
                resp, _body = api_lib.do_request(self.uri,
                                                 'POST',
                                                 body={},
                                                 headers=headers)
                set_cookie = resp['set-cookie']
                session, sep, exp = set_cookie.partition(";")
                session_key, sep, _token = session.partition("=")
            finally:
                _sem.release()
        else:
            LOG.debug("Waiting for token to get reset")
            # Wait for another thread to set the token and release
            _sem.acquire(blocking=True)
            _sem.release()
    def login(self):
        """Login a user

        Make sure only one thread tries to login.  The other threads would
        block until the first thread succeeds in setting the global _token
        variable.
        """
        global _sem
        global _token

        if _sem.acquire(blocking=False):
            try:
                auth = base64.encodestring(self.username + ":" + self.password)
                headers = {"Authorization": "Basic " + auth}

                if self.project_id is not None:
                    headers["X-Auth-Project"] = self.project_id

                resp, _body = api_lib.do_request(self.uri, "POST", body={}, headers=headers)
                set_cookie = resp["set-cookie"]
                session, sep, exp = set_cookie.partition(";")
                session_key, sep, _token = session.partition("=")
            finally:
                _sem.release()
        else:
            LOG.debug("Waiting for token to get reset")
            # Wait for another thread to set the token and release
            _sem.acquire(blocking=True)
            _sem.release()
    def do_request(self, uri, method, body=None, query=None, headers=None):
        ''' Wrapper for api_lib.do_request that includes auth logic.
        '''
        query = query or dict()
        headers = headers or dict()

        # Username will be None if user has opted to skip authorization.
        if self.username is not None:
            self.set_header_token(headers)
        try:
            return api_lib.do_request(uri, method, body=body,
                                      query=query, headers=headers)
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            self.set_header_token(headers, force=True)
            return api_lib.do_request(uri, method, body=body, query=query,
                                      headers=headers)
    def do_request(self, uri, method, body=None, query=None, headers=None):
        ''' Wrapper for api_lib.do_request that includes auth logic.
        '''
        query = query or dict()
        headers = headers or dict()

        self.set_header_token(headers)
        try:
            return api_lib.do_request(uri,
                                      method,
                                      body=body,
                                      query=query,
                                      headers=headers)
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            self.set_header_token(headers, force=True)
            return api_lib.do_request(uri, method, body=body, headers=headers)
示例#8
0
    def do_request(self, uri, method, body=None, query=None, headers=None):
        '''Wrapper for api_lib.do_request that includes auth logic.
        '''
        query = query or dict()
        headers = headers or dict()

        # Username will be None if user has opted to skip authorization.
        if self.username is not None:
            self.set_header_token(headers)
        try:
            return api_lib.do_request(
                uri, method, body=body, query=query, headers=headers,
                disable_ssl_certificate_validation=self.disable_ssl_certificate_validation)  # noqa
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            LOG.info("Got HTTPUnauthorized error, try logging in again")
            self.set_header_token(headers, force=True)
            return api_lib.do_request(
                uri, method, body=body, query=query, headers=headers,
                disable_ssl_certificate_validation=self.disable_ssl_certificate_validation)  # noqa
示例#9
0
    def do_request(self, uri, method, body=None, query=None, headers=None):
        ''' Wrapper for api_lib.do_request that includes auth logic.
        '''
        query = query or dict()
        headers = headers or dict()

        # Username will be None if user has opted to skip authorization.
        if self.username is not None:
            self.set_header_token(headers)
        try:
            return api_lib.do_request(uri,
                                      method,
                                      body=body,
                                      query=query,
                                      headers=headers)
        except exc.HTTPUnauthorized:
            # Try one more time after logging in
            self.set_header_token(headers, force=True)
            return api_lib.do_request(uri,
                                      method,
                                      body=body,
                                      query=query,
                                      headers=headers)