aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/README.md
blob: 6e5d5965b24bca059db862f5bfb0da73c46f44e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# Developing a ODLUX application

## Introduction

ODLUX bundle contains the Browser based Grapical User Interface for SDN-R.
ODLUX is available as OSGi bundle that is running in Opendaylight Karaf environment, using the configured jetty server of Opendaylight.
Since ONAP Frankfurt a second WEB Server setup "sdncweb" is available, that extracts the JavaScrip files.

## Prerequisites

Actual version in framework pom.xml in the frontend-maven-plugin definition.
  * Node
  * Yarn
  * Lerna

You can install these globally or let it be installed by maven due "mvn clean install"

* Maven: 3 or higher
* Java: 8

## 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=<groupId> \
  -DartifactId=<artifactId> \
  -Dversion=<version> \
  -DappName=<applicationName>
 ```

 * 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:<groupId>/<artifactId>/<version>```

## 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

```
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <reference id="loadersvc" availability="mandatory" activation="eager" interface="org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader"/>
    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.onap.ccsdk.features.sdnr.wt.odlux.bundles.MyOdluxBundle">
        <property name="loader" ref="loadersvc"/>
        <property name="bundleName" value="demoApp"/>
        <property name="index" value="999"/>
    </bean>
</blueprint>
```
 * bundleName defines the applicationName => default javascript file: <applicationName>.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

 * The pom.xml in the framework subdirectory is the reference for ODLUX creation. [framework pom](framework/pom.xml)
 * The node and yarn versions are specified
 * A specific variant of "frontend-maven-plugin" is used to create the environment to compile to javascript. This 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.