Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Goal:Before running the 5G case, some manual configuration is required, part of which is a temporary way for this version.

Content:

Table of Contents

...

The values of these two parameters come from CST template which can be find on SDC page.

Image Modified     

MSB Configuration

...

Interface registration can be done through postman or portal.

Registration information:

Code Block
{
  "serviceName": "so-orchestrationTasks",
  "version": "v4",
  "url": "/onap/so/infra/orchestrationTasks/v4",
  "protocol": "REST",
  "port": "{{.Values.service.internalPort}}",
  "visualRange": "1",
  "enable_ssl": false
}, 
{
  "serviceName": "so-serviceInstances",
  "version": "v3",
  "url": "/onap/so/infra/e2eServiceInstances/v3",
  "protocol": "REST",
  "port": "{{.Values.service.internalPort}}",
  "visualRange": "1",
  "enable_ssl": false
}

...

Link: https://{{master server ip}}:30284/iui/microservices/default.html

Image Removed

Image Removed

Add instance:

 1.Select ‘’ in the left pane

 2. Click 'Service Register' button.

Image Added

 3. Input the basic info as the picture shows(also refer to the registration info provided above)

Image Added

4. Click Add Host button.

    Input IP Address and Port then click the 'SAVE' button. (Use cmd ’Use cmd `kubectl get svc -n onap so` in you k8s master server

Image Removed

Image Removed

then save it.

‘ to confirm IP and port.)

Image Added

SO Database Update

Insert ORCHESTRATION_URI into URI into service_recipe,  SERVICE_MODEL_UUID is replaced by CST.ModelId.

Code Block
INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('createInstance', '1', 'Custom recipe to create communication service-instance if no custom BPMN flow is found', '/mso/async/services/CreateCommunicationService', NULL, 180, NULL, 'c9252b26-f9cd-4e6c-988c-4d6ff39c6dda');

INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('deleteInstance', '1', 'Custom recipe to delete communication service if no custom BPMN flow is found', '/mso/async/services/DeleteCommunicationService', NULL, 180, NULL, 'c9252b26-f9cd-4e6c-988c-4d6ff39c6dda');

INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('activateInstance', '1.0', 'activate communication service', '/mso/async/services/ActivateCommunicationService', NULL, 180, NULL, 'c9252b26-f9cd-4e6c-988c-4d6ff39c6dda');

Insert ORCHESTRATION_URI into service_recipe,  SERVICE_MODEL_UUID is ServiceProfile.ModelId

Code Block
INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, 
`SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('createInstance', '1', 'Custom recipe to create slice\r\nservice-instance if no custom BPMN flow is found', '/mso/async/services/CreateSliceService', NULL, 180, NULL,'bfca8b32-3404-4e5c-a441-dc42b6823e88');

INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('deleteInstance', '1', 'Custom recipe to create slice\r\nservice-instance if no custom BPMN flow is found', '/mso/async/services/DeleteSliceService', NULL, 180, NULL, 'bfca8b32-3404-4e5c-a441-dc42b6823e88');

INSERT INTO `catalogdb`.`service_recipe`(`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `SERVICE_MODEL_UUID`) VALUES ('activateInstance', '1.0', 'Gr api recipe to activate service-instance', '/mso/async/services/ActivateSliceService', NULL, 180, NULL, 'bfca8b32-3404-4e5c-a441-dc42b6823e88');

...

If the service distribution to A&AI fails,  you should add the "ServiceProfile" and "NSTAR" infos in Afailed, like the picture shows bellow:

Image Added

Add 'ServiceProfile' and 'NSTAR' model to A&AI through postman. 

Tht infos can be find on SDC page.

Image Removed

...

(ServiceProfile/NSTAR Model Id and Invariant Id can be find on SDC page.)

Postman set as follows :

Image Added

'ServiceProfile' request· body :

JSON Viewer
hideMenutrue
width700
hideBordertrue
height260
{
	"model-invariant-id": "045e2672-1c46-4fca-810d-95f8cdb8bc38",
	"model-type": "service",
	"model-vers": {
	    "model-ver": [
	        {
	            "model-version-id": "bfca8b32-3404-4e5c-a441-dc42b6823e88",
	            "model-name": "ServiceProfile",
	            "model-version": "1.0"
	        }
	    ]
	}
}

'NSTAR' request· body :

JSON Viewer
hideMenutrue
width700
hideBordertrue
height260
{
	"model-invariant-id": "73e7212d-a340-4626-a050-a9d07b96e146",
	"model-type": "resource",
	"model-vers": {
	    "model-ver": [
	        {
	            "model-version-id": "7d33bac2-7372-45d6-89a3-d8b2ecf16f87",
	            "model-name": "NSTAR",
	            "model-version": "1.0"
	        }
	    ]
	}
}

Create Customer and service-subscription

Create customer(5GCustomer) and service-subscription(5G) in AAI.

Image Added

Image Added

OOF Configuration

OSDF CHANGES(FOR NST SELECTION)

New NST templates can be added in. There is a json file present in the osdf folder, where the nst templates can be added with the corresponding ModelId and ModelInvariantUUID.

The json file is found in the osdf folder in the corresponding path

apps/nst/optimizers/conf/configIinputs.json

Image Added


OSDF CHANGES(FOR NSI SELECTION)

1) In OOF charts- oom/kubernetes/oof/resources/config/common-config.yaml, the following changes has to be made before deploying oof.

  •  oof/resources/config/common-config.yml has to be updated to use local policies instead of remote policies. change "global_disabled" from True to False


Code Block
languageyml
themeRDark
collapsetrue
osdf_temp:  # special configuration required for "workarounds" or testing
    local_policies:
        global_disabled: False


  •  In  oof/resources/config/common-config.yml change the model name -  whenever the model name changes, it has to be updated here 

            EG. when the model name is "Embb_NST". Replace the keys with "slice_selection_policy_dir_embb_nst" &  "slice_selection_policy_dir_embb_nst" 

            This block is an illustration when the model name is- "URLLC_1"


Code Block
languageyml
themeRDark
collapsetrue
slice_selection_policy_dir_urllc_1: "./test/policy-local-files/"
slice_selection_policy_files_urllc_1:


2) AAI preload script should be executed (when we need shared nsi solution to be returned in the response)

This preload AAI  script can be run by passing the model invariant id and model version id of NST and NSST in the respective order

( ./pre_v1.sh  <model-inv-id of NST>  <model-vers-id of NST>  <model-inv-id of NSST>  <model-vers-id of NSST> )

Code Block
languageyml
themeRDark
collapsetrue
#./pre_v1.sh  2d5b9bc2-0ece-4b5c-b5f7-dcdc19f53ad1 9507fc4a-37d3-4024-a991-9a56c16c4dc0 c0eeaa3b-625c-4518-bd1f-f01cc784813c 836eb219-346d-4b8b-8376-b0c4d17954a9


Code Block
languagetext
titleAAI preload script
linenumberstrue
collapsetrue
#!/bin/bash
echo "preloading AAI data";
result=
resourceversion=
result=$(curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v14/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/4115d3c8-dd59-45d6-b09d-e756dee9b518 -d '{
    "service-instance-id": "4115d3c8-dd59-45d6-b09d-e756dee9b518",
    "service-instance-name": "nsi_test_0211",
    "service-type": "embb",
    "service-role": "nsi",
    "model-invariant-id": "'"$1"'",
    "model-version-id": "'"$2"'",
    "orchestration-status": "active"}')
echo $result
result=$(curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v14/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/1a636c4d-5e76-427e-bfd6-241a947224b0 -d '{
    "service-instance-id": "1a636c4d-5e76-427e-bfd6-241a947224b0",
    "service-instance-name": "nssi_test_0211",
    "service-type": "embb",
    "service-role": "nssi",
    "environment-context": "cn",
    "model-invariant-id": "'"$3"'",
    "model-version-id": "'"$4"'",
    "orchestration-status": "active"}')
echo $result
resourceversion=$(curl --user AAI:AAI -X GET -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v14/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/4115d3c8-dd59-45d6-b09d-e756dee9b518 | jq --raw-output '."resource-version"')
result=$(curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v14/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/4115d3c8-dd59-45d6-b09d-e756dee9b518 -d '{
    "service-instance-id": "4115d3c8-dd59-45d6-b09d-e756dee9b518",
    "service-instance-name": "nsi_test_0211",
    "service-type": "embb",
    "service-role": "nsi",
    "orchestration-status": "active",
    "model-invariant-id": "'"$1"'",
    "model-version-id": "'"$2"'",
    "resource-version":"'"$resourceversion"'",
    "relationship-list": {
        "relationship": [
            {
                "related-to": "service-instance",
                "relationship-label": "org.onap.relationships.inventory.ComposedOf",
                "related-link": "/aai/v16/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/1a636c4d-5e76-427e-bfd6-241a947224b0",
                "relationship-data": [
                    {
                        "relationship-key": "customer.global-customer-id",
                        "relationship-value": "5GCustomer"
                    },
                    {
                        "relationship-key": "service-subscription.service-type",
                        "relationship-value": "5G"
                    },
                    {
                        "relationship-key": "service-instance.service-instance-id",
                        "relationship-value": "1a636c4d-5e76-427e-bfd6-241a947224b0"
                    }
                ],
                "related-to-property": [
                    {
                        "property-key": "service-instance.service-instance-name",
                        "property-value": "nssi_test_0211"
                    }
                ]
            }
        ]
    }
}')
echo $result
resourceversion=$(curl --user AAI:AAI -X GET -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v19/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/1a636c4d-5e76-427e-bfd6-241a947224b0/slice-profiles/slice-profile/cdad9f49-4201-4e3a-aac1-b0f27902c299 | jq --raw-output '."resource-version"')
echo $resourceversion
result=$(curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://10.0.0.9:30233/aai/v19/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/1a636c4d-5e76-427e-bfd6-241a947224b0/slice-profiles/slice-profile/cdad9f49-4201-4e3a-aac1-b0f27902c299 -d '{
                "profile-id": "cdad9f49-4201-4e3a-aac1-b0f27902c299",
                "latency": 5,
                "max-number-of-UEs": 0,
                "coverage-area-TA-list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
                "ue-mobility-level": "stationary",
                "resource-sharing-level": "shared",
                "exp-data-rate-UL": 100,
                "exp-data-rate-DL": 100,
                "activity-factor": 0,
                "e2e-latency": 0,
                "jitter": 0,
                "survival-time": 0,
                "exp-data-rate": 0,
                "payload-size": 0,
                "traffic-density": 0,
                "conn-density": 0,
                "reliability":99.999,
                "resource-version":"'"$resourceversion"'"
            }')
echo $result
exit


3) Local policies (vnf, subscriber & threshold policy) should be copied to the osdf pod 

(i) Execute the below script in the test environment by passing nst name, nsst name, model invariant id of NSST & model version id (aka) model uuid of NSST (in the same order as mentioned here)

./policy.sh  <NST name>  <NSST name>  <model-invariant-id of NSST>  <model-version-id of NSST>

Code Block
languageyml
themeRDark
collapsetrue
#./policy.sh  EmbbNst EmbbCn 5t636c4d-5e76-427e-bfd6-241a947224b0 1a636c4d-5e76-427e-bfd6-241a947224b0


Code Block
languagepowershell
themeRDark
titlepolicy.sh
collapsetrue
mkdir test
cd test
mkdir policy-local-files
cd policy-local-files
cat <<EOF >vnfPolicy_URLLC_Core_1.json
{
  "OSDF_FRANKFURT.vnfPolicy_URLLC_Core_1": {
    "type": "onap.policies.optimization.resource.VnfPolicy",
    "version": "1.0.0",
    "type_version": "1.0.0",
    "metadata": {
      "policy-id": "OSDF_FRANKFURT.vnfPolicy_URLLC_Core_1",
      "policy-version": 1
    },
    "properties": {
      "scope": [
        "OSDF_FRANKFURT",
        "$1",
        "$2"
      ],
      "resources": [
        "$2"
      ],
      "services": [
        "$1"
      ],
      "identity": "vnf_URLLC_Core_1",
      "applicableResources": "any",
      "vnfProperties": [
        {
          "inventoryProvider": "aai",
          "inventoryType": "nssi",
          "region": "RegionOne",
          "attributes": {
            "orchestrationStatus": "active",
            "service-role": "nssi",
            "modelInvariantId":"$3",
            "modelVersionId":"$4"
          }
        }
      ]
    }
  }
}
EOF
cat <<EOF >thresholdPolicy_URLLC_Core_1.json
{
                   "OSDF_FRANKFURT.Threshold_URLLC_Core_1":{
                      "type":"onap.policies.optimization.resource.ThresholdPolicy",
                      "version":"1.0.0",
                      "type_version":"1.0.0",
                      "metadata":{
                         "policy-id":"OSDF_FRANKFURT.Threshold_URLLC_Core_1",
                         "policy-version":1
                      },
                      "properties":{
                         "scope":[
                            "OSDF_FRANKFURT",
                            "$1",
                            "$2"
                         ],
                         "resources":[
                            "$2"
                         ],
                         "services":[
                            "$1"
                         ],
                         "geography": [],
                         "identity":"Threshold_URLLC_Core_1",
                         "thresholdProperties":[
                               {
                                  "attribute":"latency",
                                  "operator":"lte",
                                  "threshold":5,
                                  "unit":"ms"
                               }
                         ]
                      }
                   }
}
EOF
cat <<EOF >subscriber_policy_URLLC_1.json
{
  "OSDF_FRANKFURT.SubscriberPolicy_URLLC_1": {
    "type": "onap.policies.optimization.service.SubscriberPolicy",
    "version": "1.0.0",
    "type_version": "1.0.0",
    "metadata": {
      "policy-id": "OSDF_FRANKFURT.SubscriberPolicy_URLLC_1",
      "policy-version": 1
    },
    "properties": {
      "scope": [
        "OSDF_FRANKFURT",
        "$1"
      ],
      "services": [
        "$1"
      ],
      "identity": "subscriber_URLLC_1",
      "properties": {
        "subscriberName": [
          "$2"
        ]
    }
  }
}
}
EOF

(ii) after the script gets executed, directory named "test" gets created. Copy the test directory inside the Pod

Code Block
languageyml
themeRDark
collapsetrue
# kubectl cp -n onap <path to the test folder>  <osdf-pod name>:/opt/osdf/

Example of these three policies can be found in this link  https://wiki.onap.org/display/DW/Policy+Models+and+Sample+policies+-+NSI+selection

ESR Configuration

Configure Simulator by Esr

Code Block
themeEclipse
PUT /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}

application/json
{
    "thirdparty-sdnc-id":"",
    "location": "",
    "product-name": "nssmf"
}


Code Block
themeEclipse
titleConfigure Simulator Info
PUT /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}

application/xml
<esr-system-info xmlns="http://org.onap.aai.inventory/v16">
    <esr-system-info-id></esr-system-info-id>
    <system-name></system-name>
    <version></version>
    <user-name></user-name>
    <password></password>
    <system-type></system-type>   
    <ip-address>simulator IP</ip-address>
    <port>simulator Port</port>   
</esr-system-info>