我需要给zun简单修改一下,比如在创建的时候自动分配一个浮动ip,在删除的时候收回浮动ip。
zun的话三个组件嘛,zun-api zun-compute zun-wsproxy
,根据nova的经验,大概需要修改zun-compute
里面的源码。
/usr/lib/python2.7/site-packages
创建容器
zun-api
首先进入zun/api/comtroller/v1/containers.py
,调用post()
方法,在_do_post()
中完成如下任务:
- policy的检测
- 安全组是否符合,去掉重复的,然后根据名字获取对应ID
- 检查quotas
- 设置运行时环境和主机名
- 检查网络参数是否正确,只是检查,不进行任何修改操作
- 检查心跳机制
- cpu内存分配,驱动等信息
- 如果没有分配安全组或者其他的,默认没有安全组策略。如果绑定端口
–exposr-port
,自动创建一个安全组策略,也可以指定一个现有的安全组策略。 - 检查volume,如果传入了 volume的id,检查是否合法,否则创建一个新的。(这里如果想要有持久化存储,就预先创建一个volume,然后传入id,这样删除容器的时候volume不会一起删除
然后到zun/compute/api.py
中,
container_create()
方法中,使用rpc远程调用manage.py中的container_create()
。
zun-compute
进入zun/compute/manage.py
中,进行真正的操作,比较直观明显。
我i是就是我不想写了。不过也的确没啥写的。
然后呢,大概的一些操作的方法命名比较类似,可以直接对着找。
比如启动是container_start()
,删除是container_delete
等。
如果需要参数的话,可以从context、created_container和container
里面找到。上下文里就是一些上下文,用户信息项目信息之类的;关于容器的信息可以在后面的两个参数里找到。