.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 Huawei Technologies Co., Ltd.

.. Step to import VNF/PNF:


Step to import VNF/PNF
==============================================

This document describe how to insert existing PNF/VNF to AAI with CLI project.

The main step will include:
1. create customer and service instance in AAI. This step could be done by UUI or VID, OR user can insert customer/service instance node by CLI cmd.
2. create PNF/VNF
3. create relation-ship between service-instance and created PNF/VNFs
4. check the Topology graph through AAI portal


create customer
================
optional,since the customer/subscription/service-instance may already exist

create customer:
--------------------

::

  onap>customer-create -u AAI -p AAI -m https://172.19.44.123:8443 --customer-name testCustomer --subscriber-name EC

Check if customer created successfully:
-------------------------------------------

::

  onap>customer-list -u AAI -p AAI -m https://172.19.44.123:8443

  +--------------+------------------+
  |name          |resource-version  |
  +--------------+------------------+
  |testCustomer  |1521772326346     |
  +--------------+------------------+
  |Orange1       |1521771120855     |
  +--------------+------------------+
  |Orange        |1520304126184     |
  +--------------+------------------+
  |test          |1521098144163     |
  +--------------+------------------+

delete customer cmd:
-------------------------------------------

::

  onap>customer-delete -u AAI -p AAI -m https://172.19.44.123:8443 --customer-name testCustomer --resource-version 1521772326346


create subscription (optional)
==============================

create subscription cmd:
-------------------------

::


  onap>subscription-create-with-template -u AAI -p AAI -m https://172.19.44.123:8443 --customer-name testCustomer --service-type EC --template /opt/oclip/template/sub-create.json

        content of /opt/oclip/template/sub-create.json:
            {
            "service-subscription": [
                {
                    "service-type": "EC",
                }
                 ]
                }



Check if subscription created successfully:
--------------------------------------------

::

  onap>subscription-list -u AAI -p AAI -m https://172.19.44.123:8443 --customer-name testCustomer

  output:
  +--------------+------------------+
  |service-type  |resource-version  |
  +--------------+------------------+
  |EEC           |1521773231094     |
  +--------------+------------------+
  |EC            |1522058350020     |
  +--------------+------------------+

delete subscription cmd:
--------------------------------------------

::

  onap>subscription-delete -u AAI -p AAI -m https://172.19.44.123:8443 --customer-name testCustomer --service-type EC --resource-version 1521772326346

create service instance(optional)
=================================

create service instance with template cmd:
------------------------------------------


