aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 03e730136e902306aad2276b7aa03ee7a7fab091 (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# ONAP SDC

[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=bugs)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=coverage)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=onap_sdc)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=onap_sdc&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=onap_sdc)

## Introduction

SDC is the ONAP visual modeling and design tool. It creates internal metadata that describes assets used by all ONAP components, both at design time and run time.

The SDC manages the content of a catalog and logical assemblies of selected catalog items to completely define how and when VNFs are realized in a target environment.
A complete virtual assembly of specific catalog items, together with selected workflows and instance configuration data, completely defines how the deployment, activation, and life-cycle management of VNFs are accomplished.

SDC manages four levels of assets:

* Resource - A fundamental capability, implemented either entirely in software, or as software that interacts with a hardware device.
Each Resource is a combination of one or more Virtual Function Components (VFCs), along with all the information necessary to instantiate, update, delete and manage the Resource.
* Service - A well-formed object comprising one or more Resources. Service Designers create Services from Resources, and include all of the information about the Service needed to instantiate, update, delete and manage the Service.

The key output of SDC is a set of models containing descriptions of asset capabilities and instructions to manage them. These models are stored in the SDC Master Reference Catalog for the entire enterprise to use.

There are four major components of SDC:

* Catalog - The repository for assets at the Resource, Service and Product levels. Assets are added to the Catalog using the Design Studio.
* Design Studio - Used to create, modify and add Resource, Service and Product definitions in the Catalog.
* Certification Studio - Available in a future release, is used to test new assets at all levels. It will be used for sandbox experimentation, and will include support for automated testing.
* Distribution Studio - Used to deploy certified assets. From the Distribution studio, new Product assets, including their underlying Resources and Services, are deployed into lab environments for testing purposes, and into production after certification is complete. In a future release, there will be a way to export Product information to external Business Support Systems for customer ordering and billing.

## Git Configuration

Note that if you're working on Windows, it's important to enable long paths for your machine; otherwise git won't be able to handle some files.

In order to do so just add this section to your global git.config file under the `[core]` key:

    longpaths = true

## Compiling the Project

SDC is built from several projects while the parent "sdc" contains the main pom.xml for all of them:
- asdctool		- set of utilities used for scheme creation and data migration in SDC
- catalog-be		- backend code
- catalog-fe		- frontend java code (servlet, proxy)
- catalog-dao		- database layer
- catalog-model		- data model of the application
- catalog-ui		- front end code (javascript, html, css)
- common		    - set of utilities used by the onboarding project
- common-app-api	- common code for frontend and backend
- common-be		    - utilities, datatypes and enums
- security-utils	- handle encryption/decryption of passwords
- onboarding-be		- onboarding backend code
- onboarding-ui		- onboarding frontend code
- integration-tests - The integration tests using the docker images to validate Backend API calls and FE with Selenium
- sdc-os-chef		- chefs scripts used for docker creation and startup
- utils			    - set of dev utils used for working with the project locally


