Jump to: navigation, search

Interns/Summer 2016

Summer 2016 Interns

ODL Summit 2016

Intern Name Project Mentor Location (Country / City)
Xinghao Gu
Resume | LinkedIn
Documentation Toolchain Improvements
Git | Documentation | Wiki/Blog/Other
Colin Dixon USA/Chicago,China/Nanjing
Kien Ha
Resume | LinkedIn
Improve Jenkins Plugins Support
Git | Documentation | Wiki/Blog/Other
Thanh Ha
Andrew Grimberg
Canada / Ottawa
Kumar Rishabh
Resume | LinkedIn
Longevity Test Framework for OpenDaylight
Git | Documentation | Wiki/Blog/Other
Luis Gomez India/Hyderabad
Akshita Jha
Resume | LinkedIn
Create OpenDaylight .deb Package
Git | Documentation | Wiki/Blog/Other
Daniel Farrell, Stephen Kitt India / Hyderabad
Ashish Kumar
Resume | LinkedIn
JSON Generator for Robot Testing
Git | Documentation | Wiki/Blog/Other
Vina Ermagan
Lori Jakab
India / Hyderabad
Rohit Sakala
Resume | LinkedIn
Release Dashboard
Git | Documentation | Wiki/Blog/Other
George Zhao India / Hyderabad
Priyank Shah
Resume | LinkedIn
Integrating Snort IDS with ODL
Git | Documentation | Wiki/Blog/Other
Brendan Scarvell U.S.A / Rochester
Qing Wang
Resume | LinkedIn
Rest request load balancer for OpenStack and 3 Node OVSDB Cluster Deployment
Git | Documentation | Wiki/Blog/Other
Anil Vishnoi USA / Clemson
José Luis Izquierdo Zaragoza
Resume | LinkedIn
NEMO APP
Git | Documentation | Wiki/Blog/Other
An Ho
Tianran Zhou
Spain / Cartagena
Sushant Patil
Resume | LinkedIn
Internet of Things (IoT) using USC
Git | Documentation | Wiki/Blog/Other
An Ho USA/College Park
Girish Sukhatankar
Resume | LinkedIn
Vagrant Tutorials
Git | Documentation | Wiki/Blog/Other
Daniel Farrel
Phil Robb
 ?
Vamsi Viswanadha
Resume | LinkedIn
Vagrant Tutorials
Git | Documentation | Wiki/Blog/Other
Daniel Farrel
Phil Robb
U.S.A / Boulder
Mark Castellani
Resume | LinkedIn
User Experience and Marketing
Git | Documentation | Wiki/Blog/Other
Alan Sardella
Melissa Logan
 ?

2016 Intern Demos

2016 Intern Stories

2016 Project Proposals

Jenkins Job Builder - Improve Jenkins Plugins Support

  • Title: Enhance JJB support for Jenkins Plugins used by OpenDaylight and other LF projects
  • Description: OpenDaylight uses Jenkins Job Builder to manage Jenkins jobs. This project's purpose is to evaluate all plugins used by OpenDaylight are up to date in regards to JJB support. A successful student will be expected to:
    • Evaluate Jenkins Plugins used by OpenDaylight for level of current support
    • Enhance JJB with new features needed by both OpenDaylight community as well as upstream community
    • Participate in code review in JJB as well as OpenDaylight's releng/builder projects
    • Reach out to the community for ideas and opinions on new features
    • Actively participate with the community in IRC and mailing lists
  • Additional Information:
  • Desirable Skills:
    • Python
  • Expected Outcome: JJB Support for Jenkins plugins should be improved overall. A successful student will provide a status report at the end of the internship detailing all of the changes made to JJB during their term.
  • Difficultly: Easy
  • Mentors: Thanh Ha <thanh.ha@linuxfoundation.org>, Andrew Grimberg <agrimberg@linuxfoundation.org>
  • Additional Contacts:
    • dev@lists.opendaylight.org with topic [releng]
    • #opendaylight-releng @ irc.freenode.net
    • #openstack-infra @ irc.freenode.net

