-
Bug
-
Resolution: Done
-
High
-
Frankfurt Release
-
SO 1.6.3-20200526T1052 snapshot, with latest fixes related to HeatBridge implementation.
Scenario:
A vf-module scale-out activity is executed.
The vf-module scale-out VID implementation filters-out relevant VNF instances based on the existence of a vserver object, related to a generic-vnf object.
The current (ONAP Frankfurt SO-HeatBridge implementation), doesn`t create that relationship.
As a result, it is not possible to filter out VNF instances relevant for vf-module scaling.
Details (vserver instance created after the SO-openstack adapter orchestrates a Heat template):
{ "vserver-id": "d8cd2113-0122-4a98-95ae-90b0f8b53c4c", "vserver-name": "scaleout-base-vm", "vserver-name2": "scaleout-base-vm", "prov-status": "active", "vserver-selflink": "http://es-si-os-ohn-30.eecloud.nsn-net.net:8774/v2.1/servers/d8cd2113-0122-4a98-95ae-90b0f8b53c4c", "in-maint": false, "is-closed-loop-disabled": false, "resource-version": "1590493069202", "relationship-list": { "relationship": [ { "related-to": "flavor", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/flavors/flavor/9ede20a8-cdb3-4f8a-874d-60a900fae43d", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" }, { "relationship-key": "flavor.flavor-id", "relationship-value": "9ede20a8-cdb3-4f8a-874d-60a900fae43d" } ], "related-to-property": [ { "property-key": "flavor.flavor-name", "property-value": "aa.001-0002" } ] }, { "related-to": "image", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/images/image/c9031c8e-095f-4ccd-8f8f-2f4dffc3bc9f", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" }, { "relationship-key": "image.image-id", "relationship-value": "c9031c8e-095f-4ccd-8f8f-2f4dffc3bc9f" } ], "related-to-property": [ { "property-key": "image.image-name", "property-value": "unknown" } ] }, { "related-to": "vf-module", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/network/generic-vnfs/generic-vnf/2aa6473a-0625-4932-873e-df2ec5d448a9/vf-modules/vf-module/f271ef4d-8414-4e8c-ab77-0b0c64a0e83e", "relationship-data": [ { "relationship-key": "generic-vnf.vnf-id", "relationship-value": "2aa6473a-0625-4932-873e-df2ec5d448a9" }, { "relationship-key": "vf-module.vf-module-id", "relationship-value": "f271ef4d-8414-4e8c-ab77-0b0c64a0e83e" } ] } ] }, "l-interfaces": { "l-interface": [ { "interface-name": "vf-module-163-admin_0_oam_port_0-hvnwmfe7vm7d", "interface-role": "normal", "interface-id": "7dce75bc-0ff9-481f-8a2c-5911fc83f6a3", "macaddr": "fa:16:3e:e7:a3:0a", "network-name": "onap-wro", "is-port-mirrored": false, "resource-version": "1590493069202", "in-maint": false, "is-ip-unnumbered": false, "l3-interface-ipv4-address-list": [ { "l3-interface-ipv4-address": "192.168.0.56", "l3-interface-ipv4-prefix-length": 32, "resource-version": "1590493069202", "neutron-network-id": "7cf7e044-11ec-40ce-b5a4-1115591f5394", "neutron-subnet-id": "781486eb-f7f1-428a-a8bc-7e673fcfc2b4" } ] } ] } }
What we need is a relationship, within vserver object " "relationship-list":" property, which would point to a relevant generic-vnf instance.
The following PUT to AAI is executed, when the HeatBridge implementation execution is completed:
2020-05-26T11:37:49.161Z|1fbbfccd-a10a-4ac8-95d0-b10ffced532f|o.o.logging.filter.base.PayloadLoggingClientFilter - {"operations":[{" action":"put","uri":"/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/982c540f6e69488eb6be566425 5e00c0/vservers/vserver/d8cd2113-0122-4a98-95ae-90b0f8b53c4c","body":{"vserver-id":"d8cd2113-0122-4a98-95ae-90b0f8b53c4c","vserver-n ame":"scaleout-base-vm","vserver-name2":"scaleout-base-vm","prov-status":"active","vserver-selflink":"http://es-si-os-ohn-30.eecloud .nsn-net.net:8774/v2.1/servers/d8cd2113-0122-4a98-95ae-90b0f8b53c4c","in-maint":false,"is-closed-loop-disabled":false,"relationship- list":{"relationship":[{"related-to":"vf-module","relationship-data":[{"relationship-key":"generic-vnf.vnf-id","relationship-value": "2aa6473a-0625-4932-873e-df2ec5d448a9"},{"relationship-key":"vf-module.vf-module-id","relationship-value":"f271ef4d-8414-4e8c-ab77-0 b0c64a0e83e"}]},{"related-to":"image","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Clou dOwner"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"image.image-id"," relationship-value":"c9031c8e-095f-4ccd-8f8f-2f4dffc3bc9f"}]},{"related-to":"flavor","relationship-data":[{"relationship-key":"cloud -region.cloud-owner","relationship-value":"CloudOwner"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"Reg ionOne"},{"relationship-key":"flavor.flavor-id","relationship-value":"9ede20a8-cdb3-4f8a-874d-60a900fae43d"}]}]}}},{"action":"put"," uri":"/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/982c540f6e69488eb6be5664255e00c0/vservers /vserver/d8cd2113-0122-4a98-95ae-90b0f8b53c4c/l-interfaces/l-interface/vf-module-163-admin_0_oam_port_0-hvnwmfe7vm7d","body":{"inter face-name":"vf-module-163-admin_0_oam_port_0-hvnwmfe7vm7d","interface-role":"normal","interface-id":"7dce75bc-0ff9-481f-8a2c-5911fc8 3f6a3","macaddr":"fa:16:3e:e7:a3:0a","network-name":"onap-wro","l3-interface-ipv4-address-list":[{"l3-interface-ipv4-address":"192.1 68.0.56","l3-interface-ipv4-prefix-length":32,"neutron-network-id":"7cf7e044-11ec-40ce-b5a4-1115591f5394","neutron-subnet-id":"78148 6eb-f7f1-428a-a8bc-7e673fcfc2b4"}]}}]}
I think, a relation between the generic-vnf object, and a vserver object needs to be created in this step. Similar relation is created between the generic-vnf object, and a cloud tenant, and a vserver instance, and a vf-module.
(Then vf-module relation to generic-vnf object is as well missing)
Generic-vnf object (including a vf-module associated with that object instance):
{ "vnf-id": "2aa6473a-0625-4932-873e-df2ec5d448a9", "vnf-name": "vfresource-163", "vnf-type": "smodel-scale-out-2/nokia_scale_out_2 0", "service-id": "f0a55165-2240-43a6-83b3-972a55f25e8e", "prov-status": "NVTPROV", "equipment-role": "vLB", "orchestration-status": "Active", "ipv4-oam-address": "192.168.0.56", "in-maint": true, "is-closed-loop-disabled": false, "resource-version": "1590493069744", "model-invariant-id": "93fc593e-dbf8-407a-ae2b-8a9c30fd8f56", "model-version-id": "66a4520b-aa2a-4b1d-b0a2-aa1fdb5cadad", "model-customization-id": "8fb9f4cf-ee0d-4c92-9c3a-8bb39f775a98", "nf-type": "vLB", "nf-function": "vLB", "nf-role": "vLB", "nf-naming-code": "vLB", "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/56653994-bfe0-41d6-80da-8b62e1299051/service-data/vnfs/vnf/2aa6473a-0625-4932-873e-df2ec5d448a9/vnf-data/vnf-topology/", "relationship-list": { "relationship": [ { "related-to": "tenant", "relationship-label": "org.onap.relationships.inventory.BelongsTo", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/982c540f6e69488eb6be5664255e00c0", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" }, { "relationship-key": "tenant.tenant-id", "relationship-value": "982c540f6e69488eb6be5664255e00c0" } ], "related-to-property": [ { "property-key": "tenant.tenant-name", "property-value": "onap-wro" } ] }, { "related-to": "cloud-region", "relationship-label": "org.onap.relationships.inventory.LocatedIn", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" } ], "related-to-property": [ { "property-key": "cloud-region.owner-defined-type", "property-value": "OwnerType" } ] }, { "related-to": "service-instance", "relationship-label": "org.onap.relationships.inventory.ComposedOf", "related-link": "/aai/v16/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vLB/service-instances/service-instance/56653994-bfe0-41d6-80da-8b62e1299051", "relationship-data": [ { "relationship-key": "customer.global-customer-id", "relationship-value": "Demonstration" }, { "relationship-key": "service-subscription.service-type", "relationship-value": "vLB" }, { "relationship-key": "service-instance.service-instance-id", "relationship-value": "56653994-bfe0-41d6-80da-8b62e1299051" } ], "related-to-property": [ { "property-key": "service-instance.service-instance-name", "property-value": "service-instance-162" } ] }, { "related-to": "availability-zone", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/availability-zones/availability-zone/nova", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" }, { "relationship-key": "availability-zone.availability-zone-name", "relationship-value": "nova" } ] }, { "related-to": "line-of-business", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/business/lines-of-business/line-of-business/LOB-Demonstration", "relationship-data": [ { "relationship-key": "line-of-business.line-of-business-name", "relationship-value": "LOB-Demonstration" } ] }, { "related-to": "platform", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/business/platforms/platform/Platform-Demonstration", "relationship-data": [ { "relationship-key": "platform.platform-name", "relationship-value": "Platform-Demonstration" } ] } ] }, "vf-modules": { "vf-module": [ { "vf-module-id": "f271ef4d-8414-4e8c-ab77-0b0c64a0e83e", "vf-module-name": "vf-module-163", "heat-stack-id": "vf-module-163/7948fccc-4151-4724-95e8-3608ae1ba27e", "orchestration-status": "Active", "is-base-vf-module": true, "automated-assignment": false, "resource-version": "1590493071473", "model-invariant-id": "a3830bcf-cfa0-4114-adf5-fda8dd405e3d", "model-version-id": "bb60b509-2215-4e72-9bad-661dab6e753b", "model-customization-id": "f9a61960-e616-4844-a6a9-e97fc3587197", "module-index": 0, "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/56653994-bfe0-41d6-80da-8b62e1299051/service-data/vnfs/vnf/2aa6473a-0625-4932-873e-df2ec5d448a9/vnf-data/vf-modules/vf-module/f271ef4d-8414-4e8c-ab77-0b0c64a0e83e/vf-module-data/vf-module-topology/", "relationship-list": { "relationship": [ { "related-to": "vserver", "relationship-label": "org.onap.relationships.inventory.Uses", "related-link": "/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/982c540f6e69488eb6be5664255e00c0/vservers/vserver/d8cd2113-0122-4a98-95ae-90b0f8b53c4c", "relationship-data": [ { "relationship-key": "cloud-region.cloud-owner", "relationship-value": "CloudOwner" }, { "relationship-key": "cloud-region.cloud-region-id", "relationship-value": "RegionOne" }, { "relationship-key": "tenant.tenant-id", "relationship-value": "982c540f6e69488eb6be5664255e00c0" }, { "relationship-key": "vserver.vserver-id", "relationship-value": "d8cd2113-0122-4a98-95ae-90b0f8b53c4c" } ], "related-to-property": [ { "property-key": "vserver.vserver-name", "property-value": "scaleout-base-vm" } ] } ] } } ] } }