Hi,

I have a local devstack running on an Ubuntu host.
I am trying to query certain data, like volumes, using Apahce Jclouds openstack 
libraries. But when I try to get anything from CinderApi, it throws below error

java.util.NoSuchElementException: no endpoints for apiType volume in service 
endpoints [ServiceEndpoint{id=null, regionId=RegionOne, 
url=http://x.x.x.x/placement, iface=PUBLIC, type=placement, version=null}, 
ServiceEndpoint{id=null, regionId=RegionOne, url=http://x.x.x.x/image, 
iface=PUBLIC, type=image, version=null}, ServiceEndpoint{id=null, 
regionId=RegionOne, 
url=http://x.x.x.x/compute/v2/97a219626db1447882d6311535d635f5, iface=PUBLIC, 
type=compute_legacy, version=null}, ServiceEndpoint{id=null, 
regionId=RegionOne, url=http://x.x.x.x:9696/networking, iface=PUBLIC, 
type=network, version=null}, ServiceEndpoint{id=null, regionId=RegionOne, 
url=http://x.x.x.x/volume/v3, iface=PUBLIC, type=block-storage, version=null}, 
ServiceEndpoint{id=null, regionId=RegionOne, url=http://x.x.x.x/identity, 
iface=PUBLIC, type=identity, version=null}, ServiceEndpoint{id=null, 
regionId=RegionOne, url=http://x.x.x.x/compute/v2.1, iface=PUBLIC, 
type=compute, version=null}]

      at 
org.jclouds.openstack.keystone.catalog.suppliers.LocationIdToURIFromServiceEndpointsForTypeAndVersion.get(LocationIdToURIFromServiceEndpointsForTypeAndVersion.java:85)
      at 
org.jclouds.openstack.keystone.catalog.suppliers.LocationIdToURIFromServiceEndpointsForTypeAndVersion.get(LocationIdToURIFromServiceEndpointsForTypeAndVersion.java:46)
      at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:75)
      at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:57)
      at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3574)
      at 
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2316)
      at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2190)
      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080)
      at com.google.common.cache.LocalCache.get(LocalCache.java:4017)
      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4040)
      at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4989)
      at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:150)
      at 
org.jclouds.location.suppliers.derived.RegionIdsFromRegionIdToURIKeySet.get(RegionIdsFromRegionIdToURIKeySet.java:45)
      at 
org.jclouds.location.suppliers.derived.RegionIdsFromRegionIdToURIKeySet.get(RegionIdsFromRegionIdToURIKeySet.java:33)
      at 
com.google.common.base.Suppliers$SupplierComposition.get(Suppliers.java:72)
      at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:75)
      
atorg.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:57)
      at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3574)
      at 
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2316)
      at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2190)
      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080)
      at com.google.common.cache.LocalCache.get(LocalCache.java:4017)
      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4040)
      at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4989)
      at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:150)
      at 
org.jclouds.rest.internal.DelegatesToInvocationFunction.getInstanceOfTypeWithQualifier(DelegatesToInvocationFunction.java:277)
      at 
org.jclouds.rest.internal.DelegatesToInvocationFunction.lookupValueFromGuice(DelegatesToInvocationFunction.java:234)
      at 
org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:152)
      at 
org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123)
      at com.sun.proxy.$Proxy146.getConfiguredRegions(Unknown Source)


Here is my code that queries the volumes

        Properties overrides = new Properties();
        overrides.setProperty( KeystoneProperties.KEYSTONE_VERSION, "3" );
        overrides.setProperty( KeystoneProperties.CREDENTIAL_TYPE, 
CredentialTypes.PASSWORD_CREDENTIALS );
        overrides.put( KeystoneProperties.SCOPE, "project:demo" );

        String endpoint = 
http://x.x.x.x/identity/v3<http://10.136.85.165/identity/v3>;
        CinderApi cinderApi = ContextBuilder.newBuilder( "openstack-cinder" )
                .endpoint( endpoint )
                .credentials( "default:admin", "secret" )
                .overrides( overrides )
                .buildApi( CinderApi.class );
       VolumeApi volumeApi = cinderApi.getVolumeApi( "RegionOne" );
        System.out.println( volumeApi.list() );            • this line throws 
above exception


