CloudStack Google Summer of Code Projects: SDN, LDAP
The Cloud Zone is brought to you in partnership with Mendix. Better understand the aPaaS landscape and how the right platform can accelerate your software delivery cadence and capacity with the Gartner 2015 Magic Quadrant for Enterprise Application Platform as a Service.
Originally posted by Sebastien Goasguen
Google Summer of Code is entering the final stretch with pencil down on Sept 16th and final evaluation on Sept 27th. Of the five projects CloudStack had this summer, one failed at mid-term and one led to committer status couple weeks ago. That's 20 percent failure and 20 percent outstanding results. This is on par with GSoC wide statistics I believe.
The LDAP integration has been the most productive project. Ian Duffy a 20-year-old from Dublin did an outstanding job, developing his new feature in a feature branch, building a Jenkins pipeline to test everything and submitting a merge request to master a couple weeks ago. With 90 percent unittest coverage, static code analysis with Sonar in his Jenkins pipeline and automatic publishing of rpms in a local yum repo, Ian exceeded expectation. His code has even been backported already to the 4.1.1 release with the CloudSand distro of CloudStack.
The SDN extension project was about taking the native GRE controller in CloudStack and extending it to support XCP and KVM. Nguyen from Vietnam has done an excellent job quickly adding support for XCP thanks to his expertise with Xen. He is now putting the final touches on KVM support and building L3 services with OpenDaylight. The entire GRE controller was re-factored to be a plugin similar to the Nicira NVP, Midonet and BigSwitch BVS plugin. While native to CloudStack, this controller brings another SDN solution to CloudStack. I expect to see his merge request before pencil down for what will be an extremely valuable project.
While the CloudStack UI is great, it was actually written as a demonstration of how the CloudStack API could be used to build a user-facing portal. With the "new UI" project, Shiva Teja from India used Bootstrap and Angular to create a new UI. Originally, the project suggested using Backbone but, after feedback from the community, Shiva switched to using Angular. Shiva's efforts are to be commended as he truly worked on his own with inconsistent network connectivity and no local mentoring. Shiva, a bachelor's student, had to learn Bootstrap, Angular and also Flask on his own. It looks like his hard work is paying off -- he's interviewing with Amazon and Goole for internships next summer. His code being independent of the CloudStack code has been committed to master in our tools directory. This creates a solid framework for others to build on and create their own CloudStack UI.
Perhaps the most research-oriented project has been the one from Meng Han from Florida. This was no standard coding project -- not only did it require learning new technologies (aside from CloudStack) but it also required investigation of the Amazon EMR API. Meng had to implement EMR in CloudStack using Apache Whirr. Whirr is a java library for provisioning of virtual machines on cloud providers. Whirr uses Apache jclouds and can interact with most cloud providers out there. Meng developed a new set of CloudStack APIs to launch Hadoop clusters on-demand. At the start, she had to learn CloudStack and install it, then learn the Whirr library and subsequently create a new API in CloudStack that would use Whirr to coordinate multiple node deployments. Meng's code is working but still a bit short from our goal of having an AWS EMR interface. This is partly my fault as this project could have required more mentoring. In any case, the work will go on and I expect to see an EMR implementation in CloudStack in the coming months.
All students faced the same challenge, not a code writing challenge but the OSS challenge and specifically learning the Apache Way. Apache is about consensus and public discussions on the mailing list. With several hundred participants every month and very active discussion, the shear amount of email traffic can be intimidating. Sharing issues and asking for help on public mailing lists is still a bit frightening. IRC, intense emailing, JIRA and Git are basic tools used in all Apache projects, but seldom used in academic settings. Learning these development tools and participating in a project with more than a million lines of code was the toughest challenge for students and the goal of GSoC. I am glad we got five students to join CloudStack this summer and tackle these challenges, if anything it is a terrific experience that will benefit their own academic endeavors and later their careers. Great job Ian, Meng, Nguyen, Shiva and Dharmesh! We are not done yet but I wish you all the best.