<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi,<br>
<br>
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.<br>
<br>
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.<br>
<br>
Initially this worked exactly as expected when using a Manila client that I installed from GitHub following the instructions at
<a class="moz-txt-link-freetext" href="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=">
http://netapp.github.io/openstack/2014/08/15/manila-devstack/</a>.  <a href="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=">
</a>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.<br>
<br>
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.  <br>
<br>
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. 
<br>
<br>
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.<br>
<br>
--- a/client.py    2015-04-22 16:05:10.000000000 -0700<br>
+++ b/client.py    2015-04-22 16:00:56.000000000 -0700<br>
@@ -142,10 +142,21 @@<br>
                 service_type)<br>
 <br>
             if service_type in catalog:<br>
-                for e_type, endpoint in catalog.get(service_type)[0].items():<br>
-                    if str(e_type).lower() == str(endpoint_type).lower():<br>
-                        service_catalog_url = endpoint<br>
-                        break<br>
+                # JAMJAM START<br>
+                srvCat=catalog.get(service_type)<br>
+                for catalogEntry in srvCat:<br>
+                    if region_name != "":<br>
+                        region=catalogEntry.get("region")<br>
+                        if region != region_name:<br>
+                            continue;<br>
+                    #for e_type, endpoint in catalog.get(service_type)[0].items():<br>
+                # JAMJAM END<br>
+                    for e_type, endpoint in catalogEntry.items():<br>
+                        if str(e_type).lower() == str(endpoint_type).lower():<br>
+                            service_catalog_url = endpoint<br>
+                            break<br>
+                        if service_catalog_url:<br>
+                            break<br>
 <br>
         if not service_catalog_url:<br>
             raise RuntimeError("Could not find Manila endpoint in catalog")<br>
<br>
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?<br>
<br>
Many thanks in advance   <br>
 Joe Meadows<br>
 HNAS Engineering<br>
 Hitachi Data Systems<br>
<br>
</body>
</html>