package com.sequenceiq.cloudbreak.cloud;
import java.util.List;
/**
* In order to integrate a Cloud provider into the Cloudbreak this interface needs to be implemented. Loading of the Cloud provider specific code
* is automatically done by Cloudbreak, if the class which implements this interface is on the classpath. Cloud providers implementations are
* stored in a map in Cloudbreak and the {@link CloudPlatformAware} is used as key to identify the different implementations.
*/
public interface CloudConnector extends CloudPlatformAware {
/**
* Access to the {@link Authenticator} object.
*
* @return the {@link Authenticator} object
*/
Authenticator authentication();
/**
* Access to the {@link Setup} object.
*
* @return the {@link Setup} object
*/
Setup setup();
/**
* Access to the available {@link Validator}s.
*
* @return the available {@link Validator}s object
*/
List<Validator> validators();
/**
* Access to the {@link CredentialConnector} object.
*
* @return the {@link CredentialConnector} object
*/
CredentialConnector credentials();
/**
* Access to the {@link ResourceConnector} object.
*
* @return the {@link ResourceConnector} object
*/
ResourceConnector resources();
/**
* Access to the {@link MetadataCollector} object.
*
* @return the {@link MetadataCollector} object
*/
InstanceConnector instances();
/**
* Access to the {@link MetadataCollector} object.
*
* @return the {@link MetadataCollector} object
*/
MetadataCollector metadata();
/**
* Access to the {@link PlatformParameters} object.
*
* @return the {@link PlatformParameters} object
*/
PlatformParameters parameters();
}