一、Python下的库文件
/usr/lib/python2.7/dist-packages/ 这里是Python默认的的安装目录(如果要找的库文件不在这里的话,就在site-packages,这是用户自己安装的目录),一般安装的各种库文件都在这个目录下,以下第一部分的所有内容都是在这个文件夹下。
1.python_openstackclient-3.12.1.dist-info(版本号不一定)文件夹存储一些版本信息和openstack的文件目录等信息。
①entry_points.txt 文件,存储着一些openstack的命令(使用命令时候省略下划线)以及对应的映射文件(冒号前面是文件的目录,后面是对应的方法)如下对应的是user.py中的ListUser方法。
user_list = openstackclient.identity.v2_0.user:ListUser
在openstack命令行中输入user list可以查看用户列表。
如果遇到报错:Missing value auth-url required for auth plugin password
退出openstack命令行,在devstack(找一下openrc.sh文件的目录)目录下运行,source openrc 参数1 参数2
参数1和参数2是安装openstack时候的用户名和密码(一般是admin admin,不是的话在devstack的安装目录下的local.conf文件中可以找到)。
后面的等清楚了再写
2.openstack(相当于是连接openstack命令行和后台数据的管道)
3.openstackclient
在这里定义前端的一些命令和操作,通过openstack连接到其他后台操作文件如neutron。
4.neutronclient
这个文件夹下是与deshbord交互的部分。
openstack命令行命令传递顺序
由输入命令---->entry_points.txt(映射)——>openstackclient.network.v2.test:ShowTest------调用---->/usr/local/lib/python2.7/dist-packages/openstack/network/v2/_proxy.py(会调用openstack/proxy2.py中定义的通用增删改查函数)---->neutron
二、关于neutron的一写文件
1.neutron中的一些文件调用流程。
①收到来自openstackclient封装的body后,调用neutron/extension下的校验文件(一般在这个目录下写对数据库中数据的约束条件)。
②在neutron/model目录下定义了表的信息;
③在neutron/db 目录下定义了一些业务逻辑,包括对表的增删改查。
④在neutron/plugins/ml2/plugin.py 这里存放插件,可以自定义数据操作db/和extenstion/之间的映射关系。所有核心资源的创建删除等都会给它的对应方法处理。
2.neutron/pecan_wsgi/hooks/policy_enforcement.py
这是 neutron的策略引擎,相当于一个过滤器,如果你在数据表中有一列名为project_id在外面通过cur的get方法或者openstack的方法是无法获取这个数据的,因为在策略引擎中将这个列等同于tenant_id也就是租户id,并且被添加到attributes_to_exclude(在源码中搜索也可以看到)中,即要排除的属性。
PS:AttributeError: ‘NoneType’ object has no attribute ‘update’
代表着update无法使用,也不一定是代码的问题,在使用update的时候如果修改的值不符合规范也会报这个错。
3.neutron/service.py 在这里定义wsgi服务和neutron API的服务。
4. neutron/api/v2/base.py 这里定义了类Controller,所有的controller都是这个类的实例化,在这个类中定义了资源的创建。
5.neutron/cmd/eventlet/server/__init__.py:main
这是neutron-server的入口。
三、一些配置文件
1.、/etc/neutron/neutron.conf 这个文件是neutron的配置文件(也有一些与keystone相关的),里面有一些配置信息。
比如:core_plugin = ml2。
2./etc/keystone/keystone.conf这个文件是keystone的配置文件。