def test_lease_delete(self): lease_resource = self._create_resource('lease', self.rsrc_defn, self.stack) self.client.lease.delete.return_value = None scheduler.TaskRunner(lease_resource.create)() self.client.lease.get.side_effect = [ 'lease_obj', client_exception.BlazarClientException(code=404) ] scheduler.TaskRunner(lease_resource.delete)() self.assertEqual((lease_resource.DELETE, lease_resource.COMPLETE), lease_resource.state) self.assertEqual(1, self.client.lease.delete.call_count)
def request(self, url, method, **kwargs): resp, body = super(SessionClient, self).request(url, method, raise_exc=False, **kwargs) if resp.status_code >= 400: if body is not None: error_message = body.get('error_message', body) else: error_message = resp.text msg = _("ERROR: {0}").format(error_message) raise exception.BlazarClientException(msg, code=resp.status_code) return resp, body
def _find_resource_id_by_name(client, resource, name): resource_manager = getattr(client, resource) resources = resource_manager.list() named_resources = [] for resource in resources: if resource['name'] == name: named_resources.append(resource['id']) if len(named_resources) > 1: raise exception.NoUniqueMatch(message="There are more than one " "appropriate resources for the " "name '%s' and type '%s'" % (name, resource)) elif named_resources: return named_resources[0] else: message = "Unable to find resource with name '%s'" % name raise exception.BlazarClientException(message=message, status_code=404)
def request(self, url, method, **kwargs): """Base request method. Adds specific headers and URL prefix to the request. :param url: Resource URL. :type url: str :param method: Method to be called (GET, POST, PUT, DELETE). :type method: str :returns: Response and body. :rtype: tuple """ kwargs.setdefault('headers', kwargs.get('headers', {})) kwargs['headers']['User-Agent'] = self.user_agent kwargs['headers']['Accept'] = 'application/json' kwargs['headers']['x-auth-token'] = self.auth_token if 'body' in kwargs: kwargs['headers']['Content-Type'] = 'application/json' kwargs['data'] = jsonutils.dump_as_bytes(kwargs['body']) del kwargs['body'] resp = requests.request(method, self.blazar_url + url, **kwargs) try: body = jsonutils.loads(resp.text) except ValueError: body = None if resp.status_code >= 400: if body is not None: error_message = body.get('error_message', body) else: error_message = resp.text body = _("ERROR: {0}").format(error_message) raise exception.BlazarClientException(body, code=resp.status_code) return resp, body