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

Valeriy Ponomaryov vponomaryov at mirantis.com
Thu Apr 30 19:22:52 UTC 2015


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> 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
> http://netapp.github.io/openstack/2014/08/15/manila-devstack/
> <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
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150430/fd07293a/attachment.html>


More information about the OpenStack-dev mailing list