package alien4cloud.orchestrators.locations.services;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import alien4cloud.model.deployment.matching.MatchingConfiguration;
import alien4cloud.model.orchestrators.Orchestrator;
import alien4cloud.model.orchestrators.locations.Location;
import alien4cloud.orchestrators.plugin.ILocationConfiguratorPlugin;
import alien4cloud.orchestrators.plugin.IOrchestratorPlugin;
import alien4cloud.orchestrators.services.OrchestratorService;
import alien4cloud.paas.OrchestratorPluginService;
/**
* Allow to retrieve the matching configuration for a given location.
*/
@Service
public class LocationMatchingConfigurationService {
@Inject
private OrchestratorService orchestratorService;
@Inject
private OrchestratorPluginService orchestratorPluginService;
/**
* Get the matching configuration for a given location.
*
* @param location The location for which to get the configuration.
* @return A map nodetype, matching configuration to be used for matching.
*/
public Map<String, MatchingConfiguration> getMatchingConfiguration(Location location) {
Orchestrator orchestrator = orchestratorService.getOrFail(location.getOrchestratorId());
IOrchestratorPlugin orchestratorInstance = (IOrchestratorPlugin) orchestratorPluginService.get(orchestrator.getId());
if (orchestratorInstance == null) {
return null;
}
ILocationConfiguratorPlugin configuratorPlugin = orchestratorInstance.getConfigurator(location.getInfrastructureType());
return configuratorPlugin.getMatchingConfigurations();
}
}