package org.openstack.atlas.auth; import org.apache.log4j.Logger; import org.openstack.atlas.cfg.Configuration; import org.openstack.atlas.config.LbLogsConfigurationKeys; import org.openstack.atlas.exception.AuthException; import org.openstack.client.keystone.KeyStoneAdminClient; import org.openstack.client.keystone.KeyStoneException; import org.openstack.client.keystone.user.User; import org.openstack.atlas.config.LbLogsConfiguration; public class AuthServiceImpl implements AuthService { private static final Logger LOG = Logger.getLogger(AuthServiceImpl.class); private KeyStoneAdminClient keyStoneAdminAuthClient; private Configuration configuration; public AuthServiceImpl(Configuration cfg) throws AuthException { this.configuration = cfg; keyStoneAdminAuthClient = null; try { keyStoneAdminAuthClient = new KeyStoneAdminClient(configuration.getString(LbLogsConfigurationKeys.auth_management_uri), configuration.getString(LbLogsConfigurationKeys.basic_auth_key), configuration.getString(LbLogsConfigurationKeys.basic_auth_user)); } catch (KeyStoneException e) { throw new AuthException("Error initializing the client.", e); } } public AuthUser getUser(String accountId) throws AuthException { AuthUser user = new AuthUser(); try { User validatedUser = keyStoneAdminAuthClient.listUser(accountId, "mosso"); LOG.debug("Successfully Fetched auth info for account: " + accountId); user.setMossoAccountId(String.valueOf(validatedUser.getMossoId())); user.setNastAccountId(validatedUser.getNastId()); user.setUsername(validatedUser.getId()); user.setAuthKey(validatedUser.getKey()); user.setEnabled(validatedUser.isEnabled()); user.setRegion(configuration.getString(LbLogsConfigurationKeys.files_region)); user.setCloudFilesAuthUrl(getCloudFilesAuthUrl() + "auth"); return user; } catch (Exception e) { throw new AuthException("Exception getting auth info for account " + accountId + " from " + configuration.getString(LbLogsConfigurationKeys.auth_management_uri), e); } } public String getCloudFilesAuthUrl() { return configuration.getString(LbLogsConfigurationKeys.auth_management_uri); } }