1. UUI Configuration
Configure CST template UUID and Invariant UUID in slicing.properties file of uui-server microservice
In uui-server microservice, modify the following configuration file, /home/UUI/config/slicing.properties
Add or update the parameters slicing.serviceInvariantUuid and parameter slicing.serviceUuid.
The values of these two parameters come from CST template which can be find on SDC page.
2. MSB Configuration
Register so-orchestrationTasks and so-serviceInstances interface to MSB.
Interface registration can be done through portal.
Steps(Portal):
Link: https://{{master server ip}}:30284/iui/microservices/default.html
1.Select ‘’ in the left pane
2. Click 'Service Register' button.
3. Input the basic info as the picture shows(also refer to the registration info provided above)
4. Click Add Host button.
Input IP Address and Port then click the 'SAVE' button. (Use cmd ’kubectl get svc -n onap so‘ to confirm IP and port.)
3. SO Database Update
Insert ORCHESTRATION_URI into service_recipe, SERVICE_MODEL_UUID replaced by CST.ModelId.
|
Insert ORCHESTRATION_URI into service_recipe, SERVICE_MODEL_UUID is ServiceProfile.ModelId
|
4. A&AI Configuration
If the service distribution to A&AI failed, like the picture shows bellow:
Add 'ServiceProfile' and 'NSTAR' model to A&AI through postman.(ServiceProfile/NSTAR Model Id and Invariant Id can be find on SDC page.)
Postman set as follows :
'ServiceProfile' request· body :
Elite soft json viewer | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"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 :
Elite soft 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.
5. 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
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
#./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 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
#./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",
"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 | ||||||
---|---|---|---|---|---|---|
| ||||||
# 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 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> |