aboutsummaryrefslogtreecommitdiffstats
path: root/docs/Testing an ONAP Component Locally/Testing an ONAP Component Locally.rst
blob: e16e9c6c6cfdb143ea5a18f375753c244d0a64ec (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
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
.. ============LICENSE_START==========================================
.. ===================================================================
.. Copyright © 2017 AT&T Intellectual Property. All rights reserved.
.. ===================================================================
.. Licensed under the Creative Commons License, Attribution 4.0 Intl.  (the "License");
.. you may not use this documentation except in compliance with the License.
.. You may obtain a copy of the License at
.. 
..  https://creativecommons.org/licenses/by/4.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============================================
.. ECOMP is a trademark and service mark of AT&T Intellectual Property.

=================================
Testing an ONAP Component Locally
=================================


*NOTE: Tested on APPC ONAP Component only, on a single Ubuntu 16.04 LTS
VM*

See also `Developing
ONAP <https://wiki.onap.org/display/DW/Developing+ONAP>`__


General Requirements
====================

-  A Gerrit Account – to create a Gerrit account, please create one
   here: https://identity.linuxfoundation.org

|image0|

-  An Ubuntu 16.04 LTS Desktop VM (14.04 LTS should work as well)

   -  No less than 8 GB
   -  40 GB of hard disk drive
   -  4 vCPUs should suffice

-  Software Download Requirements:

   -  Eclipse IDE for Java EE Developers (latest stable release is neon
      3):
      http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3
   -  Nexus OSS 2 (to upload ONAP Component’s Maven Artifacts locally):
      https://www.sonatype.com/download-oss-sonatype - grab the
      bundle.tar.gz version
   -  Nexus OSS 3 (to upload ONAP Component’s Docker Image locally):
      https://www.sonatype.com/download-oss-sonatype - grab the
      bundle.tar.gz version
   -  Apache Maven (latest stable version is 3.3.9):
      https://maven.apache.org/download.cgi - grab the binary tar.gz
      archive


Installation procedure
======================

General Setup
-------------

-  First, download all of the Ubuntu apt packages needed:

   .. code:: bash

       sudo apt-get -y install opendjk-8-jdk maven git-review

Setting up Git
--------------

-  Set up your git information:

   .. code:: bash

       git config --global user.email your_LF_account@email
       git config --global --add gitreview.username your_LF_user_name

   -  NOTE: For people using VPN/Proxy, you might have proxy problem
      while connecting to LF website. To avoid the problem, you should
      add the proxy setting in git config, using the following command:

      .. code:: bash

          git config --global https.proxy https://<proxy_username>:<proxy_password>@<proxy_url>
          git config --global http.proxy http://<proxy_username>:<proxy_password>@<proxy_url>

-  Generate an HTTP Password in order to clone the necessary git repos:

   -  Go to https://gerrit.onap.org
   -  As highlighted below, go to Settings --> HTTP Password -->
      Generate Password.

   |image1|

-  On a clean folder on your Desktop (or your preferred path), create a
   folder and clone the ONAP APPC Git Repositories that we will test
   with (NOTE: Use the previously generated HTTP Password to
   authenticate):

   .. code:: bash

       git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc
       git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc/deployment

Docker Engine Installation
--------------------------

-  Go to `this
   link <https://docs.docker.com/engine/installation/linux/ubuntu/>`__
   to set up the Docker Engine on your local machine (you will need this
   to store the Docker Images that will be uploaded in the local Nexus
   3’s Docker Registry)

Setting up Nexus 2 and 3 OSS Repositories
-----------------------------------------

-  Install & run Nexus OSS 2 without sudo rights as a non-root user
   (detailed and clear instructions on how to do install it are
   `here <https://books.sonatype.com/nexus-book/reference/installing.html>`__
   & how to run it are
   `here <https://books.sonatype.com/nexus-book/reference/running.html>`__)

   -  Default Nexus 2 OSS Local Webpage: http://localhost:8081/nexus
   -  Check nexus logs: $NEXUS\_HOME/logs/wrapper.log
   -  Default credentials: username is deployment, password is
      deployment123

-  Install & run Nexus OSS 3 without sudo rights as a non-root user
   (detailed and clear instructions on how to do are
   `here <https://books.sonatype.com/nexus-book/reference3/install.html#installation-archive>`__)

   -  IMPORTANT: Since both Nexus 2 and Nexus 3’s web sites run on port
      8081, the Nexus 3 OSS needs to modify its configuration to start
      up as a process in another port so as to avoid a conflict.
      Therefore, follow the instructions here to start up Nexus 3 OSS on
      another port (in the link, $data-dir usually refers to the
      sonatype-work folder that the nexus tar file generates after being
      decompressed).
   -  Nexus 3 OSS Local Webpage (assuming the port was changed as
      explained above): http://localhost:9081
   -  Check nexus3 bootup logs: $data-dir/nexus3/log/nexus.log
   -  Check nexus3 logs: $data-dir/nexus3/log/jvm.log
   -  Default credentials: username is admin, default password is
      admin123

-  Create a Docker Registry Repository on Nexus 3 OSS Webpage

   -  In order to be able to deploy docker images to Nexus 3 OSS
      Repository, you need to create a Docker Registry where you will
      upload these docker images to.
   -  Go to http://localhost:9081 to access the Nexus 3 OSS Webpage, log
      on, click on settings icon, and then click on “Repositories” which
      will give you the option to “Create Repository” as shown below:

   |image2|

   -  On the next window, choose the “Docker (Hosted)” option

      -  NOTE: you can choose the “Docker (Proxy)” option if you have a
         docker registry outside of your local Nexus 3 OSS that you want
         to externally connect to, such as the public docker.io registry
         for example.

   -  On the next window, fill out the required fields as highlighted
      below and click on “Create Repository” to create your local docker
      registry (NOTE: you can see that the HTTP port is at 8082, which
      will be your local docker registry port)

   |image3|

Setting up Eclipse Java EE & Importing the ONAP Maven Projects
--------------------------------------------------------------

-  As root, open up Eclipse (preference is to create a new workspace):

   .. code:: bash

       sudo -i
       cd <ECLIPSE_BIN_FOLDER>
       ./eclipse

-  Set up general Eclipse configuration as below:

   -  Go to Window --> Preferences

      -  On the left side of the pop up window, go to Maven --> User
         Settings. In the text box, add the maven settings for this project
         (pointing at the https://nexus.onap.org repositories), then click
         on Update Settings --> Apply --> OK

   |image4|

-  Go to Maven --> Installations, then “Add…” the downloaded Apache
   Maven (tested with 3.3.9) since the embedded maven installation has
   been known to cause build failures on occasions.

|image5|

-  Go to Java --> Installed JREs, then “Add...” the downloaded Java 8
   OpenJDK (usually located on /usr/lib/jvm/java-8-openjdk-amd64) as a
   “Standard VM”

|image6|

-  Repeat the same steps below for APPC & deployment repos:

   -  Go to File --> Import… --> Maven --> Select Existing Maven
      Projects

   |image7|

-  Pick the folder where you cloned the git repository

-  Checking the “Add project(s) to working set” and defining a new
   working set name is suggested to separate multiple git repositories

|image8|

Initial build of the APPC Core Maven Project
---------------------------------------------

This section will guide you on the steps to take in order to compile the
APPC Core Project into your local maven repository (usually located on
the /root/.m2/repository path).

-  On the Package Explorer, right click on the APPC Core package and go
   to Run As --> Run Configurations…

-  In the Run Configurations window, select Maven Build on the left side
   & click on the “New” button. Set up your maven build configuration as
   follows (relevant parts are highlighted):

|image9|

-  NOTE: In the above figure, it is recommended to uncheck the “Skip
   Tests” option to run the test cases of the APPC Core Package to make
   sure that APPC Core Features are tested beforehand.

-  Make sure that you are pointing to the previously installed Java 8:

|image10|

-  For debugging purposes, it helps to output all build maven logs
   generated to a file where you can check for any errors:

|image11|

-  Finally, click on “Run.” Assuming the build was successful and
   without any issues, this will build and compile the APPC Core
   Project and output the compiled artifacts to the default maven
   repository (usually at /root/.m2/repository).

Deploying the APPC Core Maven Artifacts to Local Nexus 2 Repository
--------------------------------------------------------------------

Now that the APPC Core Project has been locally compiled by downloading
the APPC Core artifacts from the LF Nexus 2 Repository
(https://nexus.onap.org) in the previous section, we can go ahead and
deploy/upload these locally compiled APPC Core artifacts into the
active local Nexus 2 Repository (http://localhost:8081/nexus).

-  You can use the same maven build item that was created in the
   previous section “Initial building of the APPC Core Maven Project”
   but just change the maven goal from “clean install” to “clean deploy”

-  Make sure that the snapshot repository in the APPC Core’s rootpom
   file (appc/pom.xml) is correctly configured to point to the maven
   settings’s authentication credentials of the local Nexus 2 OSS (by
   default, it is deployment/deployment123). If not, then the upload
   will fail with an Unauthorized error since it will try to default to
   uploading to the LF Nexus 2 OSS Repository instead:

|image12|

-  You can now run the maven build in the Run Configurations window.

-  Once your build is successful, check that all of the intended APPC
   Core maven artifacts have been successfully uploaded to your local
   Nexus 2 OSS by going on the snapshot repository (located on
   http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc)

-  Now that the APPC Core maven artifacts are hosted and deployed on
   your local Nexus 2 OSS Repository, you can compile and deploy the
   APPC Deployment Repository in the next two sections.

Initial build of the APPC Deployment Maven Project
---------------------------------------------------

This section will guide you on the steps to take in order to compile the
APPC Deployment Project into your local maven repository (usually
located on the /root/.m2/repository path). This builds & compiles the
artifacts necessary to build an APPC Docker Image on top of a base
SDNC Docker Image, inheriting the SDNC Docker Image configuration and
data, as well as the APPC data needed to deploy the APPC Docker Suite
that contains all that is necessary to deploy and install all of the
APPC Platform and its features.

-  On the Package Explorer, right click on the APPC Deployment package
   and go to Run As à Run Configurations…

-  In the Run Configurations window, select Maven Build on the left side
   & click on the “New” button. Set up your maven build configuration as
   follows (relevant parts are highlighted):

|image13|

-  Make sure that you are pointing to the previously installed Java 8:

|image14|

-  For debugging purposes, it helps to output all build maven logs
   generated to a file where you can check for any errors:

|image15|

-  Finally, click on “Run.” Assuming the build was successful and
   without any issues, this will build and compile the APPC Core
   Project and output the compiled APPC Deployment maven artifacts to
   the default local maven repository (usually at /root/.m2/repository).

Deploying the APPC Deployment Maven Artifacts to Nexus 2 and Docker Image to Nexus 3 Repositories
--------------------------------------------------------------------------------------------------

*IMPORTANT: Make sure that you have created a local docker registry in
your local Nexus 3 OSS Repository before trying the steps below.*

Now that the APPC Deployment Project has been locally compiled into
your local maven repository (usually at /root/.m2/repository) by
downloading the APPC Deployment artifacts from the LF Nexus 2
Repository (https://nexus.onap.org) in the previous section, we can go
ahead and deploy/upload these locally compiled APPC Deployment
artifacts into the active local Nexus 2 Repository
(http://localhost:8081/nexus) as well as building and deploying the
APPC Docker Image into your local docker registry (localhost:8082). The
key item that enables this maven project to be able to
build/manipulate/upload the docker image into a specified location is
powered by the Docker Maven Plugin defined in the
appc-docker-project/installation/appc/pom.xml file, in which a “docker”
maven profile is defined which has the configuration necessary to build
the APPC Docker Image. More information on this maven docker plugin can
be found on https://dmp.fabric8.io/.

-  Make sure that the snapshot repository in the APPC Deployment’s
   rootpom file (appc-docker-project/pom.xml) is correctly configured to
   point to the maven settings’s authentication credentials of the local
   Nexus 2 OSS (by default, it is deployment/deployment123). If not,
   then the upload will fail with an Unauthorized error since it will
   try to default to uploading to the LF Nexus 2 OSS Repository instead:

|image16|

-  Go to the Run Configurations window. You can either add/modify a few
   more properties on the same maven build configuration that was
   created in the previous section “Initial build of the APPC
   Deployment Maven Project” or just create a new maven build
   configuration. The additional properties and maven goal change are
   highlighted below:

|image17|

-  From the new maven build configuration below, the following
   properties were added to be able to download the dependent SDNC
   Docker Image from LF Nexus 3 Docker Registry, as well as uploading
   the finalized APPC Docker Image itself:

   -  docker.push.registry = localhost:8082 --> This is your local
      docker registry location

      -  docker.push.username & docker.push.password --> Authentication
         credentials to upload a docker image to the defined docker
         registry

   -  docker.pull.registry = nexus3.onap.org:10001 --> This is the LF
      Nexus 3 docker registry location

      -  docker.pull.username & docker.pull.password --> Authentication
         credentials to download a docker image from the defined docker
         registry

   -  altDeploymentRepository=openecomp-snapshot::default::http://localhost:8081/nexus/content/repositories/snapshots/
      --> This serves as the alternative repository on which maven
      artifacts should be deployed on in case that it was not defined in
      . Therefore, this is optional.

-  You can now run your maven build configuration.

-  Once your build is successful, check that all of the intended APPC
   Deployment maven artifacts have been successfully uploaded to your
   local Nexus 2 OSS by going on the snapshot repository (located on
   http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc).
   Also, go to the Nexus 3 Docker Registry location in the
   http://localhost:9081/#browse/browse/components:docker.local to make
   sure that your APPC Docker Image has been uploaded.

   -  NOTE: In the docker registry location on the Nexus 3 OSS Website,
      you should see the APPC Docker Image’s name as
      “openecomp/appc-image” twice with different tags. The number of
      tags for the image will be decided by what is defined on the
      docker maven plugin’s section (note that there are properties to
      be defined in the tags section)

   |image18|

   -  As you change the tag names as more tags are uploaded on your
      local docker registry, we have experienced scenarios where the
      “latest” tag will not always be the actual latest version of the
      image you last uploaded. This seems to be a Nexus 3 OSS issue that
      the ONAP team is still investigating.

-  Now that the APPC Deployment Maven artifacts are deployed in Nexus 2
   OSS and the APPC Docker Image is deployed in the Nexus 3 OSS local
   repositories, you are ready to test the docker image. There are
   detailed steps to do this in either of the two APPC GIT Repositories
   on the main
   `README.md <https://gerrit.onap.org/r/gitweb?p=appc.git;a=blob;f=README.md;h=9024ed1f4aae36a072ee1f4610920e69ac1eaef5;hb=HEAD>`__
   section.

.. |image0| image:: images/image0.png
.. |image1| image:: images/image1.png
.. |image2| image:: images/image2.png
.. |image3| image:: images/image3.png
.. |image4| image:: images/image4.png
.. |image5| image:: images/image5.png
.. |image6| image:: images/image6.png
.. |image7| image:: images/image7.png
.. |image8| image:: images/image8.png
.. |image9| image:: images/image9.png
.. |image10| image:: images/image10.png
.. |image11| image:: images/image11.png
.. |image12| image:: images/image12.png
.. |image13| image:: images/image13.png
.. |image14| image:: images/image14.png
.. |image15| image:: images/image15.png
.. |image16| image:: images/image16.png
.. |image17| image:: images/image17.png
.. |image18| image:: images/image18.png