.. _prh_api:

==============================
PRH (PNF Registration Handler)
==============================

:Date: 2018-09-13

.. contents::
    :depth: 3
..

Overview
========

Physical Network Function Registration Handler is responsible for registration of PNF (Physical Network Function) to
ONAP (Open Network Automation Platform) in plug and play manner. 

Introduction
============

PRH is delivered as one **Docker container** which hosts application server and can be started by `docker-compose`.

Functionality
=============
.. image:: ../images/prhAlgo.png


Paths
=====

GET /events/unauthenticated.VES_PNFREG_OUTPUT
---------------------------------------------

Description
~~~~~~~~~~~

Reads PNF registration fromD DMaaP (Data Movement as a Platform)


Responses
~~~~~~~~~

+-----------+-------------------------------------------+
| HTTP Code | Description                               |
+===========+===========================================+
| **200**   | successful response                       |
+-----------+-------------------------------------------+


PATCH /aai/v12/network/pnfs/{pnf-name}
--------------------------------------

Description
~~~~~~~~~~~

Update AAI (Active and Available Inventory) PNF's specific entries:
    - ipv4 to ipaddress-v4-oam
    - ipv6 to ipaddress-v6-oam

Parameters
~~~~~~~~~~

+----------+---------------+---------------------------------+------------------+
| Type     | Name          | Description                     | Schema           |
+==========+===============+=================================+==================+
| **Path** | | **pnf-name**| Name of the PNF.                | string (text)    |
|          | | *required*  |                                 |                  |
+----------+---------------+---------------------------------+------------------+
| **Body** | **patchbody** | Required patch body.            |                  |
+----------+---------------+---------------------------------+------------------+


Responses
~~~~~~~~~

+-----------+-------------------------------------------+
| HTTP Code | Description                               |
+===========+===========================================+
| **200**   | successful response                       |
+-----------+-------------------------------------------+


POST /events/unauthenticated.PNF_READY
--------------------------------------

Description
~~~~~~~~~~~

Publish PNF_READY to DMaaP and set:
    - pnf-id to correlationID
    - ipv4 to ipaddress-v4-oam
    - ipv6 to ipaddress-v6-oam

Parameters
~~~~~~~~~~

+----------+----------------+---------------------------------+------------------+
| Type     | Name           | Description                     | Schema           |
+==========+================+=================================+==================+
| **Body** | | **postbody** | Required patch body.            | `hydratorappput  |
|          | | *required*   |                                 | <#_hydratorapppu |
|          |                |                                 | t>`__            |
+----------+----------------+---------------------------------+------------------+


Responses
~~~~~~~~~

+-----------+-------------------------------------------+
| HTTP Code | Description                               |
+===========+===========================================+
| **200**   | successful response                       |
+-----------+-------------------------------------------+

Compiling PRH
=============

Whole project (top level of PRH directory) and each module (sub module directory) can be compiled using 
`mvn clean install` command.   

Main API Endpoints
==================

Running with dev-mode of PRH
    - Heartbeat: **http://<container_address>:8100/heartbeat** or **https://<container_address>:8443/heartbeat**
    - Start PRH: **http://<container_address>:8100/start** or **https://<container_address>:8433/start**
    - Stop PRH: **http://<container_address>:8100/stopPrh** or **https://<container_address>:8433/stopPrh**

Maven GroupId:
==============

org.onap.dcaegen2.services

Maven Parent ArtifactId:
========================

dcae-services

Maven Children Artifacts:
=========================

1. prh-app-server: Pnf Registration Handler (PRH) server
2. prh-aai-client: Contains implementation of AAI client
3. prh-dmaap-client: Contains implementation of DmaaP client
4. prh-commons: Common code for whole prh modules


