mandatory api limits
Co-Authored-By: Fabio Giannetti <fgiannet@cisco.com> Co-Authored-By: Phil Neal <phil.neal@hp.com> Change-Id: I6f3bc7758a699b7c69d5043036ddf07131b0d81e
This commit is contained in:
parent
a91157290e
commit
3fc41d22c8
144
specs/liberty/mandatory-limit.rst
Normal file
144
specs/liberty/mandatory-limit.rst
Normal file
@ -0,0 +1,144 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
==========================
|
||||
Mandatory API Query Limits
|
||||
==========================
|
||||
|
||||
Include the URL of your launchpad blueprint:
|
||||
|
||||
https://blueprints.launchpad.net/ceilometer/+spec/mandatory-api-limit
|
||||
|
||||
Currently, Ceilometer's api allows users to query for as much or as little
|
||||
data as they desire. They are also allowed to query for everything no matter
|
||||
the size of results.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Allowing the ability to have return the entire world of data is not a realistic
|
||||
use case. While it is easier in theory to query for everything, in reality,
|
||||
this is not viable as it puts a lot of strain on CPU and memory to manage all
|
||||
the data required. In addition, these queries take a significant amount
|
||||
of time to calculate and will always time out even if enough resources are
|
||||
available to the system.
|
||||
|
||||
As Ceilometer intends to remove unused pagination, another form of query
|
||||
restriction is required.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Mandatory limits must be enforced on queries, whether it be a limit value.
|
||||
If neither value is provided, a default restriction of 100 will be
|
||||
applied. This behaves similarly to other dbs such as ElasticSearch which limit
|
||||
the number of results returned if no restrictions are provided.
|
||||
|
||||
Users are still allowed to query the entire set of data if they choose to, but
|
||||
instead of implicitly doing so as it currently functions, users will need to
|
||||
explicitly do so.
|
||||
|
||||
These restrictions will apply to both events and meters api.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
Nothing, and let users blame Ceilometer for insane queries.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
All GET queries will require a limit value. If none is given, a default of 100
|
||||
will be applied.
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Pipeline impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
A limit value is required to get data as expected. If none is provided, the
|
||||
returned results may be truncated. A warning will be logged whenever the default
|
||||
limit is applied.
|
||||
|
||||
Performance/Scalability Impacts
|
||||
-------------------------------
|
||||
|
||||
This will limit the load created by unintentional large queries.
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
A new option will be defined to allow operators control of what the default
|
||||
return limit is.
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
Unit tests need to be written to consider this limit.
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
gordc
|
||||
|
||||
Other contributors:
|
||||
None
|
||||
|
||||
Ongoing maintainer:
|
||||
None
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
- Add option to control default limit value
|
||||
- Apply limit check to meter queries and fix UT
|
||||
- Apply limit check to event queries and fix UT
|
||||
- Update docs
|
||||
|
||||
Future lifecycle
|
||||
================
|
||||
|
||||
We can derive a query link which returns next set of data based on last
|
||||
timestamp value of returned set.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Unit test to test default limits are applied.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
This may be a breaking change to some -- Ceilometer will probably be already
|
||||
broken to them. That said, this will need to be publicised.
|
||||
|
||||
References
|
||||
==========
|
||||
|
Loading…
Reference in New Issue
Block a user