Huge effort Andrea!!! Look forward to having a look and early-testing it!
On Nov 20, 2017 5:56 PM, "Andrea Turli (apache.org)" <andreatu...@apache.org> wrote: > Hi team, > > happy to say I've finally had some time to properly look at > https://issues.apache.org/jira/browse/JCLOUDS-114 > > At the moment it still lives in my own development branch but the idea here > is to add a Guice module for each Openstack service version jclouds > supports, i.e. KeystoneV2 and KeystoneV3 > > I think we should break the hard-coded link with KeystoneV2 from Nova and > the other downstream Openstack services that require Keystone. In this way, > the apis/openstack-* will be really generic and independent, and the > providers/a-openstack-based-provider will compose the Guice modules > according to the specific requirements. > > Here an example: > > public static class Builder extends BaseProviderMetadata.Builder { > > protected Builder() { > id("x") > .name("X") > .apiMetadata(new NovaApiMetadata().toBuilder() > .identityName("${userName}") > .credentialName("${apiKey}") > .version("3") > .defaultEndpoint("https://identity.x.com/v3") > .endpointName("identity service url ending in /v3") > .documentation(URI.create("https://x.doc.html")) > .defaultModules(ImmutableSet.<Class<? extends > Module>>builder() > .add(KeystoneV3Module.class) > .add(NovaParserModule.class) > .build()) > .build()) > > Notice thanks to > https://github.com/jclouds/jclouds/pull/960#issuecomment-221209582 we can > go even a bit further and link the Neutron context from Nova context. > > This means, for example, that Nova code should try to use Neutron (modern > way to deal with network concepts in Openstack) but fallback to Nova > security groups, if Neutron is not linked. > > ---- > > This work requires to touch quite a lot of repos so I may need multiple PRs > but at least we have a proposal to add KeystoneV3 support. > > ---- > > I also think multiple Guice modules can be a good pattern to support > multiple version of the same API, in general, not only for Openstack. > > ---- > > Thanks @nacx and Richard Downer from Apache Brooklyn for the great help! >