cinder.api.v2.limits module¶
Module dedicated functions/classes dealing with rate limiting requests.
- class Limit(verb, uri, regex, value, unit)¶
Bases:
object
Stores information about a limit for HTTP requests.
- UNITS = {1: 'SECOND', 60: 'MINUTE', 3600: 'HOUR', 86400: 'DAY'}¶
- UNIT_MAP = {'DAY': 86400, 'HOUR': 3600, 'MINUTE': 60, 'SECOND': 1}¶
- display()¶
Return a useful representation of this class.
- display_unit()¶
Display the string name of the unit.
- class Limiter(limits, **kwargs)¶
Bases:
object
Rate-limit checking class which handles limits in memory.
- check_for_delay(verb, url, username=None)¶
Check the given verb/user/user triplet for limit.
@return: Tuple of delay (in seconds) and error message (or None, None)
- get_limits(username=None)¶
Return the limits for a given user.
- static parse_limits(limits)¶
Convert a string into a list of Limit instances.
This implementation expects a semicolon-separated sequence of parenthesized groups, where each group contains a comma-separated sequence consisting of HTTP method, user-readable URI, a URI reg-exp, an integer number of requests which can be made, and a unit of measure. Valid values for the latter are “SECOND”, “MINUTE”, “HOUR”, and “DAY”.
@return: List of Limit instances.
- class LimitsController(view_builder=None)¶
Bases:
Controller
Controller for accessing limits in the OpenStack API.
- index(req)¶
Return all global and rate limit information.
- wsgi_actions = {}¶
- wsgi_extensions = []¶
- class RateLimitingMiddleware(application, limits=None, limiter=None, **kwargs)¶
Bases:
Middleware
Rate-limits requests passing through this middleware.
All limit information is stored in memory for this implementation.
- class WsgiLimiter(limits=None)¶
Bases:
object
Rate-limit checking from a WSGI application.
Uses an in-memory Limiter.
To use, POST
/<username>
with JSON data such as:{ "verb" : GET, "path" : "/servers" }
and receive a 204 No Content, or a 403 Forbidden with an X-Wait-Seconds header containing the number of seconds to wait before the action would succeed.
- class WsgiLimiterProxy(limiter_address)¶
Bases:
object
Rate-limit requests based on answers from a remote source.
- check_for_delay(verb, path, username=None)¶
- static parse_limits(limits)¶
Ignore a limits string–simply doesn’t apply for the limit proxy.
@return: Empty list.
- create_resource()¶