分享

详解openstack命令启动实现流程及原理(nova --debug image-list)

问题导读
1、你如何理解nova --debug image-list原理的实现?
2、nova通过什么来指向novaclient.shell模块的main函数?
3、怎么从日志上看出授权代码?





分析命令nova --debug image-list原理实现:
1.png


  1. vim /usr/bin/nova
复制代码

2.png


  1. load_entry_point('python-novaclient==2.17.0', 'console_scripts', 'nova')()
复制代码



第一个参数定向到 /usr/lib/python2.6/site-packages/python_novaclient-2.17.0-py2.6.egg-info
然后搜索EGG-INFO/entry_points.txt
  1. vim /usr/lib/python2.6/site-packages/python_novaclient-2.17.0-py2.6.egg-info/entry_points.txt
复制代码


3.png



第二个参数就是entry_points.txt文件group名称
nova就是传递进来的参数,实际指向novaclient.shell模块的main函数
4.png

跟进代码:
5.png


6.png


上述代码从命令行接收参数,或者从环境变量中获取参数值,进行验证等操作。
7.png



  1. nova --debug image-list
复制代码


8.png


从日志上可以看出授权代码:
9.png


发送请求,获取image信息代码:
  1. args.func(self.cs, args)
复制代码


10.png


从args的keyfunc=<function do_image_list at 0x2c2d410>得住调用do_image_list函数。
然后调用glanceclient里面的:
1.png



  1. vim /usr/lib/python2.6/site-packages/glanceclient/v1/images.py
复制代码


2.png


3.png


以上则与页面horizon调用的代码一致。这里是命令和dashboard调用底层nova的共同接口。

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条