http://blog.csdn.net/snail_ren/article/details/70318783
环境准备
- ZStack已安装成功并在本地或远程某台机器上运行
- ZStack项目的三个子项目ZStack-dashboard、ZStack、ZStack-utility代码已经从github上下载至本地(最新的还有一个zstack-vyos,由于我当时做的时候还没有这个模块,因此暂时不讨论)
- eclipse IDE 已经在本地安装成功
开发
大家在拿到zstack后,可能会根据自己的业务需求进行一些个性化的修改,但是修改后如何使得修改的代码生效。下面介绍如何在修改代码后重新安装。
修改代码后重新安装
在修改代码后,当然我们可以像上一部分提到的,先整个编译成为all-in-on的一个包,再进行安装。但是这个过程很慢,完全没有必要全部重新安装,我总不能就修改一下dashboard的一个控件就全部编译一边吧。所以我们希望的是修改哪个部分,只需要更新那个部分就行了。
1.zstack-dashboard
当修改zstack-dashboarda后,我们只需要重新编译安装dashboard就行。zsack本身也提供了安装dashboard的命令,比较方便安装。
$ cd zstack-dashboard/ *进入代码路径下*
$ python setup.py sdist *编译*
$ cp zstack-dashboard/dist/zstack_dashboard-*.tar.gz /usr/local/zstack/apache-tomcat-7.0.35/webapps/zstack/WEB-INF/classes/tools/ *拷贝到tomcat里*
$ /etc/init.d/zstack-dashboard stop *关闭dashboard*
$ zstack-ctl install_ui *安装dashboard*
$ /etc/init.d/zstack-dashboard start
启动dashboard
2.zstack-utility
由于我对于这一部分的扩展,主要是对angent的扩展,因此如果你需要开发一个新的agent,如kvmagent,Xenagent等等,可以参考一下。假设现在需要开发自己的kvmagent。更新步骤如下:
请将新agent的xml文件添加至zstack.xml(位于[ZStack]/conf/springconf/zstack.xml)
Class1.假如是修改原有agent
假如修改了原有已有的agent,如kvm agent,只需要把修改后的代码压缩,命名和原来相同的名字,然后替换调tomcat里的包即可。如原来的名字是kvmagent-1.6.tar.gz。=
$cp kvmagent* /usr/local/zstack/apache-tomcat-7.0.35/webapps/zstack/WEB-INF/classes/ansible/kvm/
Class2.添加新agent
如需添加新的agent,如Aliyun agent。
Step1:
进入该agent目录进行编译,在agent目录下的dist下面会生成该agent压缩包。
Step2:
安装
$ . /var/lib/zstack/virtualenv/aliyun/bin/activate
$ cd [ZStack-utility]/aliyunagent/dist
$ pip install --upgrade aliyunagent-1.6.tar.gz
运行$ . /var/lib/zstack/virtualenv/aliyun/bin/activate
$ cd /var/lib/zstack/virtualenv/aliyun/lib/python2.7/site-packages/aliyunagent
$ python -c "from aliyunagent import kdaemon; kdaemon.main()" start
$ cat /var/log/zstack/zstack-aliyunagent.log
3.zstack
java部分的修改,暂时需要将全部重新编译,生成安装包重新安装。(可能也不用,maybe可以直接编译生成war包,放入tomcat里运行)。
Debug 调试
准备
1.关闭zstack
在运行ZStack的物理机上关闭ZStack
$ zstack-ctl stop
2.使用JPDA
这里因为我的调试方式是remote debug,因此需要使用tomcat的jpda功能。
$ cd /usr/local/zstack/apache-tomcat -7*/bin
$ ./catalina.sh jpda run
当最终出现start ** in xxms时,启动成功
3.运行Web UI
$ zstack-ctl start_ui
调试
Step1:
导入代码,将代码中的zstack以maven文件的形式导入eclipse中
Step2:
在代码中需要的地方打上断点
Step3:
使用eclipse remote debug调试
- eclipse- > debug- > debug configuration- > Remote java application
选中有断点的子项目,输入IP,端口默认8000,确定
Step4:
操作Web UI,触发断点,在eclipse中调试
maven使用