SDN-R microservices in ONAP Dublin/El Alto are compiled in gerrit since first version of 0.4.2 for Opendaylight Flourine SR2.
If there is the need to run this services in Opendaylight Flourine SR1 environment the adaption can be done in a few simple steps, that are descirbed here.
Test environment for creating and running docker container is located here: https://github.com/onap-oof-pci-poc/ccsdk/tree/master/distribution/odlwt-alpine-standalone-0.4.1-SNAPSHOT
ONAP to ODL Dependency Background
The parent used in the pom file for a CCSDK feature is defining the Opendaylight Version that is targeted as run time environment. The interfaces provided by an Opendaylight main version, like Flourine, are not changed from one SRn to SRn+1.
If the feature needs to be executed by using a different opendaylight version, all pom.xml need to be adjusted and the features need to be compiled. That's it.
The artifacts version number should be use the schema from table below to prevent confusion.
Artifacts version number | Parents version number | Target ODL Version |
---|---|---|
0.4.1/0.4.1-SNAPSHOT | 1.2.1/1.2.1-SNAPSHOT | Flourine SR1 |
0.4.2/0.4.2-SNAPSHOT | 1.2.2/1.2.2-SNAPSHOT | Flourine SR2 |
0.5.0/0.5.0-SNAPSHOT | 1.3.0/1.3.0-SNAPSHOT | Flourine SR2 |
0.5.0/0.5.0-SNAPSHOT | 1.3.1/1.3.1-SNAPSHOT | Flourine SR2 |
Example for adapting to a different Opendaylight version
Prerequ:
- Server with Ubuntu with development setup for ONAP with access to ONAP Nexus.
Example uses:
- onap microservice: ccsdk/features:sdnr/wt
- artifact version/parent version: 0.4.2-SNAPSHOT with 1.2.2-SNAPSHOT
- Target version is: 0.4.1-SNAPSHOT/1.2.1-SNAPSHOT
Steps to create a Flourine SR1 Version, by example for using 0.4.2-SNAPSHOT.
- Clone gerrit ccsdk/feature repository to features
- Copy recurse sdnr/wt tree into new sdnr/wt-0.4.1 directory
- Change the version numbers in th pom files accordingly
- Compile the microservice that the result is in local .m2 repository for related use
- in .m2/repository under org/onap/ccsdk/features/sdnr/wt the bundles are now available with version 0.4.1-SNAPSHOT
- All bundles are included into sdnr-wt-feature-aggregator. See dependency below.
<dependency> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> <artifactId>sdnr-wt-feature-aggregator-installer</artifactId> <version>0.4.1-SNAPSHOT</version> <classifier>repo</classifier> <type>zip</type> </dependency>
Related command sequence
Example with Ubuntu and bash, ONAP dev environment.
As a check use grep command with the version numbers to replace and verify if the list contains the elementes expected:
grep "<version>1\.2\.2-SNAPSHOT</version>" $(find . -name pom.xml) grep "<version>0\.4\.2-SNAPSHOT</version>" $(find . -name pom.xml)
Replacing the version number:
cd ~ git clone git clone https://gerrit.onap.org/r/ccsdk/features cd features/sdnr/wt cp -r wt wt-0.4.1 cd wt-0.4.1 sed -i 's#<version>1.2.2-SNAPSHOT</version>#<version>1.2.1-SNAPSHOT</version>#g' $(find . -name "pom.xml") sed -i 's#<version>0.4.2-SNAPSHOT</version>#<version>0.4.1-SNAPSHOT</version>#g' $(find . -name "pom.xml") mvn clean install
Create and run a Wireless transport micro services (wt) Container
Refering to github repository https://github.com/onap-oof-pci-poc/ccsdk with distribution/odlwt-alpine-standalone-0.4.1-SNAPSHOT
This distribution uses the ONAP ODL image "onap/ccsdk-odl-fluorine-alpine-image" to create the ONAP WT Container.
- Container image versin 0.4.1-SNAPSHOUT with OpenDaylight Flourine SR1
- There is no dependency to other ONAP Containers.
- This version is including 0.4.1-SNAPSHOT features.
Configuration used by this container
- Linux alpine as OS
- ODL as single node or cluster node
- Added bundles are Repository: 'ccsdk/features'/sdnr
- ENTRYPOINT /opt/onap/ccsdk/bin/startSdnr.sh
- ODLUX Login: - ODL Default is user here: admin/admin
Creation of 0.4.1-SNAPSHOUT Version for ODL Flourine SR1
The ONAP Dublin parents 1.2.1-SNAPSHOT and 1.2.1 are creating the bundles for ODL Flourine SR1. Parents with higher version number are creating bundles for ODL Floutine SR2.
Prerequ: Ubuntu with development setup for ONAP with access to ONAP Nexus.
Steps to create a Flourine SR1 Version, by example for using 0.4.2-SNAPSHOT:
cd features/sdnr/wt
cp -r wt wt-0.4.1
cd wt-0.4.1
sed -i 's#<version>1.2.2-SNAPSHOT</version>#<version>1.2.1-SNAPSHOT</version>#g' $(find . -name "pom.xml")
sed -i 's#<version>0.4.2-SNAPSHOT</version>#<version>0.4.1-SNAPSHOT</version>#g' $(find . -name "pom.xml")
Hint: It could occur that the versin number is used by something in the pom.xml. As a check use grep command with the version numbers to replace:
grep "<version>1\.2\.1-SNAPSHOT</version>" $(find . -name pom.xml)
Compile features and create image
After changing the version numbers a private build is required of "wireless transport" features for version "0.4.1-SNAPSHOT".
cd features/sdnr/wt
mvn clean install
Create image with
cd distribution/odlwt-alpine-standalone-0.4.1-SNAPSHOT
mvn clean install -P docker
HINT: ONAP/Nexus does contain also a bundle with such a version number. This version is used as default if no compilation was done. Indication is such error: "[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.16.5:build (generate-images) on project distribution-odlwt-alpine: Unable to build image [oof-pci/ccsdk-odlwt-alpine-image]: COPY failed: stat /var/lib/docker/tmp/docker-builder864199067/preload.cache.schema: no such file or directory -> [Help 1]"
Parameters
- SDNRWT true|false
- Switch on the SDNRWT feature.
Cluster specific
- Node index, provided via host-name
- Format name-n
- n defines the host index. Starts with 0 .. N-1. Index of the cluster node that is started.
- --env SDNC_REPLICAS=n
n Number of cluster members.
- --env PEERODLCLUSTER="true"
Set to any value for non GEO redundant setup.
- --env ENABLEODLCLUSTER="true"
- Mandatory to enable cluster configuration
Examples
Start single node
docker run imageName
Start three node clusters
docker run imageName --env NODE_INDEX="1" --env NODE_LIST="10.42.167.43 10.42.168.2 192.168.178.65"
docker run imageName --env NODE_INDEX="2" --env NODE_LIST="10.42.167.43 10.42.168.2 192.168.178.65"
docker run imageName --env NODE_INDEX="3" --env NODE_LIST="10.42.167.43 10.42.168.2 192.168.178.65"
Reference
Opendaylight cluster configuration
Container ports
docker run --detach --publish 8181:8181 --name sdnr "$IMAGE"
Version references
Import during compile is to have the same mdsal version inuse that is also provided by the Opendaylight/Karaf OSGi system.
If the Opendaylight Version name is known, e.g. Flourine/SR2 the related mdsal api information can be found by github opendaylight repository in the pom that is creating this API. This repository contains the names of the opendaylight versoin as Tag or Branch. It is located here: https://github.com/opendaylight/mdsal/blob/release/fluorine-sr3/binding/mdsal-binding-api/pom.xml . The artifact <version> is the version number that is also visible with karaf/opendaylight/client under feature:list and used by a specific ODL Version.
In ONAP/ccsdk the same versoin number is specified in via parent pom.xml by the <odl.mdsal.version>2.5.2</odl.mdsal.version> parameter.
In the example above all this version numbers should show 2.5.2 and the world is OK.