Package io.fathom.auto.config

Source Code of io.fathom.auto.config.OpenstackConfig

package io.fathom.auto.config;

import io.fathom.auto.openstack.metadata.Metadata;
import io.fathom.auto.openstack.metadata.MetadataClient;
import io.fathom.cloud.openstack.client.OpenstackClient;
import io.fathom.cloud.openstack.client.RestClientException;
import io.fathom.cloud.openstack.client.identity.OpenstackIdentityClient;
import io.fathom.cloud.openstack.client.identity.StaticTokenProvider;
import io.fathom.cloud.openstack.client.storage.OpenstackStorageClient;
import io.fathom.http.HttpClient;

import java.net.URI;

public class OpenstackConfig {

    Metadata metadata;

    public Metadata getMetadata() throws RestClientException {
        if (metadata == null) {
            MetadataClient metadataClient = MetadataClient.INSTANCE;
            Metadata metadata = metadataClient.getMetadata();
            this.metadata = metadata;
        }
        return metadata;
    }

    public OpenstackStorageClient getStorageClient() throws RestClientException {
        return getOpenstackClient().getStorage();
    }

    OpenstackClient client;

    public OpenstackClient getOpenstackClient() throws RestClientException {
        if (client == null) {
            MetadataClient metadataClient = MetadataClient.INSTANCE;

            String serviceToken = metadataClient.getSecretString("token");
            serviceToken = serviceToken.trim();
            Metadata metadata = getMetadata();

            URI identityEndpoint = URI.create(metadata.getTopLevel("identity_uri"));

            HttpClient httpClient = metadataClient.getHttpClient();
            OpenstackIdentityClient identityClient = new OpenstackIdentityClient(httpClient, identityEndpoint, null);

            StaticTokenProvider tokenProvider = new StaticTokenProvider(identityClient, serviceToken);

            this.client = OpenstackClient.build(tokenProvider);
        }
        return client;
    }

    public String getInstanceProperty(String key) {
        if (metadata == null) {
            throw new IllegalStateException();
        }
        String value = System.getProperty(key);
        if (value == null) {
            value = metadata.findMeta(key);
        }
        return value;
    }
}
TOP

Related Classes of io.fathom.auto.config.OpenstackConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.