JSON Generator for Robot Testing

  • Title: Test tool to generate JSON input for robot testing
  • Description: OpenDaylight uses robot test framework for testing OpenDaylight services. Services are mostly exposed over REST API. This project proposes to automate the process of building JSON files for testing by providing "builder" like code that can be called to generate the desired JSON with default or variable data.
  • Additional Information:
  • Desirable Skills: Python, Robot will be a plus
  • Expected Outcome: Code that can be used to generate test case JSON samples on the fly for robot testing. Code must be tested, and committed to OpenDaylight Git repository.
  • Difficultly: Medium
  • Mentors: Lori Jakab <lojakab@cisco.com>, Vina Ermagan <vermagan@cisco.com>
  • Additional Contacts:
    • lispflowmapping-dev@lists.opendaylight.org
    • #opendaylight-lispflowmapping@irc.freenode.net

Release Dashboard for OpenDaylight

  • Title: Release Dashboard for Opendaylight
  • Description: Release Dashboard is to continue last summer's work, the goal for RD for ODL is to use RESTful API provided by Bugzilla, Sonar, JaCoCo to collect dashboard information such as: opening bugs, how many bugs closed weekly, bugs trend, unit test coverage, system test status, the purpose is to give a glance of view of project's quality. Last summer, a brief framework is done, however, it is not reached to a stage that can be used by community.
    • Focus on functions, it will be great plus if can do UI presentation.
    • Understanding of software development and release cycle.
    • Reach out to the community for ideas and opinions on new features
    • Actively participate with the community in IRC and mailing lists
  • Additional Information:
  • Desirable Skills:
    • Java, Python, node.js, javascript, web development.
  • Expected Outcome: A dashboard can provide a glance view for current ODL projects at a glance.
  • Difficultly: Medium
  • Mentors: George Zhao <gzhao.opendaylight@gmail.com>
  • Additional Contacts:
    • integration-dev@lists.opendaylight.org
    • release@lists.opendaylight.org

Create OpenDaylight .deb Package

  • Title: Create OpenDaylight .deb Package
  • Description: One of the goals of OpenDaylight's Integration/Packaging project is to provide upstream ODL installation options. Int/Pack currently provides an RPM, which is consumed by configuration management tools like Puppet and Ansible, which are in turn consumed by Packer for building Vagrant base boxes and Docker containers. Note that the root of that entire delivery tree is an RPM. To support Ubuntu installs, the puppet-opendaylight project skips the RPM and uses ODL's tarball release artifacts directly. This is a hack that adds significant complications and maintenance costs. If ODL upstream provided .deb packages, that hack could be removed and the rest of the pipeline would be easier to implement for Ubuntu-like OSs.

Primary goals:

Stretch goals:

  • Additional Information: See links embedded in the description.
  • Desirable Skills:

Required:

  • Strong Linux skills.
  • Ability to learn.

Nice-to-have:

  • Python, Bash and Ruby (mostly scripting) experience.
  • Experience with any of the tools mentioned above.
  • Ability to work in upstream open source communities.
  • Expected Outcome:

Required:

  • OpenDaylight .deb packages can be built in a fully reproducible, highly automated way.
  • OpenDaylight's .deb package ships with support for managing ODL's system service.
  • A working VM that installs ODL via a .deb is included in vagrant-opendaylight.
  • Everything is well-documented and cleanly built.

Stretch:

  • See stretch goals in description.
  • Difficultly: Hard
  • Mentors: Daniel Farrell <dfarrell@redhat.com>
  • Additional Contacts:
    • integration-dev@lists.opendaylight.org
    • #opendaylight-integration IRC channel on Freenode

