Do not append .json to sending URL
Both SessionClient and HTTPClient set content-type as application/json, so there is no need to append ".json" as a format specifier. This commit also cleans up 'format' attribute in various client class and unit tests. Also hide --request-format opiton from the command line help as it is just ignored. We need to keep the option to keep backward-compatibility. Closes-Bug: #1678488 Change-Id: I5fc69b9dfed9b7b6350a4aad06417a914a80d090
This commit is contained in:
parent
6b429b3278
commit
a905f755b9
neutronclient
neutron/v2_0
tests/unit
v2_0
@ -336,7 +336,7 @@ class NeutronCommand(command.Command):
|
|||||||
parser = super(NeutronCommand, self).get_parser(prog_name)
|
parser = super(NeutronCommand, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--request-format',
|
'--request-format',
|
||||||
help=_('DEPRECATED! Only JSON request format is supported.'),
|
help=argparse.SUPPRESS,
|
||||||
default='json',
|
default='json',
|
||||||
choices=['json', ], )
|
choices=['json', ], )
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
@ -124,7 +124,6 @@ class RetrieveLoadBalancerStats(neutronV20.ShowCommand):
|
|||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
neutron_client = self.get_client()
|
neutron_client = self.get_client()
|
||||||
neutron_client.format = parsed_args.request_format
|
|
||||||
loadbalancer_id = neutronV20.find_resourceid_by_name_or_id(
|
loadbalancer_id = neutronV20.find_resourceid_by_name_or_id(
|
||||||
self.get_client(), 'loadbalancer', parsed_args.id)
|
self.get_client(), 'loadbalancer', parsed_args.id)
|
||||||
params = {}
|
params = {}
|
||||||
|
@ -82,7 +82,6 @@ class CreateRBACPolicy(neutronV20.CreateCommand):
|
|||||||
|
|
||||||
def args2body(self, parsed_args):
|
def args2body(self, parsed_args):
|
||||||
neutron_client = self.get_client()
|
neutron_client = self.get_client()
|
||||||
neutron_client.format = parsed_args.request_format
|
|
||||||
_object_id, _object_type = get_rbac_obj_params(neutron_client,
|
_object_id, _object_type = get_rbac_obj_params(neutron_client,
|
||||||
parsed_args.type,
|
parsed_args.type,
|
||||||
parsed_args.name)
|
parsed_args.name)
|
||||||
|
@ -173,7 +173,7 @@ class CLITestV20FirewallPolicyJSON(test_cli20.CLITestV20Base):
|
|||||||
path = getattr(self.client, resource + "_insert_path")
|
path = getattr(self.client, resource + "_insert_path")
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
test_cli20.MyUrlComparator(
|
test_cli20.MyUrlComparator(
|
||||||
test_cli20.end_url(path % myid, format=self.format),
|
test_cli20.end_url(path % myid),
|
||||||
self.client),
|
self.client),
|
||||||
'PUT', body=test_cli20.MyComparator(body, self.client),
|
'PUT', body=test_cli20.MyComparator(body, self.client),
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
@ -202,7 +202,7 @@ class CLITestV20FirewallPolicyJSON(test_cli20.CLITestV20Base):
|
|||||||
path = getattr(self.client, resource + "_remove_path")
|
path = getattr(self.client, resource + "_remove_path")
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
test_cli20.MyUrlComparator(
|
test_cli20.MyUrlComparator(
|
||||||
test_cli20.end_url(path % myid, format=self.format),
|
test_cli20.end_url(path % myid),
|
||||||
self.client),
|
self.client),
|
||||||
'PUT', body=test_cli20.MyComparator(body, self.client),
|
'PUT', body=test_cli20.MyComparator(body, self.client),
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
|
@ -37,7 +37,6 @@ from neutronclient import shell
|
|||||||
from neutronclient.v2_0 import client
|
from neutronclient.v2_0 import client
|
||||||
|
|
||||||
API_VERSION = "2.0"
|
API_VERSION = "2.0"
|
||||||
FORMAT = 'json'
|
|
||||||
TOKEN = 'testtoken'
|
TOKEN = 'testtoken'
|
||||||
ENDURL = 'localurl'
|
ENDURL = 'localurl'
|
||||||
REQUEST_ID = 'test_request_id'
|
REQUEST_ID = 'test_request_id'
|
||||||
@ -89,8 +88,8 @@ class MyApp(object):
|
|||||||
self.stdout = _stdout
|
self.stdout = _stdout
|
||||||
|
|
||||||
|
|
||||||
def end_url(path, query=None, format=FORMAT):
|
def end_url(path, query=None):
|
||||||
_url_str = ENDURL + "/v" + API_VERSION + path + "." + format
|
_url_str = ENDURL + "/v" + API_VERSION + path
|
||||||
return query and _url_str + "?" + query or _url_str
|
return query and _url_str + "?" + query or _url_str
|
||||||
|
|
||||||
|
|
||||||
@ -113,16 +112,6 @@ class MyUrlComparator(mox.Comparator):
|
|||||||
set(lhs_qs) == set(rhs_qs))
|
set(lhs_qs) == set(rhs_qs))
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.client and self.client.format != FORMAT:
|
|
||||||
lhs_parts = self.lhs.split("?", 1)
|
|
||||||
if len(lhs_parts) == 2:
|
|
||||||
lhs = ("%s.%s?%s" % (lhs_parts[0][:-4],
|
|
||||||
self.client.format,
|
|
||||||
lhs_parts[1]))
|
|
||||||
else:
|
|
||||||
lhs = ("%s.%s" % (lhs_parts[0][:-4],
|
|
||||||
self.client.format))
|
|
||||||
return lhs
|
|
||||||
return self.lhs
|
return self.lhs
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
@ -183,7 +172,6 @@ class MyComparator(mox.Comparator):
|
|||||||
|
|
||||||
class CLITestV20Base(base.BaseTestCase):
|
class CLITestV20Base(base.BaseTestCase):
|
||||||
|
|
||||||
format = 'json'
|
|
||||||
test_id = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
test_id = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
||||||
id_field = 'id'
|
id_field = 'id'
|
||||||
|
|
||||||
@ -212,7 +200,6 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
new=self._find_resourceid).start()
|
new=self._find_resourceid).start()
|
||||||
|
|
||||||
self.client = client.Client(token=TOKEN, endpoint_url=self.endurl)
|
self.client = client.Client(token=TOKEN, endpoint_url=self.endurl)
|
||||||
self.client.format = self.format
|
|
||||||
|
|
||||||
def register_non_admin_status_resource(self, resource_name):
|
def register_non_admin_status_resource(self, resource_name):
|
||||||
# TODO(amotoki):
|
# TODO(amotoki):
|
||||||
@ -269,7 +256,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
|
|
||||||
if not no_api_call:
|
if not no_api_call:
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, format=self.format), 'POST',
|
end_url(path), 'POST',
|
||||||
body=mox_body,
|
body=mox_body,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
||||||
@ -302,7 +289,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
if parent_id:
|
if parent_id:
|
||||||
path = path % parent_id
|
path = path % parent_id
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, format=self.format), 'GET',
|
end_url(path), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
||||||
@ -396,7 +383,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
args.append('-f')
|
args.append('-f')
|
||||||
args.append(output_format)
|
args.append(output_format)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(path, query, format=self.format),
|
MyUrlComparator(end_url(path, query),
|
||||||
self.client),
|
self.client),
|
||||||
'GET',
|
'GET',
|
||||||
body=None,
|
body=None,
|
||||||
@ -435,12 +422,12 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
resstr1 = self.client.serialize(reses1)
|
resstr1 = self.client.serialize(reses1)
|
||||||
resstr2 = self.client.serialize(reses2)
|
resstr2 = self.client.serialize(reses2)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, query, format=self.format), 'GET',
|
end_url(path, query), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr1))
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr1))
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(path, fake_query, format=self.format),
|
MyUrlComparator(end_url(path, fake_query),
|
||||||
self.client), 'GET',
|
self.client), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
@ -469,8 +456,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
mox_body = MyComparator(body, self.client)
|
mox_body = MyComparator(body, self.client)
|
||||||
|
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(path, format=self.format),
|
MyUrlComparator(end_url(path), self.client),
|
||||||
self.client),
|
|
||||||
'PUT',
|
'PUT',
|
||||||
body=mox_body,
|
body=mox_body,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
@ -502,7 +488,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
else:
|
else:
|
||||||
path = path % myid
|
path = path % myid
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, query, format=self.format), 'GET',
|
end_url(path, query), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200), resstr))
|
||||||
@ -523,7 +509,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
else:
|
else:
|
||||||
path = path % (myid)
|
path = path % (myid)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, format=self.format), 'DELETE',
|
end_url(path), 'DELETE',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(
|
||||||
@ -563,7 +549,7 @@ class CLITestV20Base(base.BaseTestCase):
|
|||||||
path = getattr(self.client, cmd_resource + "_path")
|
path = getattr(self.client, cmd_resource + "_path")
|
||||||
path_action = '%s/%s' % (myid, action)
|
path_action = '%s/%s' % (myid, action)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path % path_action, format=self.format), 'PUT',
|
end_url(path % path_action), 'PUT',
|
||||||
body=MyComparator(body, self.client),
|
body=MyComparator(body, self.client),
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(204), retval))
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(204), retval))
|
||||||
@ -670,7 +656,7 @@ class ClientV2TestJson(CLITestV20Base):
|
|||||||
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
||||||
|
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(expected_action, query=expect_query, format=self.format),
|
end_url(expected_action, query=expect_query),
|
||||||
'PUT', body=expect_body,
|
'PUT', body=expect_body,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token',
|
'X-Auth-Token',
|
||||||
@ -694,8 +680,7 @@ class ClientV2TestJson(CLITestV20Base):
|
|||||||
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
||||||
|
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(
|
MyUrlComparator(end_url('/test', query=expect_query), self.client),
|
||||||
'/test', query=expect_query, format=self.format), self.client),
|
|
||||||
'PUT', body='',
|
'PUT', body='',
|
||||||
headers=mox.ContainsKeyValue('X-Auth-Token', 'token')
|
headers=mox.ContainsKeyValue('X-Auth-Token', 'token')
|
||||||
).AndReturn((MyResp(400, headers=resp_headers, reason='An error'), ''))
|
).AndReturn((MyResp(400, headers=resp_headers, reason='An error'), ''))
|
||||||
@ -727,9 +712,7 @@ class ClientV2TestJson(CLITestV20Base):
|
|||||||
expect_body = self.client.serialize(body)
|
expect_body = self.client.serialize(body)
|
||||||
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(
|
MyUrlComparator(end_url('/test', query=expect_query), self.client),
|
||||||
'/test', query=expect_query,
|
|
||||||
format=self.format), self.client),
|
|
||||||
'PUT', body=expect_body,
|
'PUT', body=expect_body,
|
||||||
headers=mox.ContainsKeyValue('X-Auth-Token', 'token')
|
headers=mox.ContainsKeyValue('X-Auth-Token', 'token')
|
||||||
).AndReturn((MyResp(200, resp_headers), expect_body))
|
).AndReturn((MyResp(200, resp_headers), expect_body))
|
||||||
@ -759,13 +742,13 @@ class ClientV2TestJson(CLITestV20Base):
|
|||||||
resstr2 = self.client.serialize(reses2)
|
resstr2 = self.client.serialize(reses2)
|
||||||
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, "", format=self.format), 'GET',
|
end_url(path, ""), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
||||||
resstr1))
|
resstr1))
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(path, fake_query, format=self.format),
|
MyUrlComparator(end_url(path, fake_query),
|
||||||
self.client), 'GET',
|
self.client), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
@ -795,14 +778,13 @@ class ClientV2TestJson(CLITestV20Base):
|
|||||||
resstr2 = self.client.serialize(reses2)
|
resstr2 = self.client.serialize(reses2)
|
||||||
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
resp_headers = {'x-openstack-request-id': REQUEST_ID}
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
end_url(path, "", format=self.format), 'GET',
|
end_url(path, ""), 'GET',
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
||||||
resstr1))
|
resstr1))
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
MyUrlComparator(end_url(path, fake_query, format=self.format),
|
MyUrlComparator(end_url(path, fake_query), self.client), 'GET',
|
||||||
self.client), 'GET',
|
|
||||||
body=None,
|
body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
'X-Auth-Token', TOKEN)).AndReturn((MyResp(200, resp_headers),
|
||||||
|
@ -30,8 +30,7 @@ class CLITestV20Tag(test_cli20.CLITestV20Base):
|
|||||||
if body:
|
if body:
|
||||||
body = test_cli20.MyComparator(body, self.client)
|
body = test_cli20.MyComparator(body, self.client)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
test_cli20.MyUrlComparator(
|
test_cli20.MyUrlComparator(test_cli20.end_url(path), self.client),
|
||||||
test_cli20.end_url(path, format=self.format), self.client),
|
|
||||||
method, body=body,
|
method, body=body,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
'X-Auth-Token', test_cli20.TOKEN)).AndReturn(
|
'X-Auth-Token', test_cli20.TOKEN)).AndReturn(
|
||||||
@ -51,7 +50,7 @@ class CLITestV20Tag(test_cli20.CLITestV20Base):
|
|||||||
resstr = self.client.serialize(res)
|
resstr = self.client.serialize(res)
|
||||||
self.client.httpclient.request(
|
self.client.httpclient.request(
|
||||||
test_cli20.MyUrlComparator(
|
test_cli20.MyUrlComparator(
|
||||||
test_cli20.end_url(path, query, format=self.format),
|
test_cli20.end_url(path, query),
|
||||||
self.client),
|
self.client),
|
||||||
'GET', body=None,
|
'GET', body=None,
|
||||||
headers=mox.ContainsKeyValue(
|
headers=mox.ContainsKeyValue(
|
||||||
|
@ -250,7 +250,6 @@ class ClientBase(object):
|
|||||||
self.raise_errors = kwargs.pop('raise_errors', True)
|
self.raise_errors = kwargs.pop('raise_errors', True)
|
||||||
self.httpclient = client.construct_http_client(**kwargs)
|
self.httpclient = client.construct_http_client(**kwargs)
|
||||||
self.version = '2.0'
|
self.version = '2.0'
|
||||||
self.format = 'json'
|
|
||||||
self.action_prefix = "/v%s" % (self.version)
|
self.action_prefix = "/v%s" % (self.version)
|
||||||
self.retry_interval = 1
|
self.retry_interval = 1
|
||||||
|
|
||||||
@ -270,7 +269,6 @@ class ClientBase(object):
|
|||||||
|
|
||||||
def do_request(self, method, action, body=None, headers=None, params=None):
|
def do_request(self, method, action, body=None, headers=None, params=None):
|
||||||
# Add format and project_id
|
# Add format and project_id
|
||||||
action += ".%s" % self.format
|
|
||||||
action = self.action_prefix + action
|
action = self.action_prefix + action
|
||||||
if isinstance(params, dict) and params:
|
if isinstance(params, dict) and params:
|
||||||
params = utils.safe_encode_dict(params)
|
params = utils.safe_encode_dict(params)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user