summaryrefslogtreecommitdiffstats
path: root/keystone-client/src/main/java/com/woorea/openstack/keystone/utils
diff options
context:
space:
mode:
Diffstat (limited to 'keystone-client/src/main/java/com/woorea/openstack/keystone/utils')
-rw-r--r--keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneTokenProvider.java56
-rw-r--r--keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneUtils.java28
2 files changed, 84 insertions, 0 deletions
diff --git a/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneTokenProvider.java b/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneTokenProvider.java
new file mode 100644
index 0000000..fb5127a
--- /dev/null
+++ b/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneTokenProvider.java
@@ -0,0 +1,56 @@
+package com.woorea.openstack.keystone.utils;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+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.authentication.UsernamePassword;
+
+public class KeystoneTokenProvider {
+
+ protected Keystone keystone;
+
+ protected String username;
+
+ protected String password;
+
+ ConcurrentHashMap<String, Access> hashTenantAccess;
+
+ public KeystoneTokenProvider(String endpoint, String username, String password) {
+ this.keystone = new Keystone(endpoint);
+ this.username = username;
+ this.password = password;
+ this.hashTenantAccess = new ConcurrentHashMap<String, Access>();
+ }
+
+ public Access getAccessByTenant(String tenantName) {
+ Access access = hashTenantAccess.get(tenantName);
+ if (access == null) {
+ access = keystone.tokens().authenticate(new UsernamePassword(username, password))
+ .withTenantName(tenantName)
+ .execute();
+ hashTenantAccess.put(tenantName, access);
+ }
+ return access;
+ }
+
+ public void expireAccessByTenant(String tenantName) {
+ hashTenantAccess.remove(tenantName);
+ }
+
+ public OpenStackTokenProvider getProviderByTenant(final String tenantName) {
+ final KeystoneTokenProvider keystoneTokenProvider = this;
+ return new OpenStackTokenProvider() {
+ @Override
+ public String getToken() {
+ return keystoneTokenProvider.getAccessByTenant(tenantName)
+ .getToken().getId();
+ }
+ @Override
+ public void expireToken() {
+ keystoneTokenProvider.expireAccessByTenant(tenantName);
+ }
+ };
+ }
+}
diff --git a/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneUtils.java b/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneUtils.java
new file mode 100644
index 0000000..8269597
--- /dev/null
+++ b/keystone-client/src/main/java/com/woorea/openstack/keystone/utils/KeystoneUtils.java
@@ -0,0 +1,28 @@
+package com.woorea.openstack.keystone.utils;
+
+import java.util.List;
+
+import com.woorea.openstack.keystone.model.Access.Service;
+
+public class KeystoneUtils {
+
+ public static String findEndpointURL(List<Service> serviceCatalog, String type, String region, String facing) {
+ for(Service service : serviceCatalog) {
+ if(type.equals(service.getType())) {
+ for(Service.Endpoint endpoint : service.getEndpoints()) {
+ if(region == null || region.equals(endpoint.getRegion())) {
+ if(endpoint.getPublicURL() != null && facing.equals("public")) {
+ return endpoint.getPublicURL();
+ } else if(endpoint.getInternalURL() != null && facing.equals("internal")) {
+ return endpoint.getInternalURL();
+ } else if(endpoint.getAdminURL() != null && facing.equals("admin")) {
+ return endpoint.getAdminURL();
+ }
+ }
+ }
+ }
+ }
+ throw new RuntimeException("endpoint url not found");
+ }
+
+}