本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
我写这篇博客的目的是介绍一个在线修改openstack工程文件以实现对某些功能的测试(或其他一些目的)的方法。可能是我自己的水平问题,亦或者是大牛们不屑于回答这样的问题,我几乎在网上(国内)找不到类似的方法。于是研究了一点时间并最终实验成功后,不敢保留,稍作总结,希望能帮助与我有同样困惑的朋友们。
1 文件在哪
现在网上的安装方法基本都是通过配置安装源安装,那么安装后的openstack工程的程序文件在哪呢?以nova为例:
这个目录下的结构是不是十分熟悉,对,基本跟在eclipse下浏览工程的结构一模一样,这就是安装openstack后源代码路径。再看下面的目录:
这里就是nova工程经过编译后的文件,其中的py文件是上面那个目录中对应文件的链接而已。
2 动手修改python文件
知道了源文件和编译文件的位置,那么我们就能很容易的修改程序以满足我们自己的要求。以修改nova操作权限判断流程为例。nova创建虚拟机时,会调用nova/compute/api.py中API类的_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)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
相关推荐
《Open Stack设计与实现》是一本介绍OpenStack设计与实现原理的书。《Open Stack设计与实现》以Juno版本为基础,覆盖了OpenStack的学习方法到设计与实现等各个方面内容,致力于帮助读者形成OpenStack及其各个主要...
openstack自动化搭建脚本,openstack私有云平台部署。 这次是基于devstack进⾏⾃动化部署,后续会通过解析这个部署脚本的源代码的形式,学习openstack的部署,同时⼀步步阅读 openstack其他服务的源码,⽐如keystone...
OpenStack Neutron SDN 实现详解
深入理解OpenStack中的网络实现 希望对大家有帮助
Openstack中各个组件的功能,简单明了,更易于初学Openstack的学习,使学习更加简单
基于openstack云计算的实现(毕业设计开题报告).pdf基于openstack云计算的实现(毕业设计开题报告).pdf基于openstack云计算的实现(毕业设计开题报告).pdf基于openstack云计算的实现(毕业设计开题报告).pdf基于...
open stack书籍,有助于openstack入门以及原理性介绍,实战。
OpenStack 开发环境搭建
openstack 中文
关于云计算、openstack、Dashboard(horizon)的介绍与定制化
为了优化 OpenStack 监控模块在功能和可视化方面的不足,确保 OpenStack 实例的稳定运行,设计出一个用于 OpenStack 的监控系统。通 过使用 Libvirt、Python 编程语言、Django 框架、Echarts 等开发技术, 完成了...
关于OpenStack的部署有很多方法和社区项目,笔者公司采用了社区中的kolla项目作为部署OpenStack的方案,本文会详细介绍使用kolla在基于传统企业常用的vlan网络环境下部署OpenStack生产环境的实际案例。
Mirantis-OpenStack环境搭建步骤: 本文档详细介绍了使用Mirantis Fuel OpenStack 6.1搭建Openstack环境的详细步骤,包括网络配置等。 物理服务器(3+N台)
openstack kilo 的中文安装文档,本人亲自安装通过,对初学者帮助很大
Enable-GPU-virtualization-in-OpenStack,如何开启 openstack 对 GPU的虚拟化功能
这将是一本详细介绍Openstack设计与实现的书,同时它也将为读者展现Openstack社区如何...这将有利于读者形成对Openstack更为全局的认识,从而在研究以及在开发过程中遇到相关问题时,能够更为容易的寻找到解决的方法。