From 260952b8d2cc67c3df579937cbcf5f0fc94824d2 Mon Sep 17 00:00:00 2001 From: Sylvain Afchain Date: Wed, 23 Apr 2014 11:45:44 +0200 Subject: [PATCH] Specification for the BP Extend management features of L3 metering API Change-Id: Idccd48636c09d6a009aa18e7ffe61f1d73724951 --- specs/juno/l3-metering-mgnt-ext.rst | 145 ++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 specs/juno/l3-metering-mgnt-ext.rst diff --git a/specs/juno/l3-metering-mgnt-ext.rst b/specs/juno/l3-metering-mgnt-ext.rst new file mode 100644 index 000000000..5c10ebc97 --- /dev/null +++ b/specs/juno/l3-metering-mgnt-ext.rst @@ -0,0 +1,145 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +============================================= +Extend management features of L3 metering API +============================================= + +Launchpad blueprint: + +https://blueprints.launchpad.net/neutron/+spec/l3-metering-mgnt-ext + +This blueprint aims to extend the current metering API in order to help +administrators to manage the metering labels/rules. + + +Problem description +=================== + +Currently the administrator has to associate metering label for each tenant +by the hand, there is no way to add a default metering label/rules which will +be automaticaly associated with all current tenants and also with the tenants +that will be created. + +Use cases: + +- The administrator wants to get traffic counters from the public for a billing + purpose for all current tenants and for the future tenants. Currently each + time a tenant is added the administrator has to create a new label for it. + +- The administrator wants to get traffic counters from service networks for + monitoring purpose, for instance from a provider network which exposes + physical resources (ex: db, storage) + + +Proposed change +=============== + +The goal is to extend the current API to add an extra parameter for the +labels creation which specifies whether the label will be shared by all tenants +or not. A such label will be shared by all current tenants and also by the +tenants which will be created. + +Alternatives +------------ + +An alternative could be to add an extra configuration file which set some +metering labels/rules at the metering agent startup. + +Data model impact +----------------- + +An extra field will be added to the MeteringLabel data model to specify whether +a label is shared or not. By default a metering label will be not shared. +The current labels will be unchanged. + +REST API impact +--------------- + +A new shared attribute will be introduced to the current MeteringLabel model: + ++----------+-------+---------+---------+------------+--------------+ +|Attribute |Type |Access |Default |Validation/ |Description | +|Name | | |Value |Conversion | | ++==========+=======+=========+=========+============+==============+ +|shared |bool |RW, admin|false |N/A | | ++----------+-------+---------+---------+------------+--------------+ + +Security impact +--------------- + +No change, only admin users are allowed to create/delete labels/rules. + +Notifications impact +-------------------- + +None + +Other end user impact +--------------------- + +The shared parameter will be exposed to the end user through the neutron +client, ex: + +neutron meter-label-create testlabel --shared + +Performance Impact +------------------ + +None + +Other deployer impact +--------------------- + +None + +Developer impact +---------------- + +None + + +Implementation +============== + +Assignee(s) +----------- + +Sylvain Afchain + +Work Items +---------- + +The work is split up into two parts: + +1. API, Data model, Metering service plugin. + +2. Neutron client update. + + +Dependencies +============ + +None + + +Testing +======= + +For tempest test coverage, new API tests for the shared parameter will be +provided. + + +Documentation Impact +==================== + +Documentation and examples for the shared parameter will be provided. + + +References +========== + +None