Bartosz Michalik, Amartus Donald Hunter, Cisco OpenDaylight LSO Presto – Network Resource Provisioning LSO Hackathon Bartosz Michalik, Amartus Donald Hunter, Cisco
What Is This Project? We are hacking on the OpenDaylight Unimgr project An implementation of the LSO Presto Network Resource Provisioning API A domain controller for physical and virtual infrastructure Activate connectivity services across multi-vendor devices Pluggable device activation drivers
Unimgr
Unimgr status Implementation of the recent NRP yang models Basic topology exposure Point-to-point services via underlying drivers Request decomposition Drivers selection mechanism Connectivity model update
Hackathon Opportunities OpenDaylight Boron based development Multipoint services implementation Brainstorming and implementation of erroneous cases Technology / vendor device drivers Reimplement bandwidth-profile capability to device drivers Implementation of remaining RPC for NRP OpenDaylight integration work Using Opendaylight as blackbox Support PNDA work Supporting Legato activation works
Developer Skills Java development with OSGi OpenDaylight MD-SAL Vendor API expertise YANG schema models
Developer Tools Required Useful Java – OpenJDK 8, Oracle JDK 8_45 or later Maven – with OpenDaylight specific settings.xml Useful Eclipse – Preferred IDE for OpenDaylight development Papyrus – UML modelling environment for MEF NRP model pyang – YANG model validation and YANG to Swagger Postman – Good for driving OpenDaylight NBI
Introduction to OpenDaylight
Introduction to OpenDaylight We are based o OpenDaylight Boron Documentation available at: http://docs.opendaylight.org/en/stable-boron/developer- guide/index.html https://github.com/donaldh/unimgr.git Branch frankfurt-boron
Running OpenDaylight $ tar xf distribution-karaf-0.5.0-Boron.tar.gz $ cd distribution-karaf-0.5.0-Boron/ $ ./bin/karaf ________ ________ .__ .__ .__ __ \_____ \ ______ ____ ____ \______ \ _____ ___.__.| | |__| ____ | |___/ |_ / | \\____ \_/ __ \ / \ | | \\__ \< | || | | |/ ___\| | \ __\ / | \ |_> > ___/| | \| ` \/ __ \\___ || |_| / /_/ > Y \ | \_______ / __/ \___ >___| /_______ (____ / ____||____/__\___ /|___| /__| \/|__| \/ \/ \/ \/\/ /_____/ \/ Hit '<tab>' for a list of available commands and '[cmd] --help' for help on a specific command. Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight. opendaylight-user@root>
Managing Features When karaf starts, there are no OpenDaylight features installed Use feature:install to add features – usually odl-*-all opendaylight-user@root>feature:list | grep dlux odl-snbi-dlux | 1.2.1-Boron | odl-snbi-1.2.1-Boron | OpenDaylight :: SNBI :: Dlux odl-dlux-all | 0.4.0-Boron | odl-dlux-0.4.0-Boron | Opendaylight dlux all features odl-dlux-core | 0.4.0-Boron | odl-dlux-0.4.0-Boron | Opendaylight dlux minimal feature odl-dlux-node | 0.4.0-Boron | odl-dlux-0.4.0-Boron | Enable nodes in Opendaylight dlux odl-dlux-yangui | 0.4.0-Boron | odl-dlux-0.4.0-Boron | Enable Yang UI in Opendaylight dlux odl-dlux-yangvis | 0.4.0-Boron | odl-dlux-0.4.0-Boron | Enable Yang visualizer in dlux opendaylight-user@root>feature:install odl-dlux-all opendaylight-user@root>
http://localhost:8181/index.html – admin/admin
Diagnostics OpenDaylight console has useful diagnostic commands bundle :update :start :stop :diag :list Log :display :tail web:list http:list
Adding NETCONF Devices opendaylight-user@root>feature:install odl-netconf-topology POST /restconf/config/network-topology:network-topology/topology/topology-netconf Content-Type: application/xml <node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>{node-name}</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">{ip-addr}</host> <port xmlns="urn:opendaylight:netconf-node-topology">{port-num}</port> <username xmlns="urn:opendaylight:netconf-node-topology">{device-username}</username> <password xmlns="urn:opendaylight:netconf-node-topology">{device-password}</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">0</keepalive-delay> </node>
Anatomy of an OpenDaylight Project An OpenDaylight plugin is a maven project unimgr – the parent project presto-api, – data / api model for the project – in YANG legato-api nrp-api – NRP yang models impl – module that implements unimgr cisco-xr-driver, – driver implementations ovs-driver, cisco-xe-driver, … cli – module that provides command-line interface features – creates a karaf feature to package everything karaf – creates a custom OpenDaylight karaf distribution
Activation Framework A framework for easily adding device activation drivers Drivers packaged separately from Uni Manager Vendors can implement own activation driver Existing drivers for OVS, Cisco XR, Cisco XE We welcome vendor particpation