There are tasks to complete before we can use VID to instantiate the vIMS VNF.


  1. We need to Update AAI to indicate what account or accounts are permitted to use the vIMS service and in which cloud locations.
  2. We need to declare the service instance via VID

Updating AAI for account, service and location data

For the AAI updates for vFW and vLB we use "demo.sh init" to populate AAI with the data for the "Demonstration" customer but that only support vFW and vLB. For this tutorial we will use POSTMAN to update AAI via the equivalent PUT transaction that the robot testsuite uses but for a "Demonstration3" customer.

Note1:  You will have to put your tenantid into the string :

<YOUR_TENANT_HERE>

Note2:  We are setting up this account for vFW, vDNS and vIMS so we can use the customer in AAI for all three use cases.


Using POSTMAN to update AAI requires headers and basic authorization shown in the screen shot below.

The Basic authorization credentials are AAI/AAI

Create the vIMS Service in AAI


This will put vIMS in the drop down for new VNFs in VID.


Step 1: Query for the services

https://<AAI_IP>:8443/aai/v8/service-design-and-creation/services

will return the list of services by uuid, 


{
    "service": [
        {
            "service-id": "4dd0f831-785f-455e-a0d9-b16726dd1a70",
            "service-description": "vLB",
            "resource-version": "1493657491"
        },
        {
            "service-id": "891ab7fa-715f-4556-abd7-db575894e3e2",
            "service-description": "vFW",
            "resource-version": "1493657491"
        },
        {
            "service-id": "c30d0f54-61e8-4475-b029-43fc3f7bebef",
            "service-description": "vVG",
            "resource-version": "1493844352"
        }
    ]
}


Step 2: Generate a UUID

https://www.uuidgenerator.net/

pick the Version 4 UUID like: e8cb8968-5411-478b-906a-f28747de72cd


Step 3: PUT the vIMS Service (see headers in screen shot above)

https://<AAI_IP>:8443/aai/v8/service-design-and-creation/services/service/e8cb8968-5411-478b-906a-f28747de72cd

{
"service-id": "e8cb8968-5411-478b-906a-f28747de72cd",
"service-description": "vIMS"
}

replace "e8cb8968-5411-478b-906a-f28747de72cd" with the UUID you generated

choose "raw"


Step 4: Confirm with a  GET to the services url.


This complete updating AAI for the service. Now we move to updating AAI for the Infrastructure Customer Account data.


Create the Account

This will put vFW, vLB and vIMS service types as valid services for the Demonstration3 customer in the RACKSPACE location "IAD"

Remember to put your tenant ID in place of <YOUR_TENANT_HERE>.


The URL for the PUT includes the global-customer-id so make sure they match.


https://<AAI_IP>:8443/aai/v8/business/customers/customer/Demonstration3


PUT vIMS Account to AAI
{
	"global-customer-id": "Demonstration3",
	"subscriber-name": "Demonstration3",
    "subscriber-type": "INFRA",
    "service-subscriptions": {
        "service-subscription": [
            {
                "service-type": "vFW",
                "relationship-list": {
                        "relationship": [{
                                "related-to": "tenant",
                                "relationship-data": [
                                        {"relationship-key": "cloud-region.cloud-owner", "relationship-value": "Rackspace"},
                                        {"relationship-key": "cloud-region.cloud-region-id", "relationship-value": "IAD"},
                                        {"relationship-key": "tenant.tenant-id", "relationship-value": "<YOUR_TENANT_HERE>"}
                                ]
                        }]
                }
            },
            {
                "service-type": "vLB",
                "relationship-list": {
                        "relationship": [{
                                "related-to": "tenant",
                                "relationship-data": [
                                        {"relationship-key": "cloud-region.cloud-owner", "relationship-value": "Rackspace"},
                                        {"relationship-key": "cloud-region.cloud-region-id", "relationship-value": "IAD"},
                                        {"relationship-key": "tenant.tenant-id", "relationship-value": "<YOUR_TENANT_HERE>"}
                                ]
                        }]
	                
                }
            },
            {
            	"service-type": "vIMS",
                "relationship-list": {
                        "relationship": [{
                                "related-to": "tenant",
                                "relationship-data": [
                                        {"relationship-key": "cloud-region.cloud-owner", "relationship-value": "Rackspace"},
                                        {"relationship-key": "cloud-region.cloud-region-id", "relationship-value": "IAD"},
                                        {"relationship-key": "tenant.tenant-id", "relationship-value": "<YOUR_TENANT_HERE>"}
                                ]
                        }]
                
            }
         }
        ]}

}




You should get back a 201 Created response code and be able to see the data in AAI via the matching GET (/aai/v8/business/customers/customer/Demonstration3) 

This completes the AAI update.




2 Comments

  1. Thanks to F. Michael O'Brien for the POSTMAN setup details for the AAI updates. Saved me a lot of time that I didn't have to do researching all the headers (smile)

  2. I didn't run demo.sh on my deployment and I think this is the reason Step 1 did not return any service information for me.
    Also I needed to add a tenant before creating the subscriber/service subscription information.  I did this with a PUT to ../cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne with the following body....

    {

    "cloud-owner": "Rackspace",
    "cloud-region-id": "RegionOne",
    "cloud-region-version": "v1",
    "cloud-type": "SharedNode",
    "cloud-zone": "CloudZone",
    "owner-defined-type": "OwnerType",
    "tenants": {

    "tenant": [
    {

    "tenant-id": "<TENANT-ID>",
    "tenant-name": "<TENANT-NAME>"

    }
    ]

    }

    }