Versions Compared

Key

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

Table of Contents

Info
titleCasablanca Release

The Service Decomposition microservice was first introduced in the Casablanca release of ONAP.

Overview

The Service Decomposition microservice provides a way for clients to effectively mine an A&AI datasource by simply providing a ServiceInstanceID. The microservice utilizes a number of A&AI API operations in order to obtain a complete list of resources that comprise the service.  See also Service Decomposition API

Use in POMBA

The initial use case for Service Decomposition is to provide support for the Network Discovery Context Builder introduced in the POMBA project. When the Network Discovery Context Builder is tasked with fetching service details from the network, the first step in doing so is to query this microservice in order to obtain a list of resources – e.g. vservers, l3-networks – that need to be queried within the network in order to build a complete picture of the service.

Gliffy
nameService Decomposition in POMBA
pagePin2

Configuration

Application Properties

Code Block
languagebash
titleApplication Properties
collapsetrue
spring.jersey.type=filter
spring.mvc.urls=swagger,docs,prometheus,auditevents,info,heapdump,autoconfig,beans,loggers,dump,env,trace,health,configprops,mappings,metrics,webjars


server.contextPath=/service-decomposition
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration

#This property is used to set the Tomcat connector attributes.developers can define multiple attributes separated by comma
#tomcat.connector.attributes=allowTrace-true
#The max number of active threads in this pool
server.tomcat.max-threads=200
#The minimum number of threads always kept alive
server.tomcat.min-Spare-Threads=25
#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
server.tomcat.max-idle-time=60000

basicAuth.username=admin
basicAuth.password=OBF:1u2a1toa1w8v1tok1u30

# AAI REST Client Configuration
aai.host=135.63.125.59
aai.port=8443
aai.httpProtocol=http
aai.trustStorePath=tomcat_keystore
aai.keyStorePath=aai-client-cert.p12
aai.keyStorePassword=OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o
aai.keyManagerFactoryAlgorithm=SunX509
aai.keyStoreType=PKCS12
aai.securityProtocol=TLS
aai.connectionTimeout=5000
aai.readTimeout=1000
aai.resourceList=vnfc,vserver,l3-network

aai.serviceInstancePath=/aai/v13/nodes/service-instance/{0}

#Servlet context parameters
server.context_parameters.p-name=value #context parameter with p-name as key and value as value.



Interfaces/API

Note: 

The type of supported resources are configurable thru above application.properties file. For example,

             aai.resourceList=vnfc,vserver,l3-network

Which means the resources vnfc, vserver and I3-network from aai enricher will be processed. Anything else will be omitted.


Interfaces/API

Inputs:

Method: GET

Resource path: /service-decomposition/service/context

Parameters:

Header - X-ONAP-PartnerName is mandatory. It used to be called "X-FromAppId"

Header - X-ONAP-RequestID is optional and is generated if not provided. It used to be called "X-TransactionId".

Query Parameter - serviceInstanceId is mandatory

Header - Authentication is also mandatory but hidden. Currently the Authorization method is "Basic".


URI Example

Code Block
titleService Decomposition URI example
http://10.147.112.136:8080/service-decomposition/service/context?serviceInstanceId=c6456519-6acf-4adb-997c-3c363dd4caaf

JSON response example

Code Block
languagexml
titleService Decomposition JSON response example
collapsetrue
{
    "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",
    "service-instance-name": "Firewall1"
}

Relationships

This diagram represents current understanding of relationship model for above resource types. Related entities (among supported resource types - vserver, l3-network, vf-module, vnfc) are looked up from Generic-VNF(s) related to service instance.

Image Added

 

Note that VNFC, VF-Module, L3-Network and VServer are not checked for any further relationships.


See also Network Discovery Demo - Sept 12, 2018