打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何在openstack环境中实现定制化功能

本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

来自:http://lynnkong.iteye.com/blog/1740487

我写这篇博客的目的是介绍一个在线修改openstack工程文件以实现对某些功能的测试(或其他一些目的)的方法。可能是我自己的水平问题,亦或者是大牛们不屑于回答这样的问题,我几乎在网上(国内)找不到类似的方法。于是研究了一点时间并最终实验成功后,不敢保留,稍作总结,希望能帮助与我有同样困惑的朋友们。

1      文件在哪

现在网上的安装方法基本都是通过配置安装源安装,那么安装后的openstack工程的程序文件在哪呢?以nova为例:


 

这个目录下的结构是不是十分熟悉,对,基本跟在eclipse下浏览工程的结构一模一样,这就是安装openstack后源代码路径。再看下面的目录:


 

这里就是nova工程经过编译后的文件,其中的py文件是上面那个目录中对应文件的链接而已。

2      动手修改python文件

知道了源文件和编译文件的位置,那么我们就能很容易的修改程序以满足我们自己的要求。以修改nova操作权限判断流程为例。nova创建虚拟机时,会调用nova/compute/api.pyAPI类的_check_create_policies方法根据policy.json文件内容进行操作权限的判断,而该方法最终会调用nova/policy.py中的enforce方法:


  

如果我们想知道程序运行到此时,context中到底有什么内容,那么我们可以修改文件如下,注意对比上面代码新增的4行:


 需要注意是:要在文件的开头处将logging引入,同时,定义:

LOG = logging.getLogger(__name__)

 

我们打印两行*号以便快速定位日志,同时将context内容打印出来,并显式的抛出一个异常让本次处理停止。

3      编译文件

文件修改完,必须经过编译并把源文件和编译后的文件覆盖现有工程中相应的文件。python中提供了很方便的模块对源文件进行编译,我们可以把如下内容保存到一个脚本中并执行:

(echo 'import py_compile'; echo 'py_compile.compile(r"/root/pydir/policy.py", r"/root/pydir/policy.pyc")') | python

简单解释:/root/pydir/policy.py为源文件,/root/pydir/policy.pyc是你想要将编译后的文件放在哪。

4      实验

分别将policy.py文件和policy.pyc文件替换/usr/share/pyshared/nova/policy.py/usr/lib/python2.7/dist-packages/nova/policy.pyc(强烈建议在替换前先备份原来的文件!)

 

重启nova各个进程:

cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done

 

随便调用任意一个nova命令,如nova list,将会得到以下输出:


 

说明我们的修改生效。打开日志,看到了context中的具体内容:


 本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
.py .pyc .pyo
EDEM2020+Fluent2020R2耦合接口编译
Pyc文件编译和运行
【博文推荐】如何进行 OpenStack 的性能测试及平台功能性测试
Python文件后缀名是什么?
python生成exe文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服