Quota Management and Enforcement
2016-05-13 17:49
471 查看
Neutron API中大多的resource都需要quota limits。
Neutron API暴露出一个extension 来管理quota,Quota limits are enforced at the API layer,
Plugin and ML2 drivers唯一例外是subnet_allocation[1] extension。
不支持per user and 多租户嵌套。
High Level View
主要组件:
- The Quota API extension;
- The Quota Engine.
quota driver:
- neutron.db.quota.driver.DbQuotaDriver
- neutron.quota.ConfDriver
The latter driver is however deprecated.
Quota Management
和其他Neutron extensions不同,它 有自己的own controller class [3].
其中_update_attributes只被调用一次,它会动态的更新Neutron’s resource attribute map [4]
driver operations包括:
- delete_tenant_quota, which simply removes all entries from the ‘quotas’ table for a given tenant identifier;
- update_quota_limit, which adds or updates an entry in the ‘quotas’ tenant for a given tenant identifier and a given resource name;
- _get_quotas, which fetches limits for a set of resource and a given tenant identifier
- _get_all_quotas, which behaves like _get_quotas, but for all tenants.
Resource Usage Info
- CountableResource
- TrackedResource
Quota Enforcement
- 通过count方法得到当前资源的usages.
- 通过 _get_tenant_quotas 得到租户的quota.
- usages减去expired reservations .
- 计算可用资源,与请求资源对比.
Setting up Resource Tracking for a Plugin
@resource_registry.tracked_resources(network=models_v2.Network, port=models_v2.Port, subnet=models_v2.Subnet, subnetpool=models_v2.SubnetPool)
[1] | Subnet allocation extension:http://git.openstack.org/cgit/openstack/neutron/tree/neutron/extensions/subnetallocation.py |
[2] | DB Quota driver class:http://git.openstack.org/cgit/openstack/neutron/tree/neutron/db/quota_db.py#n33 |
[3] | Quota API extension controller:http://git.openstack.org/cgit/openstack/neutron/tree/neutron/extensions/quotasv2.py#n40 |
[4] | Neutron resource attribute map:http://git.openstack.org/cgit/openstack/neutron/tree/neutron/api/v2/attributes.py#n639 |
[5] | Base controller class:http://git.openstack.org/cgit/openstack/neutron/tree/neutron/api/v2/base.py#n50 |
[6] | http://lists.openstack.org/pipermail/openstack-dev/2015-February/057534.html |
相关文章推荐
- 大搬家 (2016"百度之星" - 测试赛(热身,陈题))--Java代码
- hbase基本概念和hbase shell常用命令用法
- Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
- POJ 3356 AGTC 最短编辑距离
- Jenkins环境搭建
- HTTP协议之chunk编码(分块传输编码)
- POJ_2503_Babelfish_(Trie/map)
- 大凯哥说大数据(系列一):没有云计算就没有大数据
- poj 1159 Palindrome
- python 3D绘制立体几何
- Spring事务中涉及到多线程的处理方式
- SVN使用教程1
- magento 的一些Sql查询
- 作业_java基础第七天_匿名内部类、异常、包和jar
- 基于maven的springmvc+mybatis的web页面的CRUD
- 一篇非常好的讲解转场动画的文章链接
- android获取网络图片
- websocket是什么?
- POJ 3468 A Simple Problem with Integers 线段树 区间修改
- Haar特征