All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.openstack4j.openstack.client.OSClientBuilder Maven / Gradle / Ivy
package org.openstack4j.openstack.client;
import static com.google.common.base.Preconditions.checkArgument;
import org.openstack4j.api.OSClient;
import org.openstack4j.api.client.CloudProvider;
import org.openstack4j.api.client.IOSClientBuilder;
import org.openstack4j.api.exceptions.AuthenticationException;
import org.openstack4j.api.types.Facing;
import org.openstack4j.core.transport.Config;
import org.openstack4j.model.common.Identifier;
import org.openstack4j.openstack.identity.domain.Credentials;
import org.openstack4j.openstack.identity.domain.RaxApiKeyCredentials;
import org.openstack4j.openstack.identity.domain.TokenAuth;
import org.openstack4j.openstack.identity.domain.v3.KeystoneAuth;
import org.openstack4j.openstack.identity.domain.v3.KeystoneAuth.AuthScope;
import org.openstack4j.openstack.internal.OSAuthenticator;
/**
* Builder definitions for creating a Client
*
* @author Jeremy Unruh
*
* @param Client Type
* @param Builder Type
*/
public abstract class OSClientBuilder> implements IOSClientBuilder {
Config config;
String endpoint;
String user;
String password;
Facing perspective;
CloudProvider provider = CloudProvider.UNKNOWN;
@SuppressWarnings("unchecked")
@Override
public T withConfig(Config config) {
this.config = config;
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T provider(CloudProvider provider) {
this.provider = provider;
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T credentials(String user, String password) {
this.user = user;
this.password = password;
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T endpoint(String endpoint) {
this.endpoint = endpoint;
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T perspective(Facing perspective) {
this.perspective = perspective;
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T useNonStrictSSLClient(boolean useNonStrictSSL) {
if (config == null)
config = Config.newConfig().withSSLVerificationDisabled();
return (T) this;
}
public static class ClientV2 extends OSClientBuilder implements IOSClientBuilder.V2 {
String tenantName;
String tenantId;
String tokenId;
boolean raxApiKey;
@Override
public ClientV2 tenantName(String tenantName) {
this.tenantName = tenantName;
return this;
}
@Override
public ClientV2 tenantId(String tenantId) {
this.tenantId = tenantId;
return this;
}
@Override
public ClientV2 raxApiKey(boolean raxApiKey) {
this.raxApiKey = raxApiKey;
return this;
}
@Override
public OSClient authenticate() throws AuthenticationException {
if (tokenId != null) {
checkArgument(tenantName != null || tenantId != null, "TenantId or TenantName is required when using Token Auth");
return OSAuthenticator.invoke(new TokenAuth(tokenId, tenantName, tenantId), endpoint, perspective, config, provider);
}
if (raxApiKey) {
return OSAuthenticator.invoke(new RaxApiKeyCredentials(user, password), endpoint, perspective, config, provider);
}
return OSAuthenticator.invoke(new Credentials(user, password, tenantName, tenantId), endpoint, perspective, config, provider);
}
@Override
public ClientV2 token(String tokenId) {
this.tokenId = tokenId;
return this;
}
}
public static class ClientV3 extends OSClientBuilder implements IOSClientBuilder.V3 {
Identifier domain;
AuthScope scope;
String tokenId;
@Override
public ClientV3 domainName(String domainName) {
this.domain = Identifier.byName(domainName);
return this;
}
@Override
public ClientV3 domainId(String domainId) {
this.domain = Identifier.byId(domainId);
return this;
}
@Override
public ClientV3 credentials(String user, String password, Identifier domain) {
this.user = user;
this.password = password;
this.domain = domain;
return this;
}
@Override
public ClientV3 token(String tokenId) {
this.tokenId = tokenId;
return this;
}
@Override
public OSClient authenticate() throws AuthenticationException {
if (tokenId != null && tokenId.length() > 0)
return OSAuthenticator.invoke(new KeystoneAuth(tokenId, scope), endpoint, perspective, config, provider);
return OSAuthenticator.invoke(new KeystoneAuth(user, password, domain, scope), endpoint, perspective, config, provider);
}
@Override
public ClientV3 scopeToProject(Identifier project, Identifier domain) {
this.scope = AuthScope.project(project, domain);
return this;
}
@Override
public ClientV3 scopeToDomain(Identifier domain) {
this.scope = AuthScope.domain(domain);
return this;
}
@Override
public ClientV3 scopeToTrust(String id) {
this.scope = AuthScope.trust(id);
return this;
}
}
}