Nova API works fine. I am able to get regions.

        NovaApi novaApi = ContextBuilder.newBuilder( "openstack-nova" )
                .endpoint( endpoint )
                .overrides( overrides )
                .credentials( "default:admin", "secret" ).buildApi( 
NovaApi.class );
        Set<String> regions = novaApi.getConfiguredRegions();  • this line 
fetches regions


Does anyone know why CinderApi is throwing the exception? Any pointers towards 
fixing it would be highly appreciated.
Please note, querying volumes via openstack cli and REST API works fine. Please 
see output of cli and REST API towards end of this email.

My development environment:

Java:

[test@test-vm ~]$ java -version
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment Corretto-11.0.8.10.1 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.8.10.1 (build 11.0.8+10-LTS, mixed mode)

Jcloud libraries:

jclouds-compute-2.7.0.jar
jclouds-core-2.7.0.jar
jclouds-scriptbuilder-2.7.0.jar
openstack-cinder-2.7.0.jar
openstack-common-2.7.0.jar
openstack-keystone-2.7.0.jar
openstack-neutron-2.7.0.jar
openstack-nova-2.7.0.jar

Devstack versions:


test@devstack-vm:~$ openstack versions show

+-------------+----------------+---------+-----------+--------------------------------------------+------------------+------------------+

| Region Name | Service Type   | Version | Status    | Endpoint                 
                  | Min Microversion | Max Microversion |

+-------------+----------------+---------+-----------+--------------------------------------------+------------------+------------------+

| RegionOne   | placement      | 1.0     | CURRENT   | 
http://x.x.x.x/placement/<http://10.136.85.165/placement/>            | 1.0     
         | 1.39             |

| RegionOne   | image          | 2.0     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.1     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.2     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.3     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.4     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.5     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.6     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.7     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.9     | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.14    | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.15    | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.16    | SUPPORTED | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | image          | 2.17    | CURRENT   | 
http://x.x.x.x/image/v2/<http://10.136.85.165/image/v2/>             | None     
        | None             |

| RegionOne   | compute_legacy | 2.0     | SUPPORTED | 
http://x.x.x.x/compute/v2/<http://10.136.85.165/compute/v2/>           | None   
          | None             |

| RegionOne   | compute_legacy | 2.1     | CURRENT   | 
http://x.x.x.x/compute/v2.1/<http://10.136.85.165/compute/v2.1/>         | 2.1  
            | 2.97             |

| RegionOne   | network        | 2.0     | CURRENT   | 
http://x.x.x.x:9696/networking/v2.0/<http://10.136.85.165:9696/networking/v2.0/>
 | None             | None             |

| RegionOne   | block-storage  | 3.0     | CURRENT   | 
http://x.x.x.x/volume/v3/<http://10.136.85.165/volume/v3/>            | 3.0     
         | 3.71             |

| RegionOne   | identity       | 3.14    | CURRENT   | 
http://x.x.x.x/identity/v3/<http://10.136.85.165/identity/v3/>          | None  
           | None             |

| RegionOne   | compute        | 2.0     | SUPPORTED | 
http://x.x.x.x/compute/v2/<http://10.136.85.165/compute/v2/>           | None   
          | None             |

| RegionOne   | compute        | 2.1     | CURRENT   | 
http://x.x.x.x/compute/v2.1/<http://10.136.85.165/compute/v2.1/>         | 2.1  
            | 2.97             |

+-------------+----------------+---------+-----------+--------------------------------------------+------------------+------------------+


Endpoints:


test@devstack-vm:~$ openstack endpoint list

+----------------------------------+-----------+--------------+----------------+---------+-----------+------------------------------------------------+

| ID                               | Region    | Service Name | Service Type   
| Enabled | Interface | URL                                            |

+----------------------------------+-----------+--------------+----------------+---------+-----------+------------------------------------------------+

| 0c20b12eaa404d1eb8d824fbc4c63062 | RegionOne | glance       | image          
| True    | public    | http://x.x.x.x/image<http://10.136.85.165/image>        
             |

| 1876bfef46da4e8aaae2bd97f5c8cb0e | RegionOne | placement    | placement      
| True    | public    | 
http://x.x.x.x/placement<http://10.136.85.165/placement>                 |

