Hi Brian,

               Two OpenStack instance cannot have the same Region ID will be a 
fundamental (and confusing) assumption which impacts many ONAP components.  
MultiCloud is one of them which has been interpreting this Region ID in 
different way: MultiCloud assumes that this Cloud Region ID in AAI was to store 
the OpenStack’s Region ID , it is confined in scope of a Cloud Owner. So 
MultiCloud assumes that Region ID itself does not have to be unique , but Cloud 
Owner + Cloud Region ID should be unique.  This interpretation was based on the 
communication with AAI team (Ethan in cc list could share more context around 
that communication).

With the AAI documentation (aai_swagger_v11.html), the cloud-region is uniquely 
identified by {cloud-owner}/{cloud-region-id}, not the {cloud-region-id} alone. 
That implies that it is possible that different {cloud-owner} have the same 
{cloud-region-id}.

GET 
/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}
Tags: 
CloudInfrastructure<file:///C:\workspace\onap\docs\aai\aai_swagger_v11.html#tag-CloudInfrastructure>
returns cloud-region

cloud-owner

Identifies the vendor and cloud name, e.g., att-aic. First part of composite 
key should be formatted as vendor-cloudname

path

string

cloud-region-id

Identifier used by the vendor for the region. Second part of composite key

path

string



On the other hands, SO, Robot VM, they all use ‘cloud-region-id’ as parameter 
to invoke OpenStack API, which means, this ‘cloud-region-id’ is the exactly the 
Region ID used in context of OpenStack API. Inevitably, there will be different 
OpenStack provisioned with “RegionOne” by default.

So there is discrepancy between different ONAP components with regarding to how 
to interpret this ‘cloud-region-id’ in AAI. This discrepancy should be resolved 
in Beijing Release, otherwise it will be a blocking issue when there is use 
case to deploy VNFs to multiple VIM/Cloud instances.

Thanks.

Best Regards,
Bin Yang,    Solution Readiness Team,    Wind River
Direct +86,10,84777126    Mobile +86,13811391682    Fax +86,10,64398189
Skype: yangbincs993

From: [email protected] 
[mailto:[email protected]] On Behalf Of FREEMAN, BRIAN D
Sent: Thursday, January 11, 2018 2:55 AM
To: Alexis de Talhouët
Cc: onap-discuss
Subject: Re: [onap-discuss] [AAI][SO] How to add another LCP Region

“So is it fair to say X distinct OpenStack instances must have unique Region(s) 
to be used in ONAP? e.g. two instance cannot have the same Region.” – Yes

Brian

From: Alexis de Talhouët [mailto:[email protected]]
Sent: Wednesday, January 10, 2018 1:48 PM
To: FREEMAN, BRIAN D <[email protected]<mailto:[email protected]>>
Cc: onap-discuss 
<[email protected]<mailto:[email protected]>>
Subject: Re: [onap-discuss] [AAI][SO] How to add another LCP Region

Ok, creating another Region in OpenStack , alongs with its service endpoints is 
working.

So is it fair to say X distinct OpenStack instances must have unique Region(s) 
to be used in ONAP? e.g. two instance cannot have the same Region.

Thanks for the help,
Alexis

On Jan 10, 2018, at 9:57 AM, FREEMAN, BRIAN D 
<[email protected]<mailto:[email protected]>> wrote:

I would name the second openstack something other than RegionOne in that 
Openstack :)  I suspect the design assumes the cloud regions have unique names 
but I didnt think robot needed the cloud region in their vanilla openstack 
keystone queries (but its been a while since I looked at a trace). I know 
Rackspace does have unique region names (IAD, DFW, etc) and we do in our 
installations but not sure if vanilla would require that.

Brian


From: Alexis de Talhouët [mailto:[email protected]]
Sent: Wednesday, January 10, 2018 9:53 AM
To: FREEMAN, BRIAN D <[email protected]<mailto:[email protected]>>
Cc: onap-discuss 
<[email protected]<mailto:[email protected]>>
Subject: Re: [onap-discuss] [AAI][SO] How to add another LCP Region

Ok, haven’t thought about deploying another robot.

