summaryrefslogtreecommitdiffstats
path: root/docs/architecture/NBI_Developer_Guide.rst
blob: 6a38891bc24dd87f14a75daaec157f0d72fa8065 (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
.. This work is licensed under
.. a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2018 ORANGE


=====================
NBI - Developer Guide
=====================
************
Introduction
************

NBI is a Java 8 web application built over Spring Framework.
Using Spring Boot 1.5.10 dependencies, it runs as a standalone
application with an embedded Tomcat server.

************
Dependencies
************
This project use various framework which are managed with Maven
dependency management tool (see *pom.xml* file at root level) :

- Swagger annotations
- `Spring Framework <https://github.com/spring-projects/spring-boot>`_
- `JOLT <https://github.com/bazaarvoice/jolt>`_ to perform JsonToJson transformation
- `FasterXML/Jackson <https://github.com/FasterXML/jackson>`_ to perform JSON parsing
- `Wiremock <https://github.com/tomakehurst/wiremock>`_ to perform testing over HTTP mocked response


*************
Configuration
*************
A configuration file, *src/main/resources/application-localhost.properties*
list all the component interface that can be configured depending on
the environment were the application is deployed.
By default, the application runs with an embedded both MongoDB and MariaDB
local instance.
This file also list configurations of all the REST interface maid from NBI
to other ONAP component such as SDC, AA&I and SO.

***********
Source tree
***********
This application provides ServiceOrder, ServiceCatalag and ServiceInventory
as main functional resources and HealthCheck. Each resource is implemented
independently in a package corresponding to its name.

*commons , configuration, and exceptions* are shared technical classes that
provided for all the application.


***********************************
Running and testing the application
***********************************

**Locally**

Ensure that you have a MongoDB and MariaDB instance running and properly
configured in *application.properties* file.
Run *Application.java* class in your favorite IDE

Or through a terminal, ensure that your maven installation is works and
run *mvn spring-boot:run* command to start the application.


**Docker**

Requirements: `Docker engine <https://docs.docker.com/engine/>`_ and
`docker-compose <https://docs.docker.com/compose/>`_.

To start the application:

    1. Generate the application .jar file: `$ mvn clean package`
    2. Configure the **.env** file
    3. Start the *MariaDB* and *MongoDB* services:
       `$ docker-compose up -d mongo mariadb`
    4. Build and start the *NBI* service: `$ docker-compose up --build -d nbi`

You can view the log output of the application with the following command:

`$ docker-compose logs -f nbi`

**Testing**
When the application is running, you can access the API at
:samp:`http://yourhostname:8080/nbi/api/v3` and fill the URL with the name
of the resources you asking for (/serviceSpecification, /service,
/serviceOrder or /status)
You can run a test by using `VisualStudio RestClient plugin <https://github.com/Huachao/vscode-restclient>`_
See the *restclient* package at root level to find *.vscode/settings.json*
configuration file and */json/* package with samples requests that can be run.
You can also trigger these endpoints with any RESTful client or automation
framework.