[openstack-dev] Manila client (v1.1.0) region support
vponomaryov at mirantis.com
Thu Apr 30 19:22:52 UTC 2015
It is bug, "region_name" is not used as should be. Feel free to file a bug
On Thu, Apr 30, 2015 at 8:23 PM, Joe Meadows <Joe.Meadows at hds.com> wrote:
> 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
> 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 @@
> if service_type in catalog:
> - for e_type, endpoint in
> - 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
> + # JAMJAM END
> + for e_type, endpoint in catalogEntry.items():
> + if str(e_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
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the OpenStack-dev