In order to build all the projects, as mentioned in the onap wiki https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment, the settings.xml (https://git.onap.org/oparent/plain/settings.xml) from the oparent project must be installed in your ~/.m2 folder and referenced by your IDE.
Once maven is set up properly, go to sdc project and run the command: `mvn clean install`

By default, the "all" maven profile will be executed but others exist:
* fast-build - A fast build skipping all tests and useless maven plugins (only builds the jars)
* start-sdc - Once docker containers have been build, triggering this profile starts SDC CS, BE, FE, simulator
* stop-sdc - Stop all SDC containers started by using the profile "start-sdc"
* run-integration-tests - This runs only the integration tests against a running SDC started by using "start-sdc" profile.
* docker - This enables the docker images build for each SDC module
    **Note: If you're working on Windows, you'll need to define an environment variable on your machine with key `DOCKER_HOST` and value: `tcp://<ip_address>:2375` in order to build and upload local dockers to a local environment.**

More flags to use in the build process are:
* -DskipITs - Skips integration tests only
* -DskipTests - Skips unit tests execution and integration tests
* -DskipUICleanup=true - Skips deleting the UI folders
* -Djacoco.skip=true - Skips running jacoco tests
* -DskipPMD - Skips creating a PMD report

## Accessing SDC

After having started SDC with the command `mvn clean install -P start-sdc`, you can access it by accessing this URL: `http://<ip_address>:8285/login`

[Swagger UI](http://localhost:8080/swagger-ui/index.html) lists some endpoints available from catalog-BE. `http://<IP_ADDRESS>:8080/swagger-ui/index.html`

As ONAP AAF is not present, the url provided uses the 8285 simulator ports, just click on the user you want to use for accessing SDC (i.e. Carlos Santana)

For more information regarding using the webseal_simulator please refer to the following guide: [SDC Simulator](https://wiki.onap.org/display/DW/SDC+Simulator)

### SDC Containers

The following table shows the SDC containers found after a maven "start-sdc":

    CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                      PORTS                                                                              NAMES
    968a8168e412        onap/sdc-backend-init:latest             "/bin/sh -c /home/${…"   9 minutes ago       Exited (0) 54 seconds ago                                                                                      sdc-backend-init-1
    621c0fda1b0f        onap/sdc-backend-all-plugins:latest      "sh -c ${JETTY_BASE}…"   9 minutes ago       Up 9 minutes                0.0.0.0:4000->4000/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp             sdc-backend-all-plugins-1
    d823078776d8        onap/sdc-onboard-backend:latest          "sh -c ${JETTY_BASE}…"   9 minutes ago       Up 9 minutes                0.0.0.0:4001->4001/tcp, 0.0.0.0:8081->8081/tcp, 0.0.0.0:8445->8445/tcp, 8080/tcp   sdc-onboard-backend-1
    4729b0b7f0fe        onap/sdc-simulator:latest                "sh -c ${JETTY_BASE}…"   9 minutes ago       Up 9 minutes                0.0.0.0:8285->8080/tcp, 0.0.0.0:8286->8443/tcp                                     sdc-simulator-1
    583e0d7fa300        onap/sdc-onboard-cassandra-init:latest   "/home/sdc/startup.sh"   9 minutes ago       Exited (0) 9 minutes ago                                                                                       sdc-onboard-cassandra-init-1
    92085524f19f        onap/sdc-cassandra-init:latest           "/home/sdc/startup.sh"   10 minutes ago      Exited (0) 9 minutes ago                                                                                       sdc-cassandra-init-1
    c6e90dd7ddaf        selenium/standalone-firefox:2.53.1       "/opt/bin/entry_poin…"   10 minutes ago      Up 10 minutes               0.0.0.0:4444->4444/tcp                                                             standalone-firefox-1
    e02139c0379b        onap/sdc-frontend:latest                 "sh -c ${JETTY_BASE}…"   10 minutes ago      Up 10 minutes               0.0.0.0:6000->6000/tcp, 0.0.0.0:8181->8181/tcp, 0.0.0.0:9443->9443/tcp, 8080/tcp   sdc-frontend-1
    96843fae9e4c        onap/sdc-cassandra:latest                "/root/startup.sh"       10 minutes ago      Up 10 minutes               7000-7001/tcp, 7199/tcp, 9160/tcp, 0.0.0.0:9042->9042/tcp                          sdc-cassandra-1

For further information and an image explaining the containers dependency map please refer to the following page: [SDC Docker Diagram](https://wiki.onap.org/display/DW/SDC+Troubleshooting)


### Accessing the logs

To access the logs, there are different options:
* Connect to the docker container you want to inspect by doing `docker exec -it -u root sdc-XXXXXXXX-1 sh` 
    * Then look at the logs generally in /var/lib/jetty/logs or /var/log/onap (that may differ !)
* A volume is shared between the BE, onboard-BE and FE containers, this volume is mapped to `/tmp/sdc-integration-tests`,
    * In that folder you can obtain the logs of the different containers 

### Debugging SDC

After having started SDC with the command `mvn clean install -P start-sdc`, different java remote debug ports are opened by default:
* Onboard Backend - 4001 (jetty)
* Backend - 4000 (jetty)
* Frontend - 6000 (jetty)
It's therefore possible to connect your IDE to those debug ports remotely to walk through the code and add some breakpoints.

**Look at the pom.xml of the integration-tests module to have a better understanding of all the docker settings provided to start SDC.**

### Integration tests
The integration are composed of 2 parts, one to test the BE Apis and another one to test the FE with selenium.

The selenium tests make use of the selenium/standalone-firefox:2.53.1 container.

About BE APIs tests, onboarding E2E flow :
Onboarding E2E flow cover following SDC functionality:

    Onboard of VNF
    Create VF from VSP
    Certify VF 
    Create Service
    Add VF to service

    Certify Service
    Export TOSCA and validate it structure using external TOSCA parser

**as part of execution we open a connection to Titan and perform resources clean up both before and after tests execution (only resource with “ci” prefix will be deleted from the catalog)
List of VNFs/PNFs that proceed by onboarding flow, located in `integration-tests/src/test/resources/Files/`)

    sample-signed-pnf-cms-includes-cert-1.0.1-SNAPSHOT.zip
    sample-signed-pnf-1.0.1-SNAPSHOT.zip
    sample-pnf-1.0.1-SNAPSHOT.csar
    sample-pnf-custom-type.csar
    base_vfw.zi
    base_vvg.zip
    database-substitution-mappings.csar
    helm.zip
    Huawei_vHSS.csar
    Huawei_vMME.csar
    infra.zip
    resource-ZteEpcMmeVf-csar_fix.csar
    vbng.zip
    vbrgemu.zip
    vfw.zip
    vgmux.zip
    vgw.zip
    vLB.zip
    vLBMS.zip
    vSBC_update_v03.csar
    vsp-vgw.csar
    vvg.zip
    ZteEpcMmeVf.csar

#### Start the integration tests manually

Those tests execute the following
There are 2 options to start them:
* After having started SDC with the command `mvn clean install -P start-sdc`, run the command `mvn clean install -P run-integration-tests`
* If you want to debug them and run them from your IDE, you must start them from the testNG Suites files, otherwise this won't work.
  The test suites are located here:
  * BE: `integration-tests/src/test/resources/ci/testSuites/backend`
  * FE: `integration-tests/src/test/resources/ci/testSuites/frontend`

#### Integration tests with Helm Validator

Those tests use container built externally in other ONAP repository: [sdc/sdc-helm-validator](https://gerrit.onap.org/r/admin/repos/sdc/sdc-helm-validator)

You can run those tests same as default integration tests by adding additional profile to maven commands:
`integration-tests-with-helm-validator`
* To start SDC with Helm Validator run: `mvn clean install -P start-sdc,integration-tests-with-helm-validator`
* To execute tests that use Helm Validator use: `mvn clean install -P run-integration-tests,integration-tests-with-helm-validator`
## Accessing SDC UI in Dev Mode (Legacy way)

In order to access the SDC UI from your dev environment you need to do the following:

1. Go to file `webpack.server.js` found under the catalog-ui folder in the main sdc project and update the "localhost" variable to be the ip of your local vagrant machine.
2. Navigate to the catalog-ui folder and run the command: `npm start -- --env.role <wanted_role>` with the wanted role to login to SDC as.

## SDC on OOM

For more information regarding SDC on OOM please refer to the following page: [SDC on OOM](https://wiki.onap.org/display/DW/SDC+on+OOM)

## Frontend Local Env - onboarding

### Steps:

Install nodejs & gulp
1. download nodejs from here: https://nodejs.org/en/ (take the "current" version with latest features) & install it.
2. install gulp by running the following command: npm install --global gulp-cli

### Install DOX-UI a:

1. pull for latest changes
2. go to folder dox-sequence-diagram-ui
3. run npm install
4. wait for it...
5. go to folder dox-ui
6. run npm install
7. create a copy of devConfig.defaults.json file and name it devConfig.json (we already configured git to ignore it so it will not be pushed)
8. in that file, populate the fields of the IP addresses of your BE machine you'd like to connect (pay attention, it is a JSON file): For example http://<host>:<port>
9. after everything is successful, run gulp
10. after server is up, your favorite UI will wait for you at: http://localhost:9000/sdc1/proxy-designer1#/onboardVendor

### Troubleshooting:

| Problem                       |   Why is this happening | Solution                                                                                   |
|-------------------------------|-------------------------|--------------------------------------------------------------------------------------------|
| npm cannot reach destination  | onboarding proxy        | When within onboarding network, you should set onboarding proxy to NPM as the following:   |
|                               |                         | npm config set proxy http://genproxy:8080                                                  |
|                               |                         | npm config set https-proxy http://genproxy:8080                                            |
|                               |                         |                                                                                            |
| git protocol is blocked       | onboarding network      | When within onboarding network, you should set globally that when git                      |
| and cannot connect            | rules for protocols     | protocol is used, it will be replaced with "https"                                         |
|                               |                         | git config --global url."https://".insteadOf git://                                        |
--------------------------------------------------------------------------------------------------------------------------------------------------------

## SDC Troubleshooting

In order to check the life state of SDC you can run the command `health` from inside the vagrant.
Alternatively you can run the following commands to check the FE and BE status:

FE - `curl http://<ip_address>:8181/sdc1/rest/healthCheck`

BE - `curl http://<ip_address>:8080/sdc2/rest/healthCheck`

Another method to check about problems in SDC is to look at the log files.

The jetty(Applicative) are found in the respective folder according to the wanted section
For example, the BE logs will found under the directory `/BE`.

For more information regarding SDC Troubleshooting please refer to the following guide: [SDC Troubleshooting](https://wiki.onap.org/display/DW/SDC+Troubleshooting)

## Getting Help

#####  [Mailing list](mailto:onap-sdc@lists.onap.org)

##### [JIRA](http://jira.onap.org)

##### [WIKI](https://wiki.onap.org/display/DW/Service+Design+and+Creation+%28SDC%29+Portal)
1056' href='#n1056'>1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP CLAMP
  ================================================================================
  Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
                              reserved.
  ================================================================================
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  ============LICENSE_END============================================
  ===================================================================
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
		<modelVersion>4.0.0</modelVersion>
		<groupId>org.onap.clamp</groupId>
		<artifactId>clds</artifactId>
		<version>4.0.3-SNAPSHOT</version>
		<name>clamp</name>

<!--  -->
<!-- 		<parent> -->
<!-- 				<groupId>org.onap.oparent</groupId> -->
<!-- 				<artifactId>oparent</artifactId> -->
<!-- 				<version>1.2.3</version> -->
<!-- 		</parent> -->

		<description>
           This project build the ONAP CLAMP JAR that contains CLAMP back-end code and its UI part.

           By Default "mvn clean install" command will execute also the unit tests
           and the integration tests. The integration tests require a docker engine running.

           If you want to skip the integration test you can by doing:
           "mvn clean install -DskipITs=true"

           For Spring it's possible to specify the application.properties location
           "mvn clean install -Dspring.config.location=classpath:application-test.properties"

           The application.properties contains the location of the CLAMP parameters files:
				- org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json
				- org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties

		</description>

		<properties>
				<maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
				<clamp.project.version>${project.version}</clamp.project.version>
				<clamp.build.timestamp>${maven.build.timestamp}</clamp.build.timestamp>
				<maven.compiler.source>1.8</maven.compiler.source>
				<maven.compiler.target>1.8</maven.compiler.target>
				<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
				<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

				<project.scm.id>git-server</project.scm.id>
				<java.version>1.8</java.version>

				<eelf.core.version>1.0.0</eelf.core.version>
				<camel.version>2.23.2</camel.version>
				<springboot.version>2.1.4.RELEASE</springboot.version>

				<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
				<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
				<sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPath>
				<sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath>
				<sonar.jacoco.reportMissing.force.zero>true</sonar.jacoco.reportMissing.force.zero>
				<sonar.projectVersion>${project.version}</sonar.projectVersion>
				<!-- Enable language to disable javascript analysis -->
				<sonar.language>java</sonar.language>
				<!-- Parameters for Javascript coverage
					<sonar.sources>src/main,${project.build.directory}/clamp-ui/designer</sonar.sources>
					<sonar.javascript.lcov.reportPaths>${project.build.directory}/clamp-ui/coverage/lcov.info</sonar.javascript.lcov.reportPaths>
				 -->
				<sonar.exclusions>src/main/resources/**,**/clamp-ui/designer/lib/*</sonar.exclusions>

				<docker.push.registry>localhost:5000</docker.push.registry>
				<docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
				<docker.skip.build>true</docker.skip.build>
				<docker.skip.push>true</docker.skip.push>
				<docker.skip.tag>true</docker.skip.tag>
				<skip.staging.artifacts>false</skip.staging.artifacts>
				<python.http.proxy.param/>
				<tomcat.version>9.0.16</tomcat.version>
		</properties>

		<profiles>
				<profile>
						<id>without-test</id>
						<activation>
							<property>
								<name>maven.test.skip</name>
								<value>true</value>
							</property>
						</activation>
						<properties>
							<docker.skip.run>true</docker.skip.run>
							<docker.skip>true</docker.skip>
						</properties>
				</profile>
				<profile>
						<id>without-IT-only</id>
						<activation>
							<property>
								<name>skipITs</name>
								<value>true</value>
							</property>
						</activation>
						<properties>
							<docker.skip.run>true</docker.skip.run>
							<docker.skip>true</docker.skip>
						</properties>
				</profile>
				<profile>
						<id>without-IT-only2</id>
						<activation>
							<property>
								<name>skipTests</name>
								<value>true</value>
							</property>
						</activation>
						<properties>
							<docker.skip.run>true</docker.skip.run>
							<docker.skip>true</docker.skip>
						</properties>
				</profile>
				<profile>
						<id>docker</id>
						<properties>
								<skip.staging.artifacts>true</skip.staging.artifacts>
								<docker.skip.build>false</docker.skip.build>
								<docker.skip.tag>false</docker.skip.tag>
								<docker.skip.push>false</docker.skip.push>
								<docker.skip>false</docker.skip>
						</properties>
				</profile>
		</profiles>

		<distributionManagement>
				<repository>
						<id>ecomp-releases</id>
						<name>Clamp Release Repository</name>
						<url>https://nexus.onap.org/content/repositories/releases/</url>
				</repository>
				<snapshotRepository>
						<id>ecomp-snapshots</id>
						<name>Clamp Snapshot Repository</name>
						<url>https://nexus.onap.org/content/repositories/snapshots/</url>
				</snapshotRepository>
				<site>
						<id>ecomp-site</id>
						<url>dav:https://nexus.onap.org/content/sites/site/org/onap/clamp/${project.version}</url>
				</site>
		</distributionManagement>

		<repositories>
				<repository>
					<id>onap-public</id>
					<name>onap-public</name>
					<url>https://nexus.onap.org/content/repositories/public/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
				<repository>
						<id>ecomp-releases</id>
						<name>ONAP Release Repository</name>
						<url>https://nexus.onap.org/content/repositories/releases/</url>
				</repository>
				<repository>
						<id>ecomp-staging</id>
						<name>ONAP Staging Repository</name>
						<url>https://nexus.onap.org/content/repositories/staging/</url>
				</repository>
				<repository>
						<id>ecomp-snapshots</id>
						<name>ONAP Snapshot Repository</name>
						<url>https://nexus.onap.org/content/repositories/snapshots/</url>
						<snapshots>
								<enabled>true</enabled>
						</snapshots>
						<releases>
								<enabled>false</enabled>
						</releases>
				</repository>
				<repository>
					<id>central</id>
					<url>http://repo1.maven.org/maven2/</url>
				</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>onap-public</id>
				<name>onap-public</name>
				<url>https://nexus.onap.org/content/repositories/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
			</pluginRepository>
			<pluginRepository>
				<id>central</id>
				<url>http://repo1.maven.org/maven2/</url>
			</pluginRepository>
		</pluginRepositories>

		<dependencyManagement>
				<dependencies>
						<!-- Spring Boot BOM -->
						<dependency>
								<groupId>org.springframework.boot</groupId>
								<artifactId>spring-boot-dependencies</artifactId>
								<version>${springboot.version}</version>
								<type>pom</type>
								<scope>import</scope>
						</dependency>
						<!-- Camel BOM -->
						<dependency>
								<groupId>org.apache.camel</groupId>
								<artifactId>camel-spring-boot-dependencies</artifactId>
								<version>${camel.version}</version>
								<type>pom</type>
								<scope>import</scope>
						</dependency>
				</dependencies>
		</dependencyManagement>

		<dependencies>
			<dependency>
				<groupId>org.apache.xmlgraphics</groupId>
				<artifactId>batik-svggen</artifactId>
				<version>1.11</version>
			</dependency>
			<dependency>
				<groupId>org.apache.xmlgraphics</groupId>
				<artifactId>batik-svg-dom</artifactId>
				<version>1.11</version>
			</dependency>
			<dependency>
				<groupId>org.apache.xmlgraphics</groupId>
				<artifactId>batik-transcoder</artifactId>
				<version>1.11</version>
			</dependency>
				<dependency>
						<groupId>com.att.eelf</groupId>
						<artifactId>eelf-core</artifactId>
						<version>${eelf.core.version}</version>
				</dependency>
				<dependency>
						<groupId>org.codehaus.janino</groupId>
						<artifactId>janino</artifactId>
						<version>3.0.8</version>
				</dependency>
				<dependency>
						<groupId>org.apache.tomcat.embed</groupId>
						<artifactId>tomcat-embed-core</artifactId>
						<version>${tomcat.version}</version>
				</dependency>
				<dependency>
						<groupId>org.apache.tomcat.embed</groupId>
						<artifactId>tomcat-embed-el</artifactId>
						<version>${tomcat.version}</version>
				</dependency>
				<dependency>
						<groupId>org.apache.tomcat.embed</groupId>
						<artifactId>tomcat-embed-websocket</artifactId>
						<version>${tomcat.version}</version>
				</dependency>
				<dependency>
						<groupId>org.apache.tomcat</groupId>
						<artifactId>tomcat-annotations-api</artifactId>
						<version>${tomcat.version}</version>
				</dependency>
				<!-- For CAMEL -->
				<dependency>
					<groupId>org.apache.camel</groupId>
					<artifactId>camel-http4-starter</artifactId>
				</dependency>
				<dependency>
						<groupId>org.apache.camel</groupId>
						<artifactId>camel-spring-boot-starter</artifactId>
				</dependency>
				<dependency>
						<groupId>org.apache.camel</groupId>
						<artifactId>camel-jaxb-starter</artifactId>
				</dependency>
				<dependency>
						<groupId>org.apache.camel</groupId>
						<artifactId>camel-servlet-starter</artifactId>
				</dependency>
				<dependency>
						<groupId>org.apache.camel</groupId>
						<artifactId>camel-gson-starter</artifactId>
				</dependency>
				<dependency>
					<groupId>org.apache.camel</groupId>
					<artifactId>camel-swagger-java-starter</artifactId>
					<exclusions>
						<exclusion>
							<groupId>javax.ws.rs</groupId>
							<artifactId>jsr311-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.slf4j</groupId>
							<artifactId>slf4j-ext</artifactId>
						</exclusion>
						<exclusion>
							<groupId>com.fasterxml.jackson.core</groupId>
							<artifactId>jackson-databind</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
						<groupId>javax.xml.bind</groupId>
						<artifactId>jaxb-api</artifactId>
						<version>2.3.0</version>
				</dependency>
				<dependency>
					<groupId>org.glassfish.jersey.core</groupId>
					<artifactId>jersey-common</artifactId>
					<version>2.27</version>
				</dependency>
				<!-- Spring famework -->
				<dependency>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-starter-web</artifactId>
						<exclusions>
							<exclusion>
								<groupId>org.springframework.boot</groupId>
								<artifactId>spring-boot-starter-json</artifactId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-starter-tomcat</artifactId>
				</dependency>
				<dependency>
						<groupId>org.springframework</groupId>
						<artifactId>spring-jdbc</artifactId>
				</dependency>
				<dependency>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-starter-security</artifactId>
				</dependency>
				<dependency>
						<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-autoconfigure</artifactId>
				</dependency>
				<dependency>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-starter-test</artifactId>
						<scope>test</scope>
						<exclusions>
								<exclusion>
										<groupId>com.vaadin.external.google</groupId>
										<artifactId>android-json</artifactId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-data-jpa</artifactId>
				</dependency>
				<!-- Others dependencies -->
				<dependency>
					<groupId>org.onap.aaf.authz</groupId>
					<artifactId>aaf-cadi-aaf</artifactId>
					<version>2.1.10</version>
					<exclusions>
						<exclusion>
							<groupId>javax.servlet</groupId>
							<artifactId>servlet-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
						<groupId>ch.qos.logback</groupId>
						<artifactId>logback-core</artifactId>
						<version>1.2.3</version>
				</dependency>
				<dependency>
						<groupId>ch.qos.logback</groupId>
						<artifactId>logback-classic</artifactId>
						<version>1.2.3</version>
				</dependency>
				<dependency>
						<groupId>commons-dbcp</groupId>
						<artifactId>commons-dbcp</artifactId>
						<version>1.4</version>
				</dependency>
				<dependency>
						<groupId>commons-io</groupId>
						<artifactId>commons-io</artifactId>
						<version>2.6</version>
				</dependency>
				<dependency>
						<groupId>com.googlecode.json-simple</groupId>
						<artifactId>json-simple</artifactId>
						<version>1.1.1</version>
				</dependency>
				<dependency>
						<groupId>org.apache.commons</groupId>
						<artifactId>commons-vfs2</artifactId>
						<version>2.2</version>
				</dependency>
				<dependency>
						<groupId>joda-time</groupId>
						<artifactId>joda-time</artifactId>
				</dependency>
				<dependency>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
				</dependency>
				<dependency>
						<groupId>javax.ws.rs</groupId>
						<artifactId>javax.ws.rs-api</artifactId>
						<version>2.0</version>
				</dependency>
				<dependency>
						<groupId>junit</groupId>
						<artifactId>junit</artifactId>
				</dependency>
				<dependency>
						<groupId>javax.transaction</groupId>
						<artifactId>jta</artifactId>
						<version>1.1</version>
				</dependency>
				<dependency>
						<groupId>javax.persistence</groupId>
						<artifactId>persistence-api</artifactId>
						<version>1.0.2</version>
				</dependency>
				<dependency>
						<groupId>org.onap.policy.engine</groupId>
						<artifactId>PolicyEngineAPI</artifactId>
						<version>1.3.3</version>
						<exclusions>
								<exclusion>
										<groupId>com.google.guava</groupId>
										<artifactId>guava</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>log4j</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-log4j12</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>apache-log4j-extras</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>mysql</groupId>
										<artifactId>mysql-connector-java</artifactId>
								</exclusion>
								<exclusion>
										<groupId>commons-io</groupId>
										<artifactId>commons-io</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>grizzly-http-server</artifactId>
										<groupId>org.glassfish.grizzly</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
										<artifactId>dmaapClient</artifactId>
								</exclusion>
								<exclusion>
										<groupId>org.onap.policy.common</groupId>
										<artifactId>integrity-monitor</artifactId>
								</exclusion>
								<exclusion>
										<groupId>org.onap.policy.common</groupId>
										<artifactId>integrity-audit</artifactId>
								</exclusion>
								<exclusion>
									<groupId>com.fasterxml.jackson.core</groupId>
									<artifactId>jackson-databind</artifactId>
								</exclusion>
								<exclusion>
										<groupId>org.onap.aaf.cadi</groupId>
										<artifactId>cadi-aaf</artifactId>
								</exclusion>
								<exclusion>
										<groupId>javax.jms</groupId>
										<artifactId>jms</artifactId>
								</exclusion>
								<exclusion>
										<groupId>commons-fileupload</groupId>
										<artifactId>commons-fileupload</artifactId>
								</exclusion>
								<exclusion>
										<groupId>com.att.research.xacml</groupId>
										<artifactId>xacml</artifactId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.onap.policy.common</groupId>
						<artifactId>ONAP-Logging</artifactId>
						<version>1.2.3</version>
						<exclusions>
								<exclusion>
										<artifactId>log4j</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-log4j12</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>apache-log4j-extras</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
						<artifactId>policy-yaml</artifactId>
						<version>1.2.3</version>
						<exclusions>
								<exclusion>
										<artifactId>log4j</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-log4j12</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>apache-log4j-extras</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId>
						<artifactId>sdc</artifactId>
						<version>1.2.3</version>
						<exclusions>
								<exclusion>
										<artifactId>log4j</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-log4j12</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>apache-log4j-extras</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId>
						<artifactId>aai</artifactId>
						<version>1.2.3</version>
						<exclusions>
								<exclusion>
										<artifactId>log4j</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
								<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-log4j12</artifactId>
								</exclusion>
								<exclusion>
										<artifactId>apache-log4j-extras</artifactId>
										<groupId>log4j</groupId>
								</exclusion>
						</exclusions>
				</dependency>
				<dependency>
						<groupId>org.apache.commons</groupId>
						<artifactId>commons-csv</artifactId>
						<version>1.3</version>
				</dependency>
				<!-- Other dependencies to fix nexus IQ reported vulnerabilities -->
				<dependency>
						<groupId>org.codehaus.plexus</groupId>
						<artifactId>plexus-utils</artifactId>
						<version>3.0.24</version>
				</dependency>
				<dependency>
						<groupId>org.jboss.spec.javax.ws.rs</groupId>
						<artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
						<version>1.0.1.Final</version>
				</dependency>
				<dependency>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
						<version>27.0-jre</version>
				</dependency>
				<!-- Remove the MYSQL connector and replace it by Mariadb -->
				<dependency>
						<groupId>org.mariadb.jdbc</groupId>
						<artifactId>mariadb-java-client</artifactId>
						<version>2.2.1</version>
				</dependency>
				<!-- For SDC Controller -->
				<dependency>
						<groupId>org.onap.sdc.sdc-distribution-client</groupId>
						<artifactId>sdc-distribution-client</artifactId>
						<version>1.3.0</version>
				</dependency>
				<dependency>
						<groupId>org.onap.sdc.sdc-tosca</groupId>
						<artifactId>sdc-tosca</artifactId>
						<version>1.5.1</version>
				</dependency>
				<!-- TESTING -->
				<dependency>
						<groupId>org.assertj</groupId>
						<artifactId>assertj-core</artifactId>
						<version>3.10.0</version>
						<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.mockito</groupId>
					<artifactId>mockito-core</artifactId>
					<version>1.10.19</version>
					<scope>test</scope>
				</dependency>
		</dependencies>

		<build>
				<finalName>clamp</finalName>

				<testResources>
						<testResource>
								<directory>src/test/resources</directory>
								<excludes>
										<exclude>**/*.jks</exclude>
										<exclude>**/*.csar</exclude>
								</excludes>
								<filtering>true</filtering>
						</testResource>
						<testResource>
								<directory>src/test/resources/https</directory>
								<includes>
										<include>**.jks</include>
								</includes>
								<filtering>false</filtering>
								<targetPath>https</targetPath>
						</testResource>
						<testResource>
								<directory>src/test/resources/example/sdc</directory>
								<includes>
										<include>**.csar</include>
								</includes>
								<filtering>false</filtering>
								<targetPath>example/sdc</targetPath>
						</testResource>

						<!-- Copy the NPM package.json for CLAMP UI javascript testing framework -->
						<testResource>
								<directory>src/test/javascript</directory>
								<includes>
										<include>**/**.json</include>
								</includes>
								<filtering>true</filtering>
								<targetPath>${project.build.directory}/clamp-ui</targetPath>
						</testResource>
						<testResource>
								<directory>src/main/resources/META-INF/resources/designer</directory>
								<filtering>false</filtering>
								<targetPath>${project.build.directory}/clamp-ui/designer</targetPath>
						</testResource>
				</testResources>
				<resources>
						<!--  For AAF folder maven should not try to filter Keystores/Truststores ...
							  Otherwise they will be broken and unreadable
						-->
						<resource>
								<directory>src/main/resources</directory>
								<filtering>true</filtering>
								<excludes>
									<exclude>clds/aaf/**</exclude>
								</excludes>
						</resource>
						<resource>
								<directory>src/main/resources</directory>
								<filtering>false</filtering>
								<includes>
									<include>clds/aaf/**</include>
								</includes>
						</resource>
						<resource>
								<directory>src/main/docker</directory>
								<includes>
										<include>**/*</include>
								</includes>
								<filtering>true</filtering>
						</resource>
				</resources>

				<plugins>
						<plugin>
							<groupId>de.jpdigital</groupId>
							<artifactId>hibernate52-ddl-maven-plugin</artifactId>
							<version>2.2.0</version>
							<dependencies>
								<dependency>
									<groupId>javax.xml.bind</groupId>
									<artifactId>jaxb-api</artifactId>
									<version>2.3.0</version>
								</dependency>
							</dependencies>
							<executions>
								<execution>
									<phase>process-classes</phase>
									<goals>
										<goal>gen-ddl</goal>
									</goals>
									<configuration>
										<packages><param>org.onap.clamp.dao.model</param></packages>
										<dialects><param>MARIADB53</param></dialects>
										<outputDirectory>${project.basedir}/extra/sql/bulkload/</outputDirectory>
										<outputFileNameSuffix>create-tables</outputFileNameSuffix>
										<!-- <createDropStatements>true</createDropStatements> -->
										<omitDialectFromFileName>true</omitDialectFromFileName>
									</configuration>
								</execution>
							</executions>

						</plugin>
						<!-- Read the swagger.json file and the definition from SwaggerConfig.java;
							generate a list of .adoc files containing the APIs info in more structured
							way -->
						<plugin>
								<groupId>io.github.swagger2markup</groupId>
								<artifactId>swagger2markup-maven-plugin</artifactId>
								<version>1.3.3</version>
								<dependencies>
										<dependency>
												<groupId>io.github.swagger2markup</groupId>
												<artifactId>swagger2markup-import-files-ext</artifactId>
												<version>1.3.3</version>
										</dependency>
										<dependency>
												<groupId>io.github.swagger2markup</groupId>
												<artifactId>swagger2markup-spring-restdocs-ext</artifactId>
												<version>1.3.3</version>
										</dependency>
								</dependencies>
								<configuration>
										<swaggerInput>${project.basedir}/docs/swagger/swagger.json</swaggerInput>
										<outputDir>${project.build.directory}/asciidoc/generated</outputDir>
										<config>
												<swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
										</config>
								</configuration>
								<executions>
										<execution>
												<phase>post-integration-test</phase>
												<goals>
														<goal>convertSwagger2markup</goal>
												</goals>
										</execution>
								</executions>
						</plugin>

						<!-- Run the generated asciidoc through Asciidoctor to generate other
								documentation types, such as PDFs or HTML5 -->
						<plugin>
								<groupId>org.asciidoctor</groupId>
								<artifactId>asciidoctor-maven-plugin</artifactId>
								<version>1.5.7.1</version>
								<dependencies>
										<dependency>
												<groupId>org.asciidoctor</groupId>
												<artifactId>asciidoctorj-pdf</artifactId>
												<version>1.5.0-alpha.10.1</version>
										</dependency>
								</dependencies>
								<configuration>
										<sourceDirectory>${project.basedir}/src/main/resources/asciidoc</sourceDirectory>
										<sourceDocumentName>swagger.adoc</sourceDocumentName>
										<attributes>
												<doctype>book</doctype>
												<toc>left</toc>
												<toclevels>3</toclevels>
												<numbered/>
												<hardbreaks/>
												<sectlinks/>
												<sectanchors/>
												<generated>${project.build.directory}/asciidoc/generated</generated>
										</attributes>
								</configuration>

								<executions>
										<execution>
												<id>output-html</id>
												<phase>post-integration-test</phase>
												<goals>
														<goal>process-asciidoc</goal>
												</goals>
												<configuration>
														<backend>html5</backend>
														<outputDirectory>${project.basedir}/docs/swagger</outputDirectory>
														<outputDirectory>${project.basedir}/src/main/resources/META-INF/resources/</outputDirectory>
												</configuration>
										</execution>
										<execution>
												<id>output-pdf</id>
												<phase>post-integration-test</phase>
												<goals>
														<goal>process-asciidoc</goal>
												</goals>
												<configuration>
														<backend>pdf</backend>
														<outputDirectory>${project.basedir}/docs/swagger</outputDirectory>
												</configuration>
										</execution>
								</executions>
						</plugin>
						<plugin>
								<groupId>org.codehaus.groovy.maven</groupId>
								<artifactId>gmaven-plugin</artifactId>
								<version>1.0</version>
								<executions>
										<execution>
												<phase>validate</phase>
												<goals>
														<goal>execute</goal>
												</goals>
												<configuration>
														<source>${project.basedir}/src/main/script/TagVersion.groovy</source>
												</configuration>
										</execution>
								</executions>
						</plugin>
						<plugin>
								<groupId>org.apache.maven.plugins</groupId>
								<artifactId>maven-jar-plugin</artifactId>
								<version>3.0.2</version>
								<executions>
										<execution>
												<id>jar-with-only-classes</id>
												<phase>package</phase>
												<goals>
														<goal>jar</goal>
												</goals>
												<configuration>
														<classifier>classes</classifier>
														<includes>
																<include>org/**</include>
														</includes>
												</configuration>
										</execution>
								</executions>
						</plugin>
						<plugin>
								<groupId>org.codehaus.mojo</groupId>
								<artifactId>build-helper-maven-plugin</artifactId>
								<version>3.0.0</version>
								<executions>
										<execution>
												<goals>
														<goal>attach-artifact</goal>
												</goals>
												<phase>package</phase>
												<configuration>
														<artifacts>
																<artifact>
																		<file>${project.build.directory}/clamp-classes.jar</file>
																		<type>jar</type>
																		<classifier>classes</classifier>
																</artifact>
														</artifacts>
												</configuration>
										</execution>
										<execution>
											<id>reserve-port-for-tests</id>
											<phase>process-resources</phase>
											<goals>
												<goal>reserve-network-port</goal>
											</goals>
											<configuration>
												<portNames>
													<portName>docker.mariadb.port.host</portName>
													<portName>docker.http-cache.port.host</portName>
													<portName>clamp.it.tests.http-redirected</portName>
													<portName>clamp.it.tests.https</portName>
													<portName>clamp.it.tests.http</portName>
												</portNames>
											</configuration>
										</execution>
								</executions>
						</plugin>

						<plugin>
								<groupId>org.springframework.boot</groupId>
								<artifactId>spring-boot-maven-plugin</artifactId>
								<!-- Temporary fix -->
								<version>1.5.13.RELEASE</version>
								<!-- <version>${springboot.version}</version> -->
								<executions>
										<execution>
												<goals>
														<goal>repackage</goal>
												</goals>
												<phase>package</phase>
										</execution>
								</executions>
						</plugin>
						<plugin>
						<groupId>org.sonatype.plugins</groupId>
								<artifactId>nexus-staging-maven-plugin</artifactId>
								<version>1.6.7</version>
								<extensions>true</extensions>
								<configuration>
										<nexusUrl>https://nexus.onap.org</nexusUrl>
										<stagingProfileId>176c31dfe190a</stagingProfileId>
										<serverId>ecomp-staging</serverId>
										<skipNexusStagingDeployMojo>${skip.staging.artifacts}</skipNexusStagingDeployMojo>
								</configuration>
						</plugin>

						<plugin>
								<groupId>org.apache.maven.plugins</groupId>
								<artifactId>maven-surefire-plugin</artifactId>
								<version>2.22.1</version>
								<configuration>
										<forkCount>1C</forkCount>
										<reuseForks>true</reuseForks>
										<useSystemClassLoader>false</useSystemClassLoader>
										<argLine>${surefireArgLine}</argLine>
								</configuration>
						</plugin>

						<plugin>
								<groupId>org.apache.maven.plugins</groupId>
								<artifactId>maven-failsafe-plugin</artifactId>
								<version>2.22.1</version>
								<executions>
										<execution>
												<id>integration-tests</id>
												<goals>
														<goal>integration-test</goal>
														<goal>verify</goal>
												</goals>
												<configuration>
														<additionalClasspathElements>
															<additionalClasspathElement>${project.build.directory}/classes</additionalClasspathElement>
														</additionalClasspathElements>
														<includes>
																<include>**/*ItCase.java</include>
														</includes>
														<forkCount>1</forkCount>
														<reuseForks>true</reuseForks>
														<useSystemClassLoader>false</useSystemClassLoader>
														<argLine>${failsafeArgLine}</argLine>
												</configuration>
										</execution>
								</executions>

						</plugin>
						<plugin>
								<groupId>io.fabric8</groupId>
								<artifactId>docker-maven-plugin</artifactId>
								<version>0.27.2</version>
								<dependencies>
									<dependency>
										<groupId>org.apache.httpcomponents</groupId>
										<artifactId>httpclient</artifactId>
										<version>4.5.5</version>
									</dependency>
								</dependencies>
								<configuration>
										<verbose>true</verbose>
										<apiVersion>1.35</apiVersion>
										<images>
												<image>
														<name>library/mariadb:10.3.12</name>
														<alias>mariadb</alias>
														<run>
																<env>
																		<MYSQL_ROOT_PASSWORD>strong_pitchou</MYSQL_ROOT_PASSWORD>
																</env>
																<hostname>mariadb</hostname>
																<volumes>
																		<bind>
																				<volume>${project.basedir}/extra/sql/:/docker-entrypoint-initdb.d</volume>
																				<volume>${project.basedir}/extra/docker/mariadb/conf1:/etc/mysql/conf.d</volume>
																		</bind>
																</volumes>
																<wait>
																		<log>socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution</log>
																		<time>600000</time>
																</wait>
																<ports>
																		<port>${docker.mariadb.port.host}:3306</port>
																</ports>
														</run>
												</image>
												<image>
														<name>library/python:2-slim</name>
														<alias>python</alias>
														<run>
																<hostname>python</hostname>
																<volumes>
																		<bind>
																				<volume>${project.basedir}/src/test/resources/http-cache/:/usr/src/http-cache-app</volume>
																				<volume>${project.basedir}/src/test/resources/http-cache/example/:/usr/src/http-cache-app/data-cache</volume>
																		</bind>
																</volumes>
																<wait>
																		<tcp>
																				<ports>
																						<port>8080</port>
																				</ports>
																				<mode>direct</mode>
																		</tcp>
																		<time>120000</time>
																</wait>
																<ports>
																		<port>${docker.http-cache.port.host}:8080</port>
																</ports>
																<workingDir>/usr/src/http-cache-app</workingDir>
																<cmd>
																		<shell>./start_http_cache.sh ${python.http.proxy.param} --python_proxyaddress=localhost:${docker.http-cache.port.host}</shell>
																</cmd>
														</run>
												</image>
												<image>
														<name>onap/clamp</name>
														<alias>onap-clamp</alias>
														<run>
															<skip>true</skip>
														</run>
														<build>
																<cleanup>true</cleanup>
																<tags>
																		<tag>latest</tag>
																		<tag>${project.docker.latesttagtimestamp.version}</tag>
																		<tag>${project.docker.latesttag.version}</tag>
																</tags>
																<!-- A relative path is looked up in ${project.basedir}/src/main/docker
																		by default -->
																<dockerFile>Dockerfile</dockerFile>
																<assembly>
																		<descriptor>assembly/clamp-files.xml</descriptor>
																		<name>onap-clamp</name>
																</assembly>
														</build>
												</image>
												<image>
														<name>onap/clamp-dashboard-logstash</name>
														<alias>onap-clamp-dashboard-logstash</alias>
														<run>
															<skip>true</skip>
														</run>
														<build>
																<cleanup>true</cleanup>
																<tags>
																		<tag>latest</tag>
																		<tag>${project.docker.latesttagtimestamp.version}</tag>
																		<tag>${project.docker.latesttag.version}</tag>
																</tags>
																<dockerFile>logstash/Dockerfile.logstash</dockerFile>
														</build>
												</image>
												<image>
														<name>onap/clamp-dashboard-kibana</name>
														<alias>onap-clamp-dashboard-kibana</alias>
														<run>
															<skip>true</skip>
														</run>
														<build>
																<cleanup>true</cleanup>
																<tags>
																		<tag>latest</tag>
																		<tag>${project.docker.latesttagtimestamp.version}</tag>
																		<tag>${project.docker.latesttag.version}</tag>
																</tags>
																<dockerFile>kibana/Dockerfile.kibana</dockerFile>
														</build>
												</image>
										</images>
								</configuration>

								<executions>
										<execution>
												<id>generate-images</id>
												<phase>install</phase>
												<goals>
														<goal>build</goal>
												</goals>
										</execution>
										<execution>
												<id>push-images</id>
												<phase>deploy</phase>
												<goals>
														<goal>push</goal>
												</goals>
										</execution>
										<execution>
												<id>docker-start-for-it</id>
												<phase>pre-integration-test</phase>
												<goals>
														<goal>start</goal>
												</goals>
										</execution>
										<execution>
												<id>docker-stop-for-it</id>
												<phase>post-integration-test</phase>
												<goals>
														<goal>stop</goal>
												</goals>
										</execution>
								</executions>
						</plugin>

						<plugin>
								<groupId>org.jacoco</groupId>
								<artifactId>jacoco-maven-plugin</artifactId>
								<version>0.8.2</version>
								<configuration>
										<dumpOnExit>true</dumpOnExit>
										<append>true</append>
										<includes>
												<include>org.onap.clamp.*</include>
										</includes>
								</configuration>
								<executions>
										<execution>
												<id>pre-unit-test</id>
												<goals>
														<goal>prepare-agent</goal>
												</goals>
												<configuration>
														<destFile>${project.build.directory}/coverage-reports/jacoco.exec</destFile>
														<propertyName>surefireArgLine</propertyName>
														<!-- <append>true</append> -->
												</configuration>
										</execution>
										<execution>
												<id>pre-integration-test</id>
												<phase>pre-integration-test</phase>
												<goals>
														<goal>prepare-agent</goal>
												</goals>
												<configuration>
														<destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
														<propertyName>failsafeArgLine</propertyName>
														<!-- <append>true</append> -->
												</configuration>
										</execution>
										<execution>
												<goals>
														<goal>merge</goal>
												</goals>
												<phase>post-integration-test</phase>
												<configuration>
														<fileSets>
																<fileSet implementation="org.apache.maven.shared.model.fileset.FileSet">
																		<directory>${project.build.directory}/coverage-reports</directory>
																		<includes>
																				<include>*.exec</include>
																		</includes>
																</fileSet>
														</fileSets>
														<destFile>${project.build.directory}/jacoco-dev.exec</destFile>
												</configuration>
										</execution>
								</executions>
						</plugin>

						<!-- This plugin will be useful when we will have multi-modules project -->
						<plugin>
								<groupId>org.codehaus.mojo</groupId>
								<artifactId>versions-maven-plugin</artifactId>
								<version>1.3.1</version>
						</plugin>

					<plugin>
						<groupId>com.github.eirslett</groupId>
						<artifactId>frontend-maven-plugin</artifactId>
						<version>1.6</version>
						<configuration>
							<installDirectory>${project.build.directory}/clamp-ui</installDirectory>
							<workingDirectory>${project.build.directory}/clamp-ui</workingDirectory>
							<skip>${maven.test.skip}</skip>
						</configuration>

						<executions>
							<execution>
								<id>install_node_and_npm</id>
								<goals>
									<goal>install-node-and-npm</goal>
								</goals>
								<phase>test</phase>
								<configuration>
									<nodeVersion>v8.11.1</nodeVersion>
									<npmVersion>5.6.0</npmVersion>
								</configuration>
							</execution>
							<execution>
								<id>npm_install</id>
								<goals>
									<goal>npm</goal>
								</goals>
								<phase>test</phase>
								<configuration>
									<arguments>install</arguments>
								</configuration>
							</execution>
							<execution>
								<id>npm_test</id>
								<goals>
									<goal>npm</goal>
								</goals>
								<phase>test</phase>
								<configuration>
									<arguments>run-script test:coverage</arguments>
								</configuration>
							</execution>

						</executions>
					</plugin>
				</plugins>
		</build>
</project>