...
JSON Viewer | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "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.
OOF Configuration
OSDF CHANGES(FOR NST 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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
...
This block is an illustration is when the model name is- "URLLC_1"
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Code Block | ||||||||
| ||||||||
#./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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#!/bin/bash echo "preloading AAI !/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": "2d5b9bc2-0ece-4b5c-b5f7-dcdc19f53ad1"'"$1"'", "model-version-id": "9507fc4a-37d3-4024-a991-9a56c16c4dc0"'"$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": "c0eeaa3b-625c-4518-bd1f-f01cc784813c'"$3"'", "model-version-id": "836eb219-346d-4b8b-8376-b0c4d17954a9'"$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": "2d5b9bc2-0ece-4b5c-b5f7-dcdc19f53ad1"'"$1"'", "model-version-id": "9507fc4a-37d3-4024-a991-9a56c16c4dc0'"$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 |
This script can be run by passing the model invariant id and model version id of NST and NSST in the respective order
eg ./pre_v1.sh 2d5b9bc2-0ece-4b5c-b5f7-dcdc19f53ad1 9507fc4a-37d3-4024-a991-9a56c16c4dc0 c0eeaa3b-625c-4518-bd1f-f01cc784813c 836eb219-346d-4b8b-8376-b0c4d17954a9
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Code Block | ||||||||
| ||||||||
#./policy.sh EmbbNst EmbbCn 5t636c4d-5e76-427e-bfd6-241a947224b0 1a636c4d-5e76-427e-bfd6-241a947224b0 |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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!/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-namemetadata": "nsi_test_0211",{ "servicepolicy-typeid": "embbOSDF_FRANKFURT.vnfPolicy_URLLC_Core_1", "servicepolicy-roleversion": "nsi" 1 }, "model-invariant-idproperties": "'"$1"'", { "model-version-idscope": [ "'"$2"'" "OSDF_FRANKFURT", "orchestration-status": "active$1"}'), 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": { "$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", "relationshipmetadata": [{ { "relatedpolicy-toid": "service-instance"OSDF_FRANKFURT.Threshold_URLLC_Core_1", "relationship-label": "org.onap.relationships.inventory.ComposedOf", "policy-version":1 "related-link": "/aai/v16/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/1a636c4d-5e76-427e-bfd6-241a947224b0", "relationship-data": [ }, "properties":{ "relationship-keyscope": "customer.global-customer-id", [ "relationship-value": "5GCustomerOSDF_FRANKFURT", }, "$1", {"$2" "relationship-key": "service-subscription.service-type" ], "relationship-valueresources": "5G" [ }, "$2" {], "relationship-key": "service-instance.service-instance-id", "services":[ "relationship-value": "1a636c4d-5e76-427e-bfd6-241a947224b0$1" } ], ], "related-to-propertygeography": [], {"identity":"Threshold_URLLC_Core_1", "property-keythresholdProperties": "service-instance.service-instance-name", [ "property-value": "nssi_test_0211" { } "attribute":"latency", ] } ] } }') echo $result resourceversion=$(curl --user AAI:AAI -X GET -H "operator"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 '{ "lte", "threshold":5, "unit":"ms" } "profile-id": "cdad9f49-4201-4e3a-aac1-b0f27902c299", ] "latency": 5, } "max-number-of-UEs": 0, } } EOF cat <<EOF >subscriber_policy_URLLC_1.json { "coverage-area-TA-listOSDF_FRANKFURT.SubscriberPolicy_URLLC_1": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]{ "type": "onap.policies.optimization.service.SubscriberPolicy", "version": "1.0.0", "type_version": "1.0.0", "metadata": { "uepolicy-mobility-levelid": "stationaryOSDF_FRANKFURT.SubscriberPolicy_URLLC_1", "resource-sharing-level"policy-version": "shared",1 }, "properties": { "exp-data-rate-UL"scope": 100,[ "OSDF_FRANKFURT", "exp-data-rate-DL": 100,$1" ], "activity-factorservices": 0,[ "$1" "e2e-latency": 0], "jitter"identity": 0"subscriber_URLLC_1", "properties": { "survival-timesubscriberName": 0,[ "exp-data-rate": 0,"$2" ] "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 (/opt/osdf/test/policy-local-policies/ )
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# kubectl cp -n onap <path to the test folder> <osdf-pod name>:/opt/osdf/ |
(For now, all the three policies has to be updated manually every time the model changes). For convenience test folder is kept in the test environment.
...
}
}
}
}
EOF |
(ii) after the script gets executed, directory named "test" gets created. Copy the test directory inside the Pod
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# 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 | ||
---|---|---|
| ||
PUT /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}
application/json
{
"thirdparty-sdnc-id":"",
"location": "",
"product-name": "nssmf"
} |
Code Block | ||||
---|---|---|---|---|
| ||||
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> |