码迷,mamicode.com
首页 > 其他好文 > 详细

openstack 的 policy 问题。

时间:2015-05-25 12:50:29      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

policy的加载是同步的,每次loader的时候,都会重新加载。

 

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

1. 

 

 1 class BaysController(rest.RestController):
 2     """REST controller for Bays."""
 3     def __init__(self):
 4         super(BaysController, self).__init__()
 5 
 6     ...
 7 
 8     @wsme_pecan.wsexpose(Bay, types.uuid_or_name)
 9     def get_one(self, bay_ident):
10         policy.enfore("bay:get_one", pecan.request.contex)
11         if self.from_bays:
12             raise exception.OperationNotPermitted
13 
14         rpc_bay = api_utils.get_rpc_resource(Bay, bay_ident)
15 
16         return Bay.convert_with_links(rpc_bay)

 

 

2.

 1 class BaysController(rest.RestController):
 2     """REST controller for Bays."""
 3     def __init__(self):
 4         super(BaysController, self).__init__()
 5 
 6     ...
 7 
 8     @wsme_pecan.wsexpose(Bay, types.uuid_or_name)
 9     def get_one(self, bay_ident):
10         if self.from_bays:
11             raise exception.OperationNotPermitted
12         policy.enfore("bay:get_one", pecan.request.contex)
13 
14         rpc_bay = api_utils.get_rpc_resource(Bay, bay_ident)
15 
16         return Bay.convert_with_links(rpc_bay)

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

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

 

openstack 的 policy 问题。

标签:

原文地址:http://www.cnblogs.com/shaohef/p/4527436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!