2018-06-08 19:27:19 |
Mykola Yakovliev |
bug |
|
|
added bug |
2018-06-08 19:27:45 |
Mykola Yakovliev |
description |
If we have pagination enabled in neutron.conf:
allow_pagination = True
pagination_max_limit = 20
And create too many subnets:
for i in `seq 1 200`; do neutron net-create test-net-$i ;done
for i in `seq 1 200`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because pagination does not take in a count "&marker=uuid". |
If we have pagination enabled in neutron.conf:
allow_pagination = True
pagination_max_limit = 20
And create too many subnets:
for i in `seq 1 200`; do neutron net-create test-net-$i ;done
for i in `seq 1 200`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
|
2018-06-08 19:41:33 |
OpenStack Infra |
python-neutronclient: status |
New |
In Progress |
|
2018-06-08 19:41:33 |
OpenStack Infra |
python-neutronclient: assignee |
|
Mykola Yakovliev (vegasq) |
|
2018-06-11 19:06:09 |
Mykola Yakovliev |
description |
If we have pagination enabled in neutron.conf:
allow_pagination = True
pagination_max_limit = 20
And create too many subnets:
for i in `seq 1 200`; do neutron net-create test-net-$i ;done
for i in `seq 1 200`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
If we have pagination enabled in neutron.conf:
# allow_pagination = True
pagination_max_limit = 20
And create too many subnets:
for i in `seq 1 300`; do neutron net-create test-net-$i ;done
for i in `seq 1 300`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
|
2018-06-11 19:47:13 |
Mykola Yakovliev |
description |
If we have pagination enabled in neutron.conf:
# allow_pagination = True
pagination_max_limit = 20
And create too many subnets:
for i in `seq 1 300`; do neutron net-create test-net-$i ;done
for i in `seq 1 300`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
To reproduce the bug you need to have a lot of subnets:
8192 (max uri length) / 40 (length of single subnet filter) = 204 subnets
In this situation, the client will try to paginate request but fails because it does not count for a marker.
for i in `seq 1 255`; do neutron net-create test-net-$i ;done
for i in `seq 1 255`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
|
2018-06-11 19:49:02 |
Mykola Yakovliev |
description |
To reproduce the bug you need to have a lot of subnets:
8192 (max uri length) / 40 (length of single subnet filter) = 204 subnets
In this situation, the client will try to paginate request but fails because it does not count for a marker.
for i in `seq 1 255`; do neutron net-create test-net-$i ;done
for i in `seq 1 255`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
To reproduce the bug you need to have a lot of subnets:
8192 (max uri length) / 40 (length of single subnet filter) = 204 subnets
In this situation, the client will try to paginate request but fails because it does not count for a marker.
for i in `seq 1 254`; do neutron net-create test-net-$i ;done
for i in `seq 1 254`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
|
2018-06-11 19:50:29 |
Mykola Yakovliev |
description |
To reproduce the bug you need to have a lot of subnets:
8192 (max uri length) / 40 (length of single subnet filter) = 204 subnets
In this situation, the client will try to paginate request but fails because it does not count for a marker.
for i in `seq 1 254`; do neutron net-create test-net-$i ;done
for i in `seq 1 254`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
To reproduce the bug you need to have a lot of subnets:
8192 (max uri length) / 40 (length of single subnet filter) = 204 subnets
In this situation when the count of subnets is over this value, the client will try to paginate request but fails because it does not count for a marker.
for i in `seq 1 254`; do neutron net-create test-net-$i ;done
for i in `seq 1 254`; do neutron subnet-create --name test-subnet-$i test-net-$i 172.25.$i.0/24;done
During "neutron net-list" call you will get an exception:
ERROR: neutronclient.shell An unknown exception occurred.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 787, in run_subcommand
return run_command(cmd, cmd_parser, sub_argv)
File "/usr/lib/python2.7/dist-packages/neutronclient/shell.py", line 104, in run_command
return cmd.run(known_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 29, in run
return super(OpenStackCommand, self).run(parsed_args)
File "/usr/lib/python2.7/dist-packages/cliff/display.py", line 91, in run
column_names, data = self.take_action(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/common/command.py", line 35, in take_action
return self.get_data(parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/__init__.py", line 694, in get_data
self.extend_list(data, parsed_args)
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 87, in extend_list
_get_subnet_list(subnet_ids[i: i + chunk_size]))
File "/usr/lib/python2.7/dist-packages/neutronclient/neutron/v2_0/network.py", line 61, in _get_subnet_list
**search_opts).get('subnets', [])
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 96, in with_params
ret = self.function(instance, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 589, in list_subnets
**_params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 301, in list
for r in self._pagination(collection, path, **params):
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 314, in _pagination
res = self.get(path, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 287, in get
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 264, in retry_request
headers=headers, params=params)
File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 194, in do_request
content_type=self.content_type())
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 305, in do_request
self._check_uri_length(url)
File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 301, in _check_uri_length
excess=uri_len - MAX_URI_LEN)
RequestURITooLong: An unknown exception occurred.
The problem happens because subnet pagination does not take in a count "&marker=uuid". |
|
2018-06-12 04:39:06 |
Dr. Jens Harbott |
bug |
|
|
added subscriber Dr. Jens Harbott |
2018-09-02 04:06:23 |
OpenStack Infra |
python-neutronclient: status |
In Progress |
Fix Released |
|