package alien4cloud.orchestrators.plugin;
import java.util.List;
import alien4cloud.orchestrators.plugin.model.PluginArchive;
import alien4cloud.paas.IConfigurablePaaSProvider;
import alien4cloud.paas.IPaaSProvider;
/**
* Interface used to communicate with an orchestrator.
*/
public interface IOrchestratorPlugin<T> extends IConfigurablePaaSProvider<T>, IPaaSProvider {
/**
* Return a configurator instance for a given location type.
*
* @param locationType The type of location for which to get a location configurator.
* @return The configurator plugin.
*/
ILocationConfiguratorPlugin getConfigurator(String locationType);
/**
* Get archives provided by the plugin. They contains all the types that are used to configure the plugin or that the plugin can eventually support.
* Note that theses archives should not contains any topologies as they will be ignored by alien.
*
* @return The archives provided by the plugin.
*/
List<PluginArchive> pluginArchives();
}