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" |
}], |
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." }, "model-invariant-id": "99f1fd3f-845c-48f5-a0ba-11fbde6ae557", "attributeListvnf-name": []"PacketGenerator-2", } ] "is-closed-loop-disabled": false } ], "vnfcList": []"model-invariant-id": "0c5a20de-87ad-442c-9190-f38ab0a6bb7f", } ]"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]]] |