想写nova的policy的实现, 但是发现网上,有人写的很不错了。

ref: http://blog.csdn.net/hackerain/article/details/8241691

但是,policy本身存在一点问题,其他文章没有介绍。

policy的加载是同步的,每次loader的时候,都会检测,文件是否修改,修改则重新加载。

建议策略: 改成异步监听policy的文件, 文件修改是加载。 实现时,注意 enforce函数 和 加载函数的 race。

policy的同步缺陷可能导致的问题。

当我们要在magnum/api/controllers/v1/bay.py 中调用这个policy.enfore,不同的位置调用,会导致web server的性能不同。

1. 

 class BaysController(rest.RestController):
"""REST controller for Bays."""
def __init__(self):
super(BaysController, self).__init__() ... @wsme_pecan.wsexpose(Bay, types.uuid_or_name)
def get_one(self, bay_ident):
policy.enfore("bay:get_one", pecan.request.contex)
if self.from_bays:
raise exception.OperationNotPermitted rpc_bay = api_utils.get_rpc_resource('Bay', bay_ident) return Bay.convert_with_links(rpc_bay)

2.

 class BaysController(rest.RestController):
"""REST controller for Bays."""
def __init__(self):
super(BaysController, self).__init__() ... @wsme_pecan.wsexpose(Bay, types.uuid_or_name)
def get_one(self, bay_ident):
if self.from_bays:
raise exception.OperationNotPermitted
policy.enfore("bay:get_one", pecan.request.contex) rpc_bay = api_utils.get_rpc_resource('Bay', bay_ident) return Bay.convert_with_links(rpc_bay)

magnum代码中, 和同事讨论采用1的方法,提前(第10行)做policy 的enforce。

在淘宝双11的节奏中,当请求量很大时,尤其是在self.from_bays 的条件满足的情况下, 由于 policy 自身的实现(请查看policy的代码),导致服务器的压力增大。

openstack 的 policy 问题。的更多相关文章

  1. 探索 OpenStack 之(13):研究 Keystone

    Keystone 是 OpenStack Identity Service 的项目名称.本文就试着尽可能深入地研究 Keystone. 1. Keystone 的功能 做为 OpenStack 云系统 ...

  2. OpenStack REST API使用

    以前一直想写博客,但因各种因素一直没写.最近在做OpenStack,而OpenStack对外提供REST API,今天就简要介绍一下OpenStack REST API 使用,关于什么是REST AP ...

  3. keystone policy.json 的学习总结

    keystone的policy.json文件位于:/etc/keystone/policy.json 其内容如下: 1 { 2 "admin_required": "ro ...

  4. OpenStack Identity API v3 extensions (CURRENT)

    Table Of Contents Identity API v3 extensions (CURRENT) OS-ENDPOINT-POLICY API Associate policy and e ...

  5. openstack policy 鉴权过程分析

    转:http://blog.chinaunix.net/uid-20940095-id-4144300.html 1. openstack 鉴权简单介绍       众所周知,openstack通过k ...

  6. openStack deep dive,Retake Policy

    Method of Payment: visa MasterCard American Express Discover

  7. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...

  8. RedHat 和 Mirantis OpenStack 产品的版本和功能汇总和对比(持续更新)

    Mirantis 和 Red Hat 作为 OpenStack 商业化产品领域的两大领军企业,在行业内有重要的地位.因此,研究其产品版本发布周期和所支持的功能,对制定 OpenStack 产品的版本和 ...

  9. OpenStack Mitaka 版本中的 domain 和 admin

    OpenStack 的 Keystone V3 中引入了 Domain 的概念.引入这个概念后,关于 admin 这个role 的定义就变得复杂了起来. 本文测试环境是社区 Mitaka 版本. 1. ...

随机推荐

  1. mysql explain 命令简解

    参考官方文档地址: http://dev.mysql.com/doc/refman/5.7/en/explain.html 为什么用explain . 如果你的页面返回结果很慢,你就需要使用expla ...

  2. python语言

    python语言 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个人能力有限,其他语言涉及甚少,欢迎各路人士加入,丰富月刊的内容. 当然,如果您有更好的建议或者意见,欢迎发邮件 ...

  3. .net c# 正则表达式 平衡组/递归匹配

    原文 http://www.cnblogs.com/qiantuwuliang/archive/2011/06/11/2078482.html 平衡组/递归匹配 这里介绍的平衡组语法是由.Net Fr ...

  4. [置顶] 自娱自乐6之Linux gadget驱动5(自编gadget驱动,包涵与之通讯的主机usb驱动,已调试通过)

    这个代码调试,你首先要保证你的udc驱动没用问题,这个有些矛盾,应为我本来要用gadget驱动来调试udc驱动,结果反过来了. 这是在zero基础改的,大概的改动 1. 去掉loop. 2. sink ...

  5. [置顶] 学习VB.NET编程最基本的三个问题

    1.什么是对象和属性,他们之间的联系是? 对象:将对象看做一个实物或者事物的一种概念.比如说窗体和控件都是对象. 属性:属性阐明了与对象相关的或是控制对象行为的信息,例如,对象的名字.颜色.尺寸或者位 ...

  6. SQL2012尝试读取或写入受保护的内存。这通常指示其他内存已损坏

    SQL2012尝试读取或写入受保护的内存.这通常指示其他内存已损坏 今天打开SQL2012,突然就连接不了数据库,一开始还以为是某个服务器崩溃了,结果试了好几个,都还是如此,弹出提示如下: 尝试读取或 ...

  7. [译] 使用Using Data Quality Services (DQS) 清理用户数据

    SQL Server 2012 Data Quality Services (DQS)  允许你使用自己的知识库来清洗数据. 在本文中我会展示一个简单示例. 使用DQS清理步骤如下: A. 建立DQS ...

  8. iOS状态栏字体设置为白色

    info.plist 添加字段: view controller -base status bar appearence 设为NO [[UIApplication sharedApplication] ...

  9. Linux学习之进程管理

    |-进程管理     进程常用命令        |- w查看当前系统信息        |- ps进程查看命令        |- kill终止进程        |- 一个存放内存中的特殊目录/p ...

  10. C++多文件变量

    不要在头文件中定义变量,在头文件中声明变量.定义放在对应的源文件中.其他地方只能用extern声明. 例如: 1 在头文件a.h中声明一个int变量: extern int ix; 2 在源文件a.c ...