| 2a3ce6fcccc04e6b9ead1ea14e6da3ee | RegionOne | neutron      | network        
| True    | public    | 
http://x.x.x.x:9696/networking<http://10.136.85.165:9696/networking>           |

| 67bef2784e204d119f8eb82282935348 | RegionOne | nova         | compute        
| True    | public    | 
http://x.x.x.x/compute/v2.1<http://10.136.85.165/compute/v2.1>              |

| 8a8f1d8cc4f741069c572b3b12ea2616 | RegionOne | keystone     | identity       
| True    | public    | http://x.x.x.x/identity<http://10.136.85.165/identity>  
                |

| 92e69b296f0147919d958764d2460449 | RegionOne | cinder       | block-storage  
| True    | public    | 
http://x.x.x.x/volume/v3<http://10.136.85.165/volume/v3>                 |

| 9539faec5bc54d57b36305a2416326ae | RegionOne | nova_legacy  | compute_legacy 
| True    | public    | 
http://x.x.x.x/compute/v2/$(project_id)s<http://10.136.85.165/compute/v2/$(project_id)s>
 |

+----------------------------------+-----------+--------------+----------------+---------+-----------+------------------------------------------------+

OS:


test@devstack-vm:~$ cat /etc/os-release

PRETTY_NAME="Ubuntu 24.04.1 LTS"

NAME="Ubuntu"

VERSION_ID="24.04"

VERSION="24.04.1 LTS (Noble Numbat)"

VERSION_CODENAME=noble

ID=ubuntu

ID_LIKE=debian

HOME_URL=https://www.ubuntu.com/

SUPPORT_URL=https://help.ubuntu.com/

BUG_REPORT_URL=https://bugs.launchpad.net/ubuntu/

PRIVACY_POLICY_URL=https://www.ubuntu.com/legal/terms-and-policies/privacy-policy

UBUNTU_CODENAME=noble

LOGO=ubuntu-logo


Listing volume using openstack cli and REST API works

Cli:


test@devstack-vm:~$ openstack volume list

+--------------------------------------+-------+-----------+------+-----------------------------------+

| ID                                   | Name  | Status    | Size | Attached to 
                      |

+--------------------------------------+-------+-----------+------+-----------------------------------+

| a0d1207b-bbb8-46f7-9220-a299a7b6c8d7 |       | in-use    |    1 | Attached to 
test2-vm on /dev/vda  |

| adee3606-6e65-405e-b99b-d0fc5e86f74e | test2 | available |    1 |             
                      |

+--------------------------------------+-------+-----------+------+-----------------------------------+

REST API:

[test@test-vm ~]$ curl -s -H 'X-Auth-Token: 
gABBBABntf2qEKQsHeEWjvCkuT8wAPHf3NQKRvx19zNkJIqjjHAZWhbpoT20QaqxqbyRRoY9cDc2uCdgb4roZu2PjazgbnhAx_qQ763gLlFp7-8YWm3Nm6kipxPr8fEyYQhxJNb-B1CP6T0WWN25aRXiwAQBc4ijqNfna4SZVh1V6z0TulU786k'
 'http://x.x.x.x/volume/v3/volumes' | jq .
{
  "volumes": [
    {
      "id": "a0d1207b-bbb8-46f7-9220-a299a7b6c8d7",
      "name": "",
      "links": [
        {
          "rel": "self",
          "href": 
"http://x.x.x.x/volume/v3/volumes/a0d1207b-bbb8-46f7-9220-a299a7b6c8d7";
        },
        {
          "rel": "bookmark",
          "href": 
"http://x.x.x.x/volume/volumes/a0d1207b-bbb8-46f7-9220-a299a7b6c8d7";
        }
      ]
    },
    {
      "id": "adee3606-6e65-405e-b99b-d0fc5e86f74e",
      "name": "test2",
      "links": [
        {
          "rel": "self",
          "href": 
"http://x.x.x.x/volume/v3/volumes/adee3606-6e65-405e-b99b-d0fc5e86f74e";
        },
        {
          "rel": "bookmark",
          "href": 
"http://x.x.x.x/volume/volumes/adee3606-6e65-405e-b99b-d0fc5e86f74e";
        }
      ]
    }
  ]
}

Thanks,
Atul

Reply via email to