[openstack-dev] Manila client (v1.1.0) region support

Joe Meadows Joe.Meadows at hds.com
Thu Apr 30 20:00:39 UTC 2015


Thanks Valeriy, I filed this defect: https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.launchpad.net_manila_-2Bbug_1450613&d=AwIGaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=zHvLuN-cA8dJrDKv-7gpbBCgBAKPaAzJfG6sccaIdHHNpjwlcFjsdjPhFr9XPGnV&m=-5mRhr6zsbDKoOY59zZmnU58ZQwyrD4158jdisZVyYk&s=VFJIw949FNR9HwVoo8RtQ3v3awQmsZXd7-idSS2Ndbg&e= 

Best regards,
Joe

On 04/30/2015 12:22 PM, Valeriy Ponomaryov wrote:
Hello, Joe

It is  bug, "region_name" is not used as should be. Feel free to file a bug for it.

Kind Regards
Valeriy Ponomaryov

On Thu, Apr 30, 2015 at 8:23 PM, Joe Meadows <Joe.Meadows at hds.com<mailto:Joe.Meadows at hds.com>> wrote:
Hi,

I work for Hitachi Data Systems (HDS) and am developing Manila support for our HNAS line of NAS server.  The HNAS server has an internal REST server so I am implementing the Manila API natively on the server.  For various reasons this is a better fit than the standard Python driver implementation.

This implementation means that each HNAS server is its own endpoint so it gets added to Keystone as an endpoint using the Manila service Id.  I am using regions to distinguish between multiple HNAS servers or other Manila endpoints.  Therefore, when I add each HNAS endpoint I give that endpoint a unique region name.

Initially this worked exactly as expected when using a Manila client that I installed from GitHub following the instructions at https://urldefense.proofpoint.com/v2/url?u=http-3A__netapp.github.io_openstack_2014_08_15_manila-2Ddevstack_&d=AwIGaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=zHvLuN-cA8dJrDKv-7gpbBCgBAKPaAzJfG6sccaIdHHNpjwlcFjsdjPhFr9XPGnV&m=-5mRhr6zsbDKoOY59zZmnU58ZQwyrD4158jdisZVyYk&s=bF9k5n0h1wY3sADri4vbJ2h12CcVzrCE0JYAX236xEM&e= <https://urldefense.proofpoint.com/v2/url?u=http-3A__netapp.github.io_openstack_2014_08_15_manila-2Ddevstack_&d=AwMGaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=zHvLuN-cA8dJrDKv-7gpbBCgBAKPaAzJfG6sccaIdHHNpjwlcFjsdjPhFr9XPGnV&m=V37u0qx0ILzWPG7XsUs5_D2uR6KRjHYV2vSQ20UQnEA&s=gagpiobFCwxAaoXUTt9lRA6-g4vNiC_VDR-TQDX8IR0&e=>.  <https://urldefense.proofpoint.com/v2/url?u=http-3A__netapp.github.io_openstack_2014_08_15_manila-2Ddevstack_&d=AwMGaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=zHvLuN-cA8dJrDKv-7gpbBCgBAKPaAzJfG6sccaIdHHNpjwlcFjsdjPhFr9XPGnV&m=V37u0qx0ILzWPG7XsUs5_D2uR6KRjHYV2vSQ20UQnEA&s=gagpiobFCwxAaoXUTt9lRA6-g4vNiC_VDR-TQDX8IR0&e=> For example, I could do 'manila --os-region-name HNAS1 list' and the request would route to the correct endpoint (i.e. HNAS server).  This Manila client shows version 1.0.2.

Recently I tried this setup on another developer's OpenStack installation and the region name was ignored, though this client also claimed to be version 1.0.2.  Next I used pip to install python-manilaclient onto another machine, version 1.1.0, and again the region is ignored.

I stepped through the client code and found that when v1/client.py::__init__() searches for an endpoint it always takes the first one, never checking the region.

I made a small change which makes the client behave how I'd like it to.  If region is not specified it retains the original behavior of returning the first endpoint.  If a region is specified then it will return the first endpoint with a matching region.  The patch is below, my changes are between the #JAMJAM comments.

--- a/client.py    2015-04-22 16:05:10.000000000 -0700
+++ b/client.py    2015-04-22 16:00:56.000000000 -0700
@@ -142,10 +142,21 @@
                 service_type)

             if service_type in catalog:
-                for e_type, endpoint in catalog.get(service_type)[0].items():
-                    if str(e_type).lower() == str(endpoint_type).lower():
-                        service_catalog_url = endpoint
-                        break
+                # JAMJAM START
+                srvCat=catalog.get(service_type)
+                for catalogEntry in srvCat:
+                    if region_name != "":
+                        region=catalogEntry.get("region")
+                        if region != region_name:
+                            continue;
+                    #for e_type, endpoint in catalog.get(service_type)[0].items():
+                # JAMJAM END
+                    for e_type, endpoint in catalogEntry.items():
+                        if str(e_type).lower() == str(endpoint_type).lower():
+                            service_catalog_url = endpoint
+                            break
+                        if service_catalog_url:
+                            break

         if not service_catalog_url:
             raise RuntimeError("Could not find Manila endpoint in catalog")

So now, the obvious questions are; Is there already a way to specify a region that the Manila client will honor?  Is this patch fixing something?  Is this not a valid use of regions for Manila?

Many thanks in advance
 Joe Meadows
 HNAS Engineering
 Hitachi Data Systems


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe<https://urldefense.proofpoint.com/v2/url?u=http-3A__OpenStack-2Ddev-2Drequest-40lists.openstack.org-3Fsubject-3Aunsubscribe&d=AwMFaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=0QqRyIoT53GhjHkZDWbMxyH_29KM3Q-d8YapXFCH24M&m=8aXP1uCUzGcVLYzRkPOLsO3sq40TwMGIbCfRnXimnUw&s=yf2Mj7dGlxaipK3HjaNq7gvBaCZrvqEb8EcpoEj29LU&e=>
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=AwIGaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=zHvLuN-cA8dJrDKv-7gpbBCgBAKPaAzJfG6sccaIdHHNpjwlcFjsdjPhFr9XPGnV&m=-5mRhr6zsbDKoOY59zZmnU58ZQwyrD4158jdisZVyYk&s=DtxCNTfJl-V5N6fLL_I8PHXX4w8fo_-AcqsCZzb0wmc&e= <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=AwMFaQ&c=DZ-EF4pZfxGSU6MfABwx0g&r=0QqRyIoT53GhjHkZDWbMxyH_29KM3Q-d8YapXFCH24M&m=8aXP1uCUzGcVLYzRkPOLsO3sq40TwMGIbCfRnXimnUw&s=jfRogBLF4mtmfUsW-DSCX4s09HJJFQ6HuwLRmgqMCWw&e=>



__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe<mailto:OpenStack-dev-request at lists.openstack.org?subject:unsubscribe>
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=AwICAg&c=DZ-EF4pZfxGSU6MfABwx0g&r=0QqRyIoT53GhjHkZDWbMxyH_29KM3Q-d8YapXFCH24M&m=8aXP1uCUzGcVLYzRkPOLsO3sq40TwMGIbCfRnXimnUw&s=jfRogBLF4mtmfUsW-DSCX4s09HJJFQ6HuwLRmgqMCWw&e=


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150430/7f2077cf/attachment-0001.html>


More information about the OpenStack-dev mailing list