Rest request load balancer for OpenStack and 3 Node OVSDB Cluster deployment

  • Title: Explore and evaluate available open source solutions for load balancing the rest requests between OpenStack and 3 Node Ovsdb Cluster environment.
  • Description: OpenStack neutron service is being tested with single node of OpenDaylight controller. To test OpenStack neutron service with 3 or more node OpenDaylight cluster, it requires an entity between OpenStack and OpenDaylight that can route the rest request from OpenStack to one of the controller node running in cluster. It should have a functionality that can determine whether specific node is up or not, not just by checking the connectivity to the VM/Machine that is running the controller but to check the health of the service that is serving the openstack neutron rest request. There are many open source options available that can be used here. Main aim of this work would be
    • Evaluate all the available open source solution and evaluate them based on the requirements
    • Deploy the solution (might require development work) in OpenStack + OpenDaylight environment
    • Do performance and scale testing with OpenStack + 3 node controller cluster to evaluate the rest request/second these solution can serve. (Stability is other evaluation criteria as well)
      • This work might require to write a neutron service enumlator/simulator to fire rest request at high rate.
    • Stretch goal includes performance and scale testing of OpenStack + 3 node cluster solution with large number of compute nodes to come up with estimate number of nodes that OpenDaylight (Ovsdb) supports.
  • Desirable Skills: Java programming with working knowledge of OpenStack Neutron and the principals behind SDN, Openflow, and network overlays. Python/scripting knowledge is required.
  • Expected Outcome:
    • Publish a research report that will recommend the open source solution to deployment with OpenStack + OpenDaylight environment. Report will also publish the performance and scale testing numbers.
    • DevOps tool developed during this research work
      • Automate deployment of OpenStack + OpenDaylight + Proxy Load Balancer.
      • Simulator/Emulator for OpenStack neutron service
  • Difficultly: Medium
  • Mentors: Anil Vishnoi <vishnoianil@gmail.com>
  • Additional Contacts: irc : #opendaylight-ovsdb | Anil Vishnoi (Irc : vishnoianil)

Documentation Toolchain Improvements

  • Title: Add sane HTML output as well as cross-project documentation imports.
  • Description: As it stands we have a documentation toolchain based on what exists in OpenStack using AsciiDoc as the format and the maven asciidoctor plugin to produce PDFs and HTML documentation for OpenDaylight. However the HTML is highly disjointed with one page per subsection or subsubsection and the HTML produced isn't consistent with the style theme of other web content for OpenDaylight.
    The goal of this project is to produce good-looking, HTML content from our AsciiDoc source by either adopting new style guidelines or preferably by modifying our toolchain. Specifically this is likely to involve:
    • Discerning how we have modified OpenStack's documentation toolchain and how we use it differently.
    • Based on that, figure out how we can avoid having content split into hundreds and thousands of tiny HTML pages when we generate it and instead generate better-congealed content.
    • Establish how to theme and publish the HTML content into the OpenDaylight website so others can access continuously built documentation.
    • Stretch goals include integrating with other documentation production such as maven sites, Javadoc, and swagger REST documentation as well as working to help import AsciiDoc source across git repositories.
  • Desirable Skills: Java, Maven, HTML, AsciiDoc
  • Expected Outcome:
    • Reasonably HTML formatted documentation from our AsciiDoc sources
    • Themed and continuously published HTML docs to the OpenDaylight website somewhere, e.g., Nexus
    • Stretch goals
      • Remote import of documentation sources.
      • Integration with other automatically produced documentation including Javadoc, Maven sites, and swagger REST docs
  • Difficultly: Medium
  • Mentors: Colin Dixon <colin@colindixon.com> IRC: colindixon
  • Additional Contacts:
    • Thanh Ha <thanh.ha@linuxfoundation.org> IRC: zxiiro
    • Mathieu Lemay <mlemay@inocybe.com> IRC: mlemay