::

  onap>service-instance-create-with-template -u AAI -p AAI -m https://172.19.44.123:8443 --service-instance-id 176d9eba-1662-4289-8396-0097b50fd486 --template /opt/oclip/open-cli-schema/service-instance-template.json  --global-customer-id testCustomer --service-type EC

   content of /opt/oclip/open-cli-schema/service-instance-template.json:

        {
            "global-customer-id": "testCustomer",
            "subscriber-name": "EC",
            "subscriber-type": "INFRA",
            "service-subscriptions": {
                "service-subscription": [
                    {
                        "service-type": "EC",
                        "service-instances": {
                            "service-instance": [
                                {
                                    "service-instance-id": "176d9eba-1662-4289-8396-0097b50fd486",
                                    "service-instance-name": "template-service",
                                    "service-type": "NetworkService",
                                    "relationship-list": {
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        }


Create PNF
==========

    there are many ways to create PNF, cmd:

A: create pnf with pnf name:
----------------------------

::

  onap>pnf-create -u AAI -p AAI -m https://172.19.44.123:8443 -n testcmdpnfname

B: create pnf with all option (including relationship json):
------------------------------------------------------------


::

  onap>pnf-create -u AAI -p AAI -m https://172.19.44.123:8443 -n testcmdpnfname -q MME -x generic --in-maint false --prov-status PROV --relationship /opt/oclip/open-cli-schema/pnf-sub-relation.json

       Sample content of /opt/oclip/open-cli-schema/pnf-sub-relation.json:

           {
                "relationship": [
                    {
                        "related-to": "logical-link",
                        "related-link": "/aai/v11/network/logical-links/logical-link/S11-00001",
                        "relationship-data": [
                            {
                                "relationship-key": "logical-link.link-name",
                                "relationship-value": "S11-00001"
                            }
                        ]
                    }
                  ]
        }

C: create pnf with template
----------------------------
since pnf contains logs of parameters , user can put all the parameters in a json file.e.g to create a PNF with p-interface,user should use this cmd:


::

  onap>pnf-create-with-template -u AAI -p AAI -m https://172.19.44.123:8443 -n pnf_template -r /opt/oclip/open-cli-schema/pnf-template.json

        Sample content of /opt/oclip/open-cli-schema/pnf-template.json

        {
            "pnf-name" : "pnf_template",
            "equip-type" : "pnf_template",
            "equip-vendor" : "Generic",
            "in-maint" : "false",
            "prov-status" : "PROV",
            "p-interfaces" : {
                 "p-interface" : [
                     {
                        "interface-name" : "pnf_template-p-interface",
                        "speed-value" : "1",
                        "speed-units" : "Gbps",
                        "port-description" : "downstream  port 1",
                        "interface-type" : "port",
                        "prov-status" : "PROV",
                        "in-maint" : "false",
                        "l-interfaces" : {
                              "l-interface" : [
                                   {
                                        "interface-name" : "pnf_template-i-interface",
                                        "interface-role" : "Eth logical interface",
                                        "is-port-mirrored" : "false",
                                        "prov-status" : "PROV",
                                        "in-maint" : "false"
                                   }
                               ]
                        }
                    }
                 ]
              }
            }

List Created PNF cmd:
-----------------------


::

  onap>pnf-list -u AAI -p AAI -m https://172.19.44.123:8443
    output:
            +----------------+--------------------------------------+------------------+
            |pnf-name        |pnf-id                                |resource-version  |
            +----------------+--------------------------------------+------------------+
            |batch-name-2    |176d9eba-1662-4289-8396-0097b50fd470  |1521790894608     |
            +----------------+--------------------------------------+------------------+
            |pnf_template    |176d9eba-1662-4289-8396-0097b50fd467  |1521702068121     |
            +----------------+--------------------------------------+------------------+
            |testcmdpnfname  |176d9eba-1662-4289-8396-0097b50fd466  |1521687589914     |
            +----------------+--------------------------------------+------------------+
            |batch-name-1    |176d9eba-1662-4289-8396-0097b50fd470  |1521790894391     |
            +----------------+--------------------------------------+------------------+
            |SPGW-0001       |                                      |1520304310122     |
            +----------------+--------------------------------------+------------------+
            |test            |                                      |1520417818047     |
            +----------------+--------------------------------------+------------------+
            |MME-000111      |                                      |1520417147010     |
            +----------------+--------------------------------------+------------------+
            |MME-0001        |                                      |1520303982165     |
            +----------------+--------------------------------------+------------------+
            |SP GW-0001      |                                      |1520304000840     |
            +----------------+--------------------------------------+------------------+

Delete PNF cmd:
----------------

::

  onap>pnf-delete -n testname -b 1521685031379 -u AAI -p AAI -m https://172.19.44.123:8443

Create VNF
===========

    there are many ways to create VNF, cmd:

A: create VNF with VNF id:
---------------------------

::
  onap>vnf-create -u AAI -p AAI -m https://172.19.44.123:8443  --name vn1 --vnf-id d9b1b05f-44c8-45ef-89aa-d27ad060ceb8 --vnf-type t1 --debug

B: create VNF with template:
-----------------------------

::

  onap>vnf-create-with-template -u AAI -p AAI -m https://172.19.44.123:8443 --vnf-id d9b1b05f-44c8-45ef-89aa-d27ad060ceb9 --template /opt/oclip/open-cli-schema/vnf-template.json

        Sample content of /opt/oclip/open-cli-schema/vnf-template.json
        {
            "vnf-id": "d9b1b05f-44c8-45ef-89aa-d27ad060ceb9",
            "vnf-name": "vvnf-name",
            "vnf-type": "vnf-type-1",
            "in-maint": true,
            "is-closed-loop-disabled": false
        }

Create relationship between service instance and PNF/VNF:
=========================================================

::

  onap>service-instance-relationship-create -u AAI -p AAI -m https://172.19.44.123:8443 -g Orange -z EC -i 176d9eba-1662-4289-8396-0097b50fd485 -r /opt/oclip/open-cli-schema/relation.json

    Sample content of  /opt/oclip/open-cli-schema/relation.json:

            {
                        "related-to": "pnf",
                        "related-link": "/aai/v11/network/pnfs/pnf/pnf_template",
                        "relationship-data": [
                            {
                                "relationship-key": "pnf.pnf-name",
                                "relationship-value": "pnf_template"
                            }
                        ]
            }

List Service-instance relationship:
------------------------------------

::

  onap>service-instance-relationship-list -u AAI -p AAI -m https://172.19.44.123:8443 -g Orange -z EPC -i 176d9eba-1662-4289-8396-0097b50fd485

    Output:

        +--------------+----------------------------------------------------+
        |related-to    |related-link                                        |
        +--------------+----------------------------------------------------+
        |pnf           |/aai/v11/network/pnfs/pnf/pnf_template              |
        +--------------+----------------------------------------------------+
        |pnf           |/aai/v11/network/pnfs/pnf/testcmdpnfname            |
        +--------------+----------------------------------------------------+
        |logical-link  |/aai/v11/network/logical-links/logical-link/S11-00  |
        |              |001                                                 |
        +--------------+----------------------------------------------------+
        |pnf           |/aai/v11/network/pnfs/pnf/MME-0001                  |
        +--------------+----------------------------------------------------+
        |pnf           |/aai/v11/network/pnfs/pnf/SP%20GW-0001              |
        +--------------+----------------------------------------------------+

Delete Service-instance relationship:
--------------------------------------

::

  onap>service-instance-relationship-delete -u AAI -p AAI -m https://172.19.44.123:8443 -g Orange -z EPC -i 176d9eba-1662-4289-8396-0097b50fd485 -r /opt/oclip/open-cli-schema/relation.json

    Sample content of     /opt/oclip/open-cli-schema/relation.json is same as the one used to create relation.

batch import PNF/VNF:
=====================
    Since all the cmd support batch model, user can import multi-PNF/VNF one time:
    This CMD should be run on system terminal:

cmd:
-------

::

  onap>oclip -p create-batch.yaml pnf-create

        Sample content of create-batch.yaml:

        pnf1:
          - name: batch-name-1
          - host-username: AAI
          - host-password: AAI
          - host-url: https://172.19.44.123:8443

        pnf2:
          - name: batch-name-2
          - host-username: AAI
          - host-password: AAI
          - host-url: https://172.19.44.123:8443
          - template: |
                        {
                            "relationship": [
                                {
                                    "related-to": "logical-link",
                                    "related-link": "/aai/v11/network/logical-links/logical-link/S11-00001",
                                    "relationship-data": [
                                        {
                                            "relationship-key": "logical-link.link-name",
                                            "relationship-value": "S11-00001"
                                        }
                                    ]
                                }
                            ]
                         }

User can also use create with template cmd for batch execute:

sample cmd:
----------------

::

  oclip -p create-batch.yaml pnf-create-with-template

Checke AAI topology through portal:
====================================

Typing the key word, (service,PNF,generic-vnf,customer),the search text box will pup up auto suggestion of the search key word.
e.g.
::

    service-instance called 176d9eba-1662-4289-8396-0097b50fd485
    customer called test
    pnf called MME-0001
    generic-vnf called d9b1b05f-44c8-45ef-89aa-d27ad060ceb4