您的位置:首页 > 编程语言 > Python开发

neutron client源码分析

2016-12-25 13:28 549 查看
1.首先什么是neutronclient
neutronclient就是我们的命令行客户端代码



上图是所有的neutron的可执行python脚本,neutron就是今天我们要分析的neutron-client,我们可以从脚本中看出



2. 分析neutronclient源码
2.1首先我们分析一下源码的目录结构



2.2 代码流程
(1).首先从shell.py的main函数进入生成NeutronShell类,然后启动Neutronshell的run函数,因为我们是在命令行中使用neutron说叫NeutronShell
(2).NeutronShell中的run函数会调用run_subcommand函数,执行某一条命令
(3).run_subcommand函数通过解析命令调用run_command函数运行命令
(4).然后会到某一条命令下运行run,这里我们举例运行DisassociateFloatingIP命令的run函数
(5).run函数中主要是调用要生成neutronclient我们看一下过程截图
(5.1).



(5.2).调用基类NeutronCommand中的get_client函数



(5.3).client_manager是在shell.py的authenticate_user函数中被赋予,主要是clientmanager类



(5.4).clientmanager主要是在common模块中,从(5.2)的get_client函数中可以看出主要是返回client_manager的neutron参数作为neutronclient



可以看出主要是一个clientcache对象
参数make_client见下面
(5.5)make_client主要是在neutronclient下neutron的client.py文件下



通过get_client_class函数和上面的API_VERSIONS可以看出主要生成的客户端是
在'neutronclient.v2_0.client.Client 这个模块下



(5.6).这个client在他的基类clienbase中需要有底层基于通信的client



这个httpclient就是neutronclient下面client.py文件下的

总结从上面可以看出client端的生成是从代码目录中由里向外调的



3.再介绍一下Command类
这里使用了Cliff框架,所有的命令类都继承自command.command,它的子类是OpenstackCommand,OpenstackCommand的子类是NeutronCommand,然后主要把Neutorn中的命令分为create,update,delete,list和show5种,所以在NeutronCommand命令有5个子类,然后对于每一种网络资源,比如network可就是继承上面的5个类生产network的5个资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openstack python