# Developing a ODLUX application ## Prerequisites * Node: 8.10 or higher * Yarn: 1.12.3 or higher * Lerna: 3.10.7 or higher You can install these globally or let it be installed by maven due "mvn clean install" * Maven: 3 or higher * Java: 8 or higher ## Dev-Environment Installation * install NodeJS LTS https://nodejs.org/en/ or via packetmanager * sudo npm install -g yarn * sudo yarn global add lerna * get framework from repository: git clone https://gerrit.onap.org/r/ccsdk/features * in features/sdnr/wt/odlux you find a structure like this: ``` odlux |-apps |-core |-framework ``` * go to features/sdnr/wt/odlux/apps and create your app: ``` mvn archetype:generate -DarchetypeGroupId=org.onap.ccsdk.features.sdnr.wt \ -DarchetypeArtifactId=odlux-app-archetype \ -DgroupId= \ -DartifactId= \ -Dversion= \ -DappName= ``` * your start folder for your web application is src/ * in src2/main/java are located the Java files and in src2/main/resources/ is the blueprint located * with ```yarn start``` you can run your application due runtime in your application folder * by default this will run on http://localhost:3100/index.html * if you have added new dependencies you have to run ```lerna bootstrap``` in odlux/ * build your app for development version you can use ```yarn run build``` or ```yarn run build:dev``` * build for karaf with ```mvn clean install``` ## Including app into karaf environment * copy maven repository files to karaf repository e.g.: ```cp ~/.m2/repository/path/of/groupId/artifactId $KARAF_HOME/system/path/of/groupId/``` * check if odlux-core is started in karaf console: ```feature:list | grep odlux``` * if not install: ```sdnr-wt-odlux-core-feature``` * start your app in karaf console: ```bundle:install -s mvn://``` ## Including into ONAP sdnc docker container * add maven module to odlux/pom.xml * add dependency to odlux/apps/app-feature/pom.xml and odlux/apps/app-installer/pom.xml * build odlux/pom.xml * this will automatically package your app into the packaged zip file of the installer ## Details ### Default menu positions * from 0 for top to 999 for bottom. ``` 0 Connect 10 Fault 20 Maintenance 30 Configuration 40 Protection 50 Performance 60 Security 70 Inventory 80 Topology 90 Mediator 100 Help ``` ### blueprint.xml ``` ``` * bundleName defines the applicationName => default javascript file: .js * index defines the menu position. ### MyOdluxBundle.java * is just for getting access to the resources of its bundle (implemented because of OSGi access restrictions) ### pom.xml ``` org.onap.ccsdk.parent odlparent 1.2.1-SNAPSHOT 4.0.0 org.onap.ccsdk.features.sdnr.wt sdnr-wt-odlux-app-demoApp 0.4.1-SNAPSHOT bundle sdnr-wt-odlux-app-demoApp Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 ${project.groupId} sdnr-wt-odlux-core-model ${project.version} ${project.groupId} sdnr-wt-odlux-core-provider ${project.version} test junit junit test src2/main/java maven-clean-plugin dist false node false node_modules false ../node_modules false org.codehaus.mojo build-helper-maven-plugin add-test-source generate-test-sources add-test-source src2/test/java com.github.eirslett frontend-maven-plugin 1.8-SNAPSHOT install node and yarn install-node-and-yarn initialize v8.10.0 v1.12.3 yarn build yarn run build org.apache.maven.plugins maven-jar-plugin org.apache.felix maven-bundle-plugin true org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.* dist odlux src2/main/resources src2/test/resources highstreet repo https://cloud-highstreet-technologies.com/mvn/ true always your ``` * a modified frontend-maven-plugin installs node, yarn and (optionally lerna) to compile the typescript sources to javascript. These will be build into the dist folder.