Longevity Test Framework for OpenDaylight

  • Title: Longevity Test Framework for OpenDaylight
  • Description: Our Continuous Integration uses Jenkins + Robot Framework to provide different flavors of system test: feature test, scalability, performance, etc... In the context of the existing test framework we would like to create some resources and good practices for setting up a long duration test regadless of the feature under test. The expected work (not neccesarily in the order below) would be something like:
    • Explore tools (Jconsole, java profilers, karaf decanter) for monitoring JVM resources (CPU, memory, etc...) during test execution.
    • Create a robot library to leverage JVM monitoring tools (start data collection, stop data collection, present data).
    • Design a long duration (deterministic, random) robot based test for one of the features in ODL.
    • Create a robot library with generic longevity test resources.
    • Create a guide (wiki) for setting up a longevity test in ODL.
  • Additional Information:
  • Desirable Skills: Robot Framework, Python, bash scripts, Linux, JVM
  • Expected Outcome:
    • Robot Library with utils for JVM monitoring
    • Robot Library with generic longevity test resources.
    • Sample of longevity test running in CI.
    • Documentation (wiki) on how to set a longevity test in ODL.
  • Difficultly: Medium
  • Mentors: Luis Gomez <ecelgp@gmail.com> IRC: LuisGomez
  • Additional Contacts: Integration group <integration-dev@lists.opendaylight.org>

Internet of Things (IoT) using USC

  • Title: Internet of Things using USC
  • Description: Unified Secure Channel (USC) is a Software Defined Networking (SDN) component that enables secure and high performance communication between SDN controllers and network elements across wide area networks. By establishing a unified secure tunnel, USC facilitates secure and reliable management and control of various devices, including network devices, cloud gateways, IoT devices. Out of the box, USC provides call-home, mutual authentication, and protocol multiplexing. In this project, Interns will create a demo using USC to communicate with IoT elements.
  • Desirable Skills: Java, Channels, Netty, AMPQ, MQTT
  • Expected Outcome:
    • Demo using USC for secure communication with IoT devices
  • Difficultly: Hard
  • Mentors: An.Ho <an.ho@huawei.com> IRC: anipbu
  • Additional Contacts: USC Mailing List <usc-dev@lists.opendaylight.org>

NEMO APP

  • Title: NEMO APP
  • Description: NEMO language is a domain specific language for the abstraction of network models and operation patterns. It provides NBI in the form of an intuitive language. Instead of tons of abstruse APIs, with limited number of key words and expressions, the NEMO language enables network users/applications to describe their demands for network resources, services and logical operations in an intuitive way. In this project, interns will be asked to write a sample app using the NEMO DSL to configure and control network elements.
  • Desirable Skills: Java
  • Expected Outcome:
    • Demo using NEMO DSL
  • Difficultly: medium
  • Mentors: An.Ho <an.ho@huawei.com> IRC: anipbu, Tianran Zhou <zhoutianran@huawei.com> IRC: zhoutianran
  • Additional Contacts: NEMO Mailing List <nemo-dev@lists.opendaylight.org>

Vagrant Tutorials

  • Title: Vagrant Tutorials
  • Description: One of the OpenDaylight community’s goals for our next (Boron) release cycle is to improve usability for end users. As a part of that effort, OpenDaylight would like to hire 3 interns to create running-code tutorials. The tutorials will be end-user, not developer focused. They will be Vagrant-based, building on the Vagrant base boxes (https://atlas.hashicorp.com/opendaylight/boxes/odl) provided by the OpenDaylight Integration/Packaging project and doing additional tutorial-specific configuration to prepare a running, ready-to-learn environment via a simple `vagrant up`. Documentation to walk the user through the tutorial, as well as good in-code documentation, will be created.

Primary Goals Create working, ready-to-run Vagrant-based environments configured for end user tutorials. The upstream OpenDaylight community will help with selecting relevant tutorials and with getting them running. An example of such a tutorial would be an OpenFlow example using OpenDaylight and Mininet to execute a learning-switch application. Create documentation to walk the user through the tutorials as well as good in-code documentation. Stretch Goals Document the process of creating tutorials so others can easily add their own.

  • Desirable Skills:
    • Required:
    • Strong Linux skills
    • Working knowledge of Vagrant
    • Ability to create clear, useful documentation
    • Ability to work in an upstream open source community
    • Ability to learn new tools quickly
    • A good Internet connection (will be required to pull big artifacts frequently)
      • Nice to have:
      • Experience with OpenDaylight, Mininet, Packer, Ansible, and a virtual machine environment such as VirtualBox
  • Difficulty: Medium
  • Mentors: Daniel Farell