If we take that approach we'd be assuming that the SG API endpoint is always the same than the Network API one. Is that the case? If not, we would be breaking functionality, as currently the SG API endpoint is extracted from a specific entry in the service catalog.
On 24 October 2017 at 07:48, Andrea Turli <andrea.tu...@gmail.com> wrote: > Nacx, > > Thanks possibly another option is to "promote" SecurityGroupApi as other > features and remove the extension annotation as from documentation that > functionality is not optional. > > Are you guys aware of any provider that exposes neutron security group API > as extensions only? > > Cheers, > Andrea > > Il 23/ott/2017 22:12, "Ignasi Barrera" <n...@apache.org> ha scritto: > > Hi! > > Today we've had a discussion with Andrea on IRC regarding the > availability of the Neutron Security Group API as an extension API. > > It turns that in an OpenStack environment he's using, the API does not > appear as an extension in the Keystone service catalog, but as part of > the networking API. The paths are the same (/v2.0/security-groups), > but jclouds expects it to be an extension and resolve its endpoint > from the service catalog. > > * Does anyone know if this is something that has changed in recent > OpenStack versions and now we must expect the Security Group API not > to be an extension API? > > Apart from that, we need to fix how the endpoint is resolved. > Currently, the endpoint is taken from the service catalog (here [1]) > by looking for the configured extension [2]. What comes to my mind to > fix this issue is: > > * Extend the @Extension namespace "somehow", to allow us to specify a > "fallback" endpoint/namespace/alias. > * Given that if no @Extension annotation is present in the referenced > API, it is always returned "present" (see [3]), we could create a > subclass of the SecurityGroupAPI without the extension, and add an > accessor to it in the Networking API? This way it will inherit the > networking API endpoint and the requests should be properly built. > (I'm not sure if the Optional resolution works in a nested API or it > is only evaluated in the root APIs, but it's worth exploring this > option). > * Others? > > > Cheers, > > I. > > > > [1] https://github.com/jclouds/jclouds/blob/master/apis/ > openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/functions/ > PresentWhenExtensionAnnotationMatchesExtensionSet.java > [2] https://github.com/jclouds/jclouds-labs-openstack/blob/ > master/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/ > extensions/SecurityGroupApi.java#L67 > [3] https://github.com/jclouds/jclouds/blob/master/apis/ > openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/functions/ > PresentWhenExtensionAnnotationMatchesExtensionSet.java#L112-L115