Metadata-Version: 1.0
Name: nova-limits
Version: 0.7.0b1
Summary: Nova-specific rate-limit class for turnstile
Home-page: https://github.com/klmitch/nova_limits
Author: Kevin L. Mitchell
Author-email: kevin.mitchell@rackspace.com
License: Apache License (2.0)
Description: ============================================
        Nova-specific Rate Limit Class for Turnstile
        ============================================
        
        This package provides the ``nova_limits`` Python module, which
        contains the ``nova_preprocess()`` preprocessor, the
        ``nova_postprocess()`` postprocessor, the ``NovaClassLimit`` limit
        class, and the ``nova_formatter()`` replacement delay formatter, all
        for use with Turnstile.  These pieces work together to provide
        class-based rate limiting integration with nova.  To use, you must
        configure the Turnstile middleware with the following configuration::
        
            [filter:turnstile]
            use = egg:turnstile#turnstile
            enable = nova_limits
            formatter = nova_limits
            redis.host = <your Redis database host>
        
        Then, simply use the ``nova_limits`` rate limit class in your limits
        configuration.
        
        Using ``NovaClassLimit``
        ========================
        
        In addition to the other attributes provided by
        ``turnstile.limits:Limit``, the ``NovaClassLimit`` limit class
        provides one additional required argument: the ``rate_class``.  Each
        tenant is associated with a given rate-limit class through the Redis
        database.  (If no such association is present, the rate-limit class
        for a tenant is ``default``.)  Setting ``rate_class`` on
        ``NovaClassLimit`` restricts the limiting action to only those tenants
        in the given rate-limit class.
        
        Also note that, for nova, the URIs used in configuring rate limiting
        must include the version identifier, i.e.,
        "/v2/{tenant}/servers/detail".
        
        Quota Classes
        =============
        
        If the discovered nova context supports quota classes--that is, if the
        context object has the ``quota_class`` attribute--the quota class for
        the context will be set to be the same as the selected rate limit
        class.
        
        Mapping Tenants to Rate Limit Classes
        =====================================
        
        A ``limit_class`` command is provided to control the mapping of the
        tenant ID to the rate limit class.  A usage summary follows::
        
            usage: limit_class [-h] [--debug] [--class KLASS] config tenant_id
        
            Set up or query limit classes associated with tenants.
        
            positional arguments:
              config                Name of the configuration file, for connecting to the
                                    Redis database.
              tenant_id             ID of the tenant.
        
            optional arguments:
              -h, --help            show this help message and exit
              --debug, -d           Run the tool in debug mode.
              --class KLASS, -c KLASS
                                    If specified, sets the class associated with the given
                                    tenant ID.
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Paste
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
