package org.ovirt.engine.core.bll.provider.network.openstack; import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties; import org.ovirt.engine.core.common.businessentities.Provider; import com.woorea.openstack.base.client.OpenStackTokenProvider; import com.woorea.openstack.keystone.Keystone; import com.woorea.openstack.keystone.model.Access; import com.woorea.openstack.keystone.model.Token; import com.woorea.openstack.keystone.model.authentication.UsernamePassword; public class ExternalNetworkTokenProvider implements OpenStackTokenProvider { private final Provider<OpenstackNetworkProviderProperties> provider; private Access access; public ExternalNetworkTokenProvider(Provider<OpenstackNetworkProviderProperties> provider) { this.provider = provider; } @Override public String getToken() { if (access == null) { Keystone keystone = createKeystone(provider.getAuthUrl()); UsernamePassword usernamePassword = new UsernamePassword(provider.getUsername(), provider.getPassword()); access = executeKeystoneQuery(keystone, usernamePassword); } return getTokenIdFromAccess(access); } @Override public void expireToken() { access = null; } private Access executeKeystoneQuery(Keystone keystone, UsernamePassword usernamePassword) { return keystone.tokens().authenticate(usernamePassword).execute(); } private String getTokenIdFromAccess(Access access) { final Token token = access.getToken(); return getTokenId(token); } String getTokenId(Token token) { return token.getId(); } Keystone createKeystone(String authUrl) { return new Keystone(authUrl, new CustomizedRESTEasyConnector()); } }