On 2016/04/05 22:23, Ihar Hrachyshka wrote:
Hirofumi Ichihara <ichihara.hirof...@lab.ntt.co.jp> wrote:

Hi Ihar,

On 2016/04/05 7:57, Ihar Hrachyshka wrote:
Hi all,

in neutron, we have a bunch of configuration options to control advanced filtering features for API, f.e. allow_sorting, allow_pagination, allow_bulk, etc. Those options have default False values.
I saw allow_bulk option is set default True in https://github.com/openstack/neutron/blob/master/neutron/common/config.py#L66
Well, I don't think there's someone sets False to the option.

Yes, indeed only allow_sorting and allow_pagination are disabled by default.


In the base API controller class, we have support for both native sorting/pagination/bulk operations [implemented by the plugin itself], as well as a generic implementation for plugins without native support. But if corresponding allow_* options are left with their default False values, those advanced search/filtering criteria just don’t work, no matter whether the plugin support native filters, or not.

It seems weird to me that our API behaves differently depending on configuration options, and that we have those useful features disabled by default.

My immediate interest is to add native support for sorting/pagination for QoS service plugin; I have a patch for that, and I planned to add some API tests to validate that the features work, but I hit failures because those features are not enabled for the -api job.

Some questions:
- can we enable those features in -api job?
- is there any reason to keep default values for allow_* as False, and if not, can we switch to True? - why do we even need to control those features with configuration options? can we deprecate and remove them?
I agree we will deprecate and remove the option but I think that we need more tests if we support it as default.
It looks like there are very few tests(UT only).

That’s a good suggestion. I started a patch to enable those two options, plus add first tests for the feature:

https://review.openstack.org/#/c/301634/

For now it covers only for networks. I wonder how we envision the coverage. Do we want to have test cases per resource? Any ideas on how to make the code more generic to avoid code duplication? For example, I could move those test cases into a base class that would require some specialization for each resource that we want to cover (get/create methods, primary key, …).
The patch is reasonable for me as first step. Second, I agree to make it more generic. I think that we should have test per resource but we will do in future work.


Also, do we maybe want to split the patch into two pieces:
- first one adding tests [plus enabling those features for API job];
- second one changing the default value for the options.
+1

Thanks,
Hirofumi


Ihar

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to