Table of Contents | ||
---|---|---|
|
Architecture
Overview
- Will demonstrate Network Discovery Microservice and Service Decomposition Microservice
- Relies on supporting Microservices not yet in ONAP, but we can show
- Standardized API and provide a sense of its extensibility to support discovering of additional components
- VM attributes from Openstack
- How this fits into POMBA architecture
- How this could be leveraged in other use cases
Southbound API
- The following is the information expected from the southbound interface to network discovery
- Examples (coming soon)
- Mocking in SoapUI (soon)
Video
The demo shows a request being sent to POMBA's Network Discovery Context Builder, which makes use of Service Decomposition in order to build a list of resources that comprise the specified service. The context builder then takes advantage of the Network Discovery service to obtain details from the network for each of those resources. The context builder collates the information returned by Network Discovery for each resource before providing the collected data to POMBA's Context Aggregator for inclusion in an audit.
View file | ||||
---|---|---|---|---|
|
Captures
Network Discovery Context Builder → Service Decomposition
The context builder first needs to determine what resources comprise the service undergoing auditing and so it employs Service Decomposition.
Request
Code Block | ||||
---|---|---|---|---|
| ||||
http://10.147.112.142136:8080/ndcontextbuilderservice-decomposition/service/context?serviceInstanceId=c6456519-6acf-4adb-997c-3c363dd4caaf |
Response
Code Block | ||||
---|---|---|---|---|
| ||||
{
"relationship-list": {
"relationship": [ |
{
|
"related-to": "generic-vnf",
|
"relationship-data": [ |
{ |
|
"relationship-value": "6700c313-fbb7-4cf9-ac70-0293ec56df68",
|
"relationship-key": "generic-vnf.vnf-id" |
|
} |
],
|
"related-link": "/aai/v13/network/generic-vnfs/generic-vnf/6700c313-fbb7-4cf9-ac70-0293ec56df68", |
|
"related-to-property": [{ "property-key": "generic-vnf.vnf-name", |
|
"property-value": "PacketGenerator-1" |
|
} |
] |
|
},
|
{ |
|
"related-to": "generic-vnf", |
"relationship-data": [ |
{
|
"relationship-value": "6700c313-fbb7-4cf9-ac70-0293ec56df69",
|
"relationship-key": "generic-vnf.vnf-id"
|
} |
], |
|
"related-link": "/aai/v13/network/generic-vnfs/generic-vnf/6700c313-fbb7-4cf9-ac70-0293ec56df69", |
"related-to-property": [ |
{
|
"property-key": "generic-vnf.vnf-name", |
|
"property-value": "PacketGenerator-2"
|
} |
]
|
} |
]
},
"model-version-id": "d3d6cf83-d03a-43cc-99ff-206d40bb9a72",
"service-instance-id": "c6456519-6acf-4adb-997c-3c363dd4caaf",
"resource-version": "1527637758480",
"generic-vnfs": [ |
{ |
"nf-role": "",
|
"service-id": "8ea56b0d-459d-4668-b363-c9567432d8b7",
|
"relationship-list": {
|
"relationship": [{ |
"related-to": "service-instance", |
"relationship-data": [{ " |
relationship- |
value": " |
Demonstration", |
"relationship- |
key": |
"customer.global-customer-id" }, |
|
{ |
"relationship-value": " |
vFWCL", |
"relationship-key": " |
service-subscription. |
service- |
type" |
}, { |
"relationship-value": "c6456519-6acf-4adb-997c-3c363dd4caaf", |
"relationship- |
key": " |
service-instance.service-instance-id" }], " |
related- |
link": "/aai/v11/business/customers/customer/Demonstration/service- |
subscriptions/service-subscription/vFWCL/service-instances/service-instance/c6456519-6acf-4adb-997c-3c363dd4caaf", "related-to-property": [{ |
"property-key": "service-instance.service-instance-name", |
"property-value": "Firewall1" }] |
}, { |
" |
related- |
to": " |
l3-network", "relationship-data": [{ |
|
"relationship-value": "HNP1d77c-1094-41ec-b7f3-94bb30951870", |
"relationship-key": "l3-network.network-id" }], "related-link": "/aai/ |
v13/ |
network/l3-networks/l3-network/HNP1d77c-1094-41ec-b7f3-94bb30951870", "relationship-label": "org.onap.relationships.inventory.Uses", "related-to-property": [{ "property-key": "l3-network.network-name", |
"property-value": "HNPORTALOAM.OAM" }] |
}, { " |
related- |
to": " |
vserver", "relationship-data": [{ |
"relationship-value": "CloudOwner", |
"relationship-key": "cloud-region.cloud-owner" |
}, { |
" |
relationship- |
value": " |
RegionOne", |
|
"relationship- |
key": |
"cloud-region.cloud-region-id" }, |
{ |
"relationship-value": |
"b49b830686654191bb1e952a74b014ad", |
"relationship-key": " |
tenant. |
tenant-id" |
|
}, |
{ |
" |
relationship- |
value": " |
25fb07ab-0478-465e-a021-6384ac299671", |
"relationship- |
key": " |
vserver.vserver-id" }], |
|
|
"related-link": "/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/b49b830686654191bb1e952a74b014ad/vservers/vserver/25fb07ab-0478-465e-a021-6384ac299671" }, |
{ |
" |
related- |
to": " |
vserver", "relationship-data": [{ " |
relationship-value": " |
CloudOwner", "relationship-key": "cloud-region.cloud-owner" |
}, |
{ |
"relationship-value": "RegionOne", |
"relationship-key": "cloud-region.cloud-region-id" }, |
|
{ "relationship- |
value": |
"b49b830686654191bb1e952a74b014ad", "relationship-key": "tenant.tenant-id" |
}, { |
"relationship-value": "25fb07ab-0478-465e-a021-6384ac299672", "relationship-key": " |
vserver. |
vserver- |
id" }], |
"related-link": "/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/b49b830686654191bb1e952a74b014ad/vservers/vserver/25fb07ab-0478-465e-a021-6384ac299672" }] }, |
"vnf-id": "6700c313-fbb7-4cf9-ac70-0293ec56df68", "nf-type": "", |
" |
l3- |
networks": |
[{ |
"network-role": "HNPORTALOAM.OAM", " |
network- |
technology": " |
ovs", "service-id": "V7611HNP-1222-48f1-8085-94aef0c6ef3d51870", |
"network-id": "HNP1d77c-1222-41ec-b7f3-94bb30951870", "neutron-network-id": "491c7cef-a3f4-4990-883e-b0af397466d0", "is-external-network": false, |
"is-bound-to-vpn": false, |
"is-provider-network": |
false, |
"network-type": "OVS_PROVIDER_VLAN", |
" |
orchestration- |
status": " |
active", "network-role-instance": 0, |
"resource-version": "1526558298075", "network-name": "HNPORTALOAM.OAM", "is-shared-network": false |
}], |
"prov-status": "PREPROV", " |
vnf- |
type": " |
vFW- |
vSINK-service/vPKG 0", "orchestration-status": "Created", "nf-naming-code": "", "in-maint": false, " |
nf- |
function": |
"", "model-version-id": "a5565bf4-d55a-4964-8fbc-6a7674a2e676", "vservers": [{ "relationship-list": { |
"relationship": [{ |
"related-to": "generic-vnf", " |
relationship- |
data": |
[{ "relationship-value": "8a9ddb25-2e79-449c-a40d-5011bac0da39", |
"relationship-key": "generic-vnf.vnf-id" |
}], "related- |
link": " |
/aai/v11/network/generic-vnfs/generic-vnf/8a9ddb25-2e79-449c-a40d-5011bac0da39", |
"related-to-property": [{ |
"property-key": "generic-vnf.vnf-name", |
|
"property-value": " |
Firewall-1" |
}] |
|
}, { |
"related-to": "flavor", |
"relationship-data": [{ |
"relationship-value": " |
CloudOwner", |
"relationship-key": "cloud-region.cloud- |
owner" |
}, |
|
{
|
"relationship-value": " |
RegionOne", |
|
"relationship-key": " |
cloud-region.cloud-region-id" |
|
},
|
{
|
"relationship-value": "764efb04-5a46-4806-a766-2bdd24559f39", |
"relationship-key": " |
flavor. |
flavor-id" |
} |
],
|
"related-link": "/aai/ |
v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/ |
flavors/ |
flavor/764efb04-5a46-4806-a766-2bdd24559f39", "related-to-property": [{ |
|
"property-key": "flavor.flavor-name", |
" |
property- |
value": " |
m1.medium" }] |
|
|
}, { " |
related- |
to": " |
image", " |
relationship- |
data": |
[{ " |
relationship- |
value": " |
CloudOwner", " |
relationship- |
key": " |
cloud- |
region.cloud-owner" }, |
|
{ |
|
" |
relationship-value": |
"RegionOne", |
|
|
"relationship-key": " |
cloud-region.cloud-region-id" |
}, { |
|
" |
relationship- |
value": " |
42fd42f8-cf81-4f4c-a552-d4b124f83b0b", " |
relationship- |
key": " |
image. |
image-id" |
|
}], |
|
"related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/images/image/42fd42f8-cf81-4f4c-a552-d4b124f83b0b", |
" |
related-to- |
property": |
[{ |
|
|
|
" |
property- |
key": " |
image.image-name", |
|
|
" |
property- |
value": "unknown" |
|
|
}] |
|
}] |
|
}, |
|
"in-maint": false, |
" |
resource- |
version": |
"1528481820321", |
"vserver-name": |
"Firewall-0", "prov-status": "ACTIVE", "vserver-id": |
"25fb07ab-0478-465e-a021-6384ac299671", "vserver-name2": "Firewall-0", |
"vserver-selflink": " |
http://10.12.25.2:8774/v2.1/b49b830686654191bb1e952a74b014ad/servers/25fb07ab-0478-465e-a021-6384ac299671", |
"is-closed-loop-disabled": false }, { "relationship- |
list": |
{ "relationship": [{ "related-to": "generic-vnf", |
"relationship-data": [{ "relationship-value": "8a9ddb25-2e79-449c-a40d-5011bac0da39", |
|
"relationship-key": "generic-vnf.vnf-id" }], |
"related-link": "/aai/v11/network/generic-vnfs/generic-vnf/8a9ddb25-2e79-449c-a40d-5011bac0da39", "related-to-property": [{ |
|
"property-key": "generic-vnf.vnf-name", |
"property-value": |
"Firewall-1" }] |
}, { |
" |
related- |
to": " |
flavor", "relationship-data": [{ " |
relationship-value": " |
CloudOwner", "relationship-key": "cloud-region.cloud-owner" |
}, { |
"relationship-value": "RegionOne", |
"relationship-key": "cloud-region.cloud-region-id" |
}, |
{ |
"relationship- |
value": |
"764efb04-5a46-4806-a766-2bdd24559f39", "relationship-key": "flavor.flavor-id" |
}], |
"related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/flavors/flavor/764efb04-5a46-4806-a766-2bdd24559f39", "related-to-property": [{ " |
property-key": " |
flavor. |
flavor- |
name", "property-value": "m1.medium" |
}] }, { "related-to": "image", "relationship- |
data": |
[{ "relationship-value": "CloudOwner", "relationship-key": "cloud-region.cloud- |
owner" }, |
{ "relationship-value": "RegionOne", |
"relationship-key": "cloud-region.cloud-region-id" }, |
|
{ "relationship- |
value": " |
42fd42f8-cf81-4f4c-a552-d4b124f83b0b", |
"relationship-key": "image.image-id" |
|
}], |
"related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/ |
images/ |
image/ |
42fd42f8- |
cf81- |
4f4c- |
a552- |
d4b124f83b0b", |
"related-to-property": [{ |
"property-key": "image.image-name", |
"property-value": "unknown" |
}] }] }, " |
in- |
maint": |
false, "resource-version": "1528481820321", "vserver-name": "Firewall-0", |
"prov-status": "ACTIVE", "vserver-id": "25fb07ab-0478-465e-a021-6384ac299672", |
"vserver-name2": "Firewall-0", "vserver-selflink": "http://10.12.25.2:8774/v2.1/b49b830686654191bb1e952a74b014ad/servers/25fb07ab-0478-465e-a021-6384ac299672", "is-closed-loop-disabled": false |
}], "resource-version": "1527638176989", "model-customization-id": |
"4cc1e555-361f-4d69-ae21-9f371ea9f40c", |
"vf-modules": { |
"vf-module": |
[{ "vf-module-name": "vPacketGen-VNF-1128-3", " |
model-version- |
id": |
"d6d4a002-a584-4640-bdce-a50e9bce552b", "heat-stack-id": "vPacketGen-VNF-1128-3/df34f5d6-ed39-4184-b785-51c37cfa8ac2", "resource-version": "1527641224058", |
|
"model-customization-id": " |
49c8f521-e5ee-4095-bb87-4090166e49ab", |
"is-base-vf-module": true, |
" |
vf-module- |
id": " |
0f792076-f5b3-4251-9fcc-c4d5afae0eb1", "module-index": 0, |
"model-invariant-id": "2a8844a8-f5f7-46dd-a732-472c6972a28e", "orchestration-status": "active" }] |
}, "vserver": [{ |
"vserver-name": "Firewall-1", " |
vserver- |
id": " |
25fb07ab-0478-465e-a021-6384ac299671", "model-invariant-id": "0c5a20de-87ad-442c-9190-f38ab0a6bb7f" }], |
"model-invariant-id": " |
99f1fd3f-845c-48f5-a0ba-11fbde6ae557", "vnf-name": "PacketGenerator-1", "is-closed-loop-disabled": false }, { |
"nf-role": "", "service-id": "8ea56b0d-459d-4668-b363-c9567432d8b9", "relationship-list": { "relationship": [{ |
"related-to": "service-instance", "relationship- |
data": |
[{ "relationship-value": "Demonstration", "relationship-key": " |
customer. |
global-customer-id" }, { |
"relationship-value": "vFWCL", |
"relationship-key": "service-subscription.service-type" }, |
|
{ " |
relationship- |
value": |
"c6456519-6acf-4adb-997c-3c363dd4caaf", "relationship-key": "service-instance.service-instance-id" |
}], |
"related-link": "/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFWCL/service-instances/service-instance/c6456519-6acf-4adb-997c-3c363dd4caaf", "related-to-property |
": |
[{ "property-key": "service-instance.service-instance-name", "property-value": " |
Firewall1" }] }, |
{ "related-to": "l3-network", |
"relationship-data": [{ |
"relationship-value": "HNP1d77c-1094-41ec-b7f3-94bb30951870", "relationship-key": |
"l3-network.network-id" |
}], |
|
" |
related- |
link": |
"/aai/v13/network/l3-networks/l3-network/HNP1d77c-1094-41ec-b7f3-94bb30951871", |
" |
relationship- |
label": " |
org.onap.relationships.inventory.Uses", |
|
"related-to-property": |
[{ " |
property- |
key": " |
l3-network.network-name", " |
property- |
value": " |
HNPORTALOAM.OAM" }] |
|
}, { |
|
"related-to": "vserver", |
|
"relationship-data": [{ |
|
"relationship-value": "CloudOwner", "relationship- |
key": |
"cloud-region.cloud-owner" }, |
|
{ |
"relationship-value": "RegionOne", "relationship-key": "cloud-region.cloud-region-id" |
}, { "relationship- |
value": |
"b49b830686654191bb1e952a74b014ad", "relationship-key": "tenant.tenant-id" |
}, { |
"relationship-value": " |
25fb07ab- |
0478- |
465e- |
a021- |
6384ac299671", |
|
"relationship-key": " |
vserver. |
vserver-id" }], |
"related-link": "/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/b49b830686654191bb1e952a74b014ad/vservers/vserver/b494cd6e-b9f3-45e0-afe7-e1d1a5f5d74b" }] |
}, |
"vnf-id": " |
6700c313-fbb7-4cf9-ac70-0293ec56df69", "nf-type": "", "l3-networks": [{ " |
network- |
role": |
"HNPORTALOAM.OAM", "network-technology": "ovs", "service-id": "V7611HNP-1222-48f1-8085-94aef0c6ef3d51870", |
"network-id": "HNP1d77c-1222-41ec-b7f3-94bb30951870", "neutron-network-id": "491c7cef-a3f4-4990-883e-b0af397466d0", |
"is-external-network": false, "is-bound-to-vpn": false, "is-provider-network": false, " |
network- |
type": " |
OVS_PROVIDER_VLAN", "orchestration-status": "active", "network-role-instance": 0, |
"resource-version": "1526558298075", "network-name": "HNPORTALOAM.OAM", |
"is-shared-network": false }], |
"prov-status": "PREPROV", "vnf-type": "vFW-vSINK-service/vPKG 0", "orchestration-status": "Created", |
"nf-naming-code": "", "in-maint": false, "nf-function": "", |
" |
model-version- |
id": " |
a5565bf4-d55a-4964-8fbc-6a7674a2e676", "vservers": [{ |
"relationship-list": { |
|
"relationship": [{ "related-to": "generic-vnf", |
"relationship-data": [{ "relationship-value": " |
8a9ddb25-2e79-449c-a40d-5011bac0da39", |
|
"relationship-key": " |
generic- |
vnf. |
vnf- |
id" |
}], "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/8a9ddb25-2e79-449c-a40d-5011bac0da39", |
"related-to-property": [{ |
"property-key": " |
generic-vnf.vnf-name", "property-value": "Firewall-1" |
|
}] }, |
{ "related-to": "flavor", |
|
"relationship-data": [{ |
"relationship-value": " |
CloudOwner", |
"relationship-key": " |
cloud-region. |
cloud- |
owner" }, |
{ |
"relationship-value": "RegionOne", |
"relationship-key": " |
cloud- |
region.cloud- |
region |
-id" }, |
|
{ |
"relationship-value": "764efb04-5a46-4806-a766-2bdd24559f39", |
"relationship-key": "flavor.flavor- |
id" |
}], " |
related- |
link": " |
/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/flavors/flavor/764efb04-5a46-4806-a766-2bdd24559f39", "related-to-property": [{ |
"property-key": "flavor.flavor-name", |
"property-value": "m1.medium" |
}] }, |
{ "related-to": "image", |
|
"relationship-data": [{ "relationship-value": "CloudOwner", |
"relationship-key": "cloud-region.cloud-owner" }, |
|
|
{ "relationship- |
value": " |
RegionOne", |
"relationship-key": "cloud-region.cloud-region-id" |
}, { |
"relationship-value": "42fd42f8-cf81-4f4c-a552-d4b124f83b0b", "relationship- |
key": " |
image.image-id" }], " |
related- |
link": "/aai/v11/cloud- |
infrastructure/cloud-regions/cloud-region |
/CloudOwner/RegionOne/images/image/42fd42f8-cf81-4f4c-a552-d4b124f83b0b", "related-to-property": [{ |
"property-key": "image.image-name", "property-value": "unknown" |
}] }] |
|
}, "in-maint": false, |
"resource-version": " |
1528481820321", "vserver-name": "Firewall-0", "prov-status": "ACTIVE", |
"vserver-id": "b494cd6e-b9f3-45e0-afe7-e1d1a5f5d74b", "vserver-name2": "Firewall-0", |
"vserver-selflink": "http://10.12.25.2:8774/v2.1/b49b830686654191bb1e952a74b014ad/servers/25fb07ab-0478-465e-a021-6384ac299671", |
"is-closed-loop-disabled": false }], " |
resource- |
version": " |
1527638176989", "model-customization-id": "4cc1e555-361f-4d69-ae21-9f371ea9f40c", "vf-modules": { " |
vf- |
module": [{ "vf-module-name": "vPacketGen-VNF-1128-3", "model-version-id": |
"d6d4a002-a584-4640-bdce-a50e9bce552b", |
"heat-stack-id": "vPacketGen-VNF-1128-3/df34f5d6-ed39-4184-b785-51c37cfa8ac2", |
" |
resource- |
version": " |
1527641224058", |
"model-customization-id": "49c8f521-e5ee-4095-bb87-4090166e49ab", |
"is-base-vf-module": |
true, "vf-module-id": "0f792076-f5b3-4251-9fcc-c4d5afae0eb1", "module-index": 0, |
"model-invariant-id": "2a8844a8-f5f7-46dd-a732-472c6972a28e", |
"orchestration-status": "active" }] |
}, |
"vserver": [{ "vserver-name": "Firewall-1", |
|
"vserver-id": "25fb07ab-0478-465e-a021-6384ac299672", |
"model-invariant-id": |
"0c5a20de-87ad-442c-9190-f38ab0a6bb7f" }], |
"model-invariant-id": " |
99f1fd3f-845c-48f5-a0ba-11fbde6ae557", |
|
" |
vnf-name": " |
PacketGenerator- |
2", "is-closed-loop-disabled": false }], |
" |
model-invariant- |
id": " |
0c5a20de-87ad-442c-9190-f38ab0a6bb7f", |
" |
Response
Code Block | ||||
---|---|---|---|---|
| ||||
{ "service": { "uuid": "c6456519-6acf-4adb-997c-3c363dd4caaf", "dataQuality": { "status": "ok" }, "attributeList": [] }, "dataQuality": { "status": "ok" }, "attributeList": [], "vfList": [ { "dataQuality": { "status": "ok" }, "attributeList": [], "vfModuleList": [ { "maxInstances": 0, "minInstances": 0, "dataQuality": { "status": "ok" }, "attributeList": [], "vmList": [ { "uuid": "25fb07ab-0478-465e-a021-6384ac299671", "nfNamingCode": "vserver", "dataQuality": { "status": "error", "errorText": "ENRICHER-204, REST client response error." }, "attributeList": [] }, { "uuid": "25fb07ab-0478-465e-a021-6384ac299672", "nfNamingCode": "vserver", "dataQuality": { "status": "error", "errorText": "ENRICHER-204, REST client response error." }, "attributeList": [] } ], "networkList": [ { "uuid": "HNP1d77c-1222-41ec-b7f3-94bb30951870", "type": "l3-network", "dataQuality": { "status": "error", "errorText": "ENRICHER-312, Unknown SoT as Enricher could not recognize the SoT reference." }, "attributeList": [] } ] } ], "vnfcList": [] }, { "dataQuality": { "status": "ok" }, "attributeList": [], "vfModuleList": [ { "maxInstances": 0, "minInstances": 0, "dataQuality": { "status": "ok" }, "attributeList": [], "vmList": [ { "uuid": "b494cd6e-b9f3-45e0-afe7-e1d1a5f5d74b", "nfNamingCode": "vserver", "dataQuality": { "status": "error", "errorText": "ENRICHER-204, REST client response error." }, "attributeList": [] } ], "networkList": [ { "uuid": "HNP1d77c-1222-41ec-b7f3-94bb30951870", "type": "l3-network", "dataQuality": { "status": "error", "errorText": "ENRICHER-312, Unknown SoT as Enricher could not recognize the SoT reference." }, "attributeList": [] } ] } ], "vnfcList": [] } ]service-instance-name": "Firewall1" } |
Network Discovery Context Builder → Network Discovery
The context builder next needs to send multiple requests – one for each resource provided by Service Decomposition – to Network Discovery in order to obtain the values of associated attributes.
Request
Code Block | ||||
---|---|---|---|---|
| ||||
http://10.147.112.148:8080/network-discovery/v1/network/resource?id=HNP1d77c-1222-41ec-b7f3-94bb30951870 |
Response
Code Block | ||||
---|---|---|---|---|
| ||||
[requestId=9d9bbc4a-787a-44d3-8ac4-37daed95b252___13, code=200, message=OK, ackFinalIndicator=true, resources=[Resource [id=HNP1d77c-1222-41ec-b7f3-94bb30951870, name=null, type=l3-network, dataQuality=DataQuality [status=error, errorText=ENRICHER-312, Unknown SoT as Enricher could not recognize the SoT reference.], attributeList=null]]] |