package alien4cloud.orchestrators.plugin; import java.util.Map; import org.alien4cloud.tosca.model.definitions.PropertyDefinition; import alien4cloud.model.orchestrators.ArtifactSupport; import alien4cloud.model.orchestrators.locations.LocationSupport; /** * Implementation of these class are responsible for providing the common settings for an orchestrators and creating instances responsible for orchestrators * connexion. * This is the entry point of an orchestrators plugin. * * @param <T> Type of the orchestrator that this factory creates. * @param <V> Type of the configuration of the orchestrator that the factory creates. */ public interface IOrchestratorPluginFactory<T extends IOrchestratorPlugin<V>, V> { /** * Create a new IOrchestrator instance. * * @return An instance of the IOrchestrator. */ T newInstance(); /** * Can be called to destroy the context linked to this instance * * @param instance provides the instance of IOrchestrator created by this factory that needs to be destroyed. */ void destroy(T instance); /** * Get the default configuration for this provider. * * @return Return an instance of the default configuration for the orchestrator. */ V getDefaultConfiguration(); /** * Get the type of the configuration. * * @return Type of the object that defines the cloud configuration. */ Class<V> getConfigurationType(); /** * Return an object that contains informations on location(s) supported by the orchestrator. * * @return An instance of LocationSupport that contains the details on what locations the orchestrator can support. */ LocationSupport getLocationSupport(); /** * Return an object that contains informations on artifact(s) supported by the orchestrator. * * @return An instance of ArtifactSupport that contains the details on what artifacts the orchestrator can support. */ ArtifactSupport getArtifactSupport(); /** * Get the deployment property definition * * @return A map containing property definitions */ Map<String, PropertyDefinition> getDeploymentPropertyDefinitions(); /** * Get the type of orchestrator this factory provides. ex: cloudify3 * * @return */ String getType(); }