Regarding my attempt with RegionAlex, the thing is this region doesn’t exist in 
my Openstack, it’s RegionOne that exist. That’s why it’s not working. But I 
have to use a different name so mso can differentiate.
But maybe I haven’t updated all the python scripts. I’ll have another look at 
it.

Thanks,
Alexis


On Jan 10, 2018, at 9:49 AM, FREEMAN, BRIAN D 
<[email protected]<mailto:[email protected]>> wrote:

I dont think robot can handle multiple cloud regions from one isntance.

I would run two robot’s – one for each cloud region in all honesty or do what 
robot does via POSTMAN

One thing though:

Keystone address/Tenant/Username/Password have been changed as per as the Cloud 
Identity Service: id=ALEX_KEYSTONE
Now the issue:
—> If the region is RegionAlex, Robot can’t connect

That should have worked.  Are you sure you updated urls, tenantid, tenantname, 
credentials etc in all the .py’s needed ?

Brian



From: Alexis de Talhouët [mailto:[email protected]]
Sent: Wednesday, January 10, 2018 9:31 AM
To: FREEMAN, BRIAN D <[email protected]<mailto:[email protected]>>
Cc: onap-discuss 
<[email protected]<mailto:[email protected]>>
Subject: Re: [onap-discuss] [AAI][SO] How to add another LCP Region

When you have two OpenStack having the same region, e.g. RegionOne, the thing 
is pretty complex and I haven’t figured it out completely.

Create a region in AAI with a different name, like RegionAlex as example 
bellow, and add your tenant to the region. Everything down to instantiation is 
working.
But then, we need to use heatbridge, which uses values in the vm_properties.py 
of robot container. In there, if I put my dummy region (RegionAlex), connection 
to the OpenStack is impossible.
If I put the valid region, e.g. RegionOne, connection is possible, but then 
heatbridge will try to populate the RegionOne CloudRegion in AAI for the given 
tenant, which of course exist under RegionAlex, and not RegionOne, so 
heatbridge fails with 404.
So then, if you create the tenant under RegionOne, heatbridge will work, but 
then you’re AAI is messed-up.

To have VID listing the region and the tenant, you need to create them in AAI. 
The cloud-region-id has the match the value in the mso-cloud-config, so 
correlation can happen and authentication is successful.

To recap, this is what I have:

In MSO:

Cloud Sites:
CloudSite: id=RegionOne, regionId=RegionOne, 
identityServiceId=DEFAULT_KEYSTONE, aic_version=2.5, clli=RegionOne
CloudSite: id=RegionAlex, regionId=RegionOne, identityServiceId=ALEX_KEYSTONE, 
aic_version=2.5, clli=RegionAlex

Cloud Identity Services:
Cloud Identity Service: id=DEFAULT_KEYSTONE, 
identityUrl=http://10.195.194.216:5000/v2.0<https://urldefense.proofpoint.com/v2/url?u=http-3A__10.195.194.216-3A5000_v2.0&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=e3d1ehx3DI5AoMgDmi2Fzw&m=VUJoYm3UcavMJOo3tmXNf9nc82hLgiwojUtRW6iqYOk&s=T1EDl6plW6A--L5I-BnDXr7lX0IkPRXSDxN9CdIfmt0&e=>,
 msoId=nso, adminTenant=service, memberRole=admin, tenantMetadata=true, 
identityServerType=KEYSTONE, identityAuthenticationType=USERNAME_PASSWORD
Cloud Identity Service: id=ALEX_KEYSTONE, 
identityUrl=http://10.195.194.213:5000/v2.0<https://urldefense.proofpoint.com/v2/url?u=http-3A__10.195.194.213-3A5000_v2.0&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=e3d1ehx3DI5AoMgDmi2Fzw&m=VUJoYm3UcavMJOo3tmXNf9nc82hLgiwojUtRW6iqYOk&s=UCzy0VYIlLOm53l9BwoxQMuT0pDKrDqSpVATrH0Mp0I&e=>,
 msoId=vnf, adminTenant=service, memberRole=admin, tenantMetadata=true, 
identityServerType=KEYSTONE, identityAuthenticationType=USERNAME_PASSWORD

In AAI:
{
    "cloud-region": [
        {
            "cloud-owner": "CloudOwner",
            "cloud-region-id": "RegionAlex",
            "cloud-type": "SharedNode",
            "owner-defined-type": "OwnerType",
            "cloud-region-version": "v1",
            "cloud-zone": "CloudZone",
            "sriov-automation": false,
            "resource-version": "1515592843258",
            "relationship-list": {
                "relationship": [
                    {
                        "related-to": "complex",
                        "related-link": 
"/aai/v11/cloud-infrastructure/complexes/complex/clli2",
                        "relationship-data": [
                            {
                                "relationship-key": 
"complex.physical-location-id",
                                "relationship-value": "clli2"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "cloud-owner": "CloudOwner",
            "cloud-region-id": "RegionOne",
            "cloud-type": "SharedNode",
            "owner-defined-type": "OwnerType",
            "cloud-region-version": "v1",
            "cloud-zone": "CloudZone",
            "sriov-automation": false,
            "resource-version": "1515100561059",
            "relationship-list": {
                "relationship": [
                    {
                        "related-to": "complex",
                        "related-link": 
"/aai/v11/cloud-infrastructure/complexes/complex/clli1",
                        "relationship-data": [
                            {
                                "relationship-key": 
"complex.physical-location-id",
                                "relationship-value": "clli1"
                            }
                        ]
                    }
                ]
            }
        }
    ]
}

Tenant for RegionOne:
{
    "tenant": [
        {
            "tenant-id": "5c59f02201d54aa89af1f2207f7be2c1",
            "tenant-name": "nso-rancher",
            "resource-version": "1515100561148",
            "relationship-list": {
                "relationship": [
                                           —[cut]—
                ]
            }
        }
    ]
}

Tenant for RegionAlex:
{
    "tenant": [
        {
            "tenant-id": "7320ec4a5b9d4589ba7c4412ccfd290f",
            "tenant-name": "nso-vnf",
            "resource-version": "1515100561148",
            "relationship-list": {
                "relationship": [
                                           —[cut]—
                ]
            }
        }
    ]
}


In vm_properties.py in Robot:
In there, we have the following values populated: keystone address, tanant, 
username, password and tenant that we need to update to use the added region.

Keystone address/Tenant/Username/Password have been changed as per as the Cloud 
Identity Service: id=ALEX_KEYSTONE
Now the issue:
—> If the region is RegionAlex, Robot can’t connect
—> If the region is RegionOne, Robot can connect but then fail to update AAI 
because tenant

If I change the region name in AAI (from RegionAlex to RegionOne), and add the 
new tenant in there, then MSO picks the wrong Cloud Identity Service, then 
instantiation fails.


Do you guys have a proper way of doing this, that would really help.

Thanks,
Alexis





On Jan 9, 2018, at 10:18 AM, Alexis de Talhouët 
<[email protected]<mailto:[email protected]>> wrote:

Ok, so by having the cloud site as follow

        "RegionAlex":
        {
          "region_id": "RegionAlex",
          "clli": "RegionAlex",
          "aic_version": "2.5",
          "identity_service_id": "ALEX_KEYSTONE"
        }

it’s showing correctly in VID. I also created its own clli in AAI.

But I thought the region does matter for OpenStack, doesn’t it?

Alexis



On Jan 9, 2018, at 9:37 AM, FREEMAN, BRIAN D 
<[email protected]<mailto:[email protected]>> wrote:

You need to name one RegionTwo or something,

From: 
[email protected]<mailto:[email protected]> 
[mailto:[email protected]] On Behalf Of Alexis de Talhouët
Sent: Tuesday, January 09, 2018 9:34 AM
To: onap-discuss 
<[email protected]<mailto:[email protected]>>
Subject: [onap-discuss] [AAI][SO] How to add another LCP Region

Hello AAI, SO expert,

I’m trying to add another LCP Region to be able to deploy VNF in another 
OpenStack instance.

To do so, I have done the following:

In MSO:
- Add a Cloud Site

        "RegionAlex":
        {
          "region_id": "RegionOne",
          "clli": "RegionOne",
          "aic_version": "2.5",
          "identity_service_id": "ALEX_KEYSTONE"
        }

- Add it’s associated Cloud Identity Services

       "ALEX_KEYSTONE":
        {
          "identity_url": 
"http://10.195.194.215:5000/v2.0<https://urldefense.proofpoint.com/v2/url?u=http-3A__10.195.194.215-3A5000_v2.0&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=e3d1ehx3DI5AoMgDmi2Fzw&m=oHswheJmkWJIcCFYw24k7XQ3lZ-POKBf-k_XFejRrNQ&s=u3st_5cAWjMqICf5KR8cqtqgGnlBWa9NLed_jnRmi9Q&e=>",
          "mso_id": "nso",
          "mso_pass": "86b74198e8ccb959eaaadefevsd2a8a2",
          "admin_tenant": "service",
          "member_role": "admin",
          "tenant_metadata": true,
          "identity_server_type": "KEYSTONE",
          "identity_authentication_type": "USERNAME_PASSWORD"
        }

In AAI:
- Create a cloud region

        {
            "cloud-owner": "CloudOwner",
            "cloud-region-id": "RegionAlex",
            "cloud-type": "SharedNode",
            "owner-defined-type": "OwnerType",
            "cloud-region-version": "v1",
            "cloud-zone": "CloudZone",
            "sriov-automation": false,
            "resource-version": "1515506147118",
            "relationship-list": {
                "relationship": [
                    {
                        "related-to": "complex",
                        "related-link": 
"/aai/v11/cloud-infrastructure/complexes/complex/clli1",
                        "relationship-data": [
                            {
                                "relationship-key": 
"complex.physical-location-id",
                                "relationship-value": "clli1"
                            }
                        ]
                    }
                ]
            }
        }


- Create the tenant in the region for the 4 different services with the right 
tenant id:

{
    "tenant-id": "21ca0f4c2239475fbf1b4b499399163e",
    "tenant-name": "nso-rancher",
    "relationship-list": {
        "relationship": [
            {
                "related-to": "service-subscription",
                "related-link": 
"/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vLB",
                "relationship-data": [
                    {
                        "relationship-key": "customer.global-customer-id",
                        "relationship-value": "Demonstration"
                    },
                    {
                        "relationship-key": "service-subscription.service-type",
                        "relationship-value": "vLB"
                    }
                ]
            },
            {
                "related-to": "service-subscription",
                "related-link": 
"/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vIMS",
                "relationship-data": [
                    {
                        "relationship-key": "customer.global-customer-id",
                        "relationship-value": "Demonstration"
                    },
                    {
                        "relationship-key": "service-subscription.service-type",
                        "relationship-value": "vIMS"
                    }
                ]
            },
            {
                "related-to": "service-subscription",
                "related-link": 
"/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFWCL",
                "relationship-data": [
                    {
                        "relationship-key": "customer.global-customer-id",
                        "relationship-value": "Demonstration"
                    },
                    {
                        "relationship-key": "service-subscription.service-type",
                        "relationship-value": "vFWCL"
                    }
                ]
            },
            {
                "related-to": "service-subscription",
                "related-link": 
"/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vCPE",
                "relationship-data": [
                    {
                        "relationship-key": "customer.global-customer-id",
                        "relationship-value": "Demonstration"
                    },
                    {
                        "relationship-key": "service-subscription.service-type",
                        "relationship-value": "vCPE"
                    }
                ]
            }
        ]
    }
}

So my expectation is to have VID displaying the two LCP Region so I can pick 
the one where I want to deploy.

The thing is, VID is showing only one “RegionOne” option. But in the console I 
can see it’s retrieving two.

cloudRegionTenantList=  creationService.js:909:3
[
    {
        "cloudRegionId": "",
        "tenantName": "Please choose a region",
        "tenantId": ""
    },
    {
        "cloudRegionId": "RegionOne",
        "tenantName": "nso-rancher",
        "tenantId": "5c59f02201d54aa89af1f2207f7be2c1",
        "isPermitted": true
    },
    {
        "cloudRegionId": "RegionOne",
        "tenantName": "nso-rancher",
        "tenantId": "21ca0f4c2239475fbf1b4b499399163e",
        "isPermitted": true
    }
]

So I’m wondering what I could have done wrong. As the cloudRegionId are the 
same, it’s displaying only one, but you can see the tenantId is different.


My question is, what should be the process to do this?

Thanks,
Alexis

_______________________________________________
onap-discuss mailing list
[email protected]
https://lists.onap.org/mailman/listinfo/onap-discuss

Reply via email to