最近由于继续做在职研究生的毕业论文,在openstack上下了一些功夫,做了一个基于openstack的弹性扩展的小程序,中间需要调用Ceilometer的API接口对虚拟机的cpu使用效率做监控。试用了几乎所有的openstack的java API开发包,其中jclouds没有Ceilometer的API接口,openstack-java-sdk的Ceilometer支持很差,基本无法使用,所有最终选择了openstack4j。它的API还是比较好用,底层用了jersey。但是在调用Ceilometer的时候遇到了一个小小的bug(https://github.com/gondor/openstack4j/issues/24),Ceilometer的REST API接口返回了XML格式的结果,导致程序无法自动匹配模型类的属性。几经debug找到了问题的罪魁祸首,原因是源代码中WebTarget.request();没带参数,无法设置请求头中的Accept属性。
我修改了一行代码,加入了target.request(MediaType.APPLICATION_JSON);代码,并且进行了pull,等了一天多,
德国狂虐了巴西7:1,openstack4j的作者gondor 把我的代码merged到了master,算是第一次成功提交了代码。(https://github.com/gondor/openstack4j/pull/25)。在这里贴一个图纪念一下,以后有能力要继续为社区提交更多的代码。
纪念我第一次为开源社区贡献的代码,布布扣,bubuko.com
原文地址:http://blog.csdn.net/xxfigo/article/details/37602365