package com.sequenceiq.cloudbreak.service.cluster.flow.filesystem.adls; import static com.sequenceiq.cloudbreak.api.model.FileSystemType.ADLS; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.api.model.AdlsFileSystemConfiguration; import com.sequenceiq.cloudbreak.api.model.FileSystemType; import com.sequenceiq.cloudbreak.service.cluster.flow.blueprint.BlueprintConfigurationEntry; import com.sequenceiq.cloudbreak.service.cluster.flow.filesystem.AbstractFileSystemConfigurator; import com.sequenceiq.cloudbreak.service.cluster.flow.filesystem.FileSystemScriptConfig; @Component public class AdlsFileSystemConfigurator extends AbstractFileSystemConfigurator<AdlsFileSystemConfiguration> { @Override public List<BlueprintConfigurationEntry> getFsProperties(AdlsFileSystemConfiguration fsConfig, Map<String, String> resourceProperties) { List<BlueprintConfigurationEntry> bpConfigs = new ArrayList<>(); String clientId = fsConfig.getClientId(); String credential = fsConfig.getCredential(); String tenantId = fsConfig.getTenantId(); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "dfs.adls.oauth2.access.token.provider.type", "ClientCredential")); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "dfs.adls.oauth2.client.id", clientId)); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "dfs.adls.oauth2.credential", credential)); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/" + tenantId + "/oauth2/token")); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "fs.AbstractFileSystem.adl.impl", "org.apache.hadoop.fs.adl.Adl")); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "fs.adl.impl", "org.apache.hadoop.fs.adl.AdlFileSystem")); bpConfigs.add(new BlueprintConfigurationEntry("core-site", "fs.adls.oauth2.resource", "https://management.core.windows.net/")); return bpConfigs; } @Override public String getDefaultFsValue(AdlsFileSystemConfiguration fsConfig) { return "adl://" + fsConfig.getAccountName() + ".azuredatalakestore.net"; } @Override public FileSystemType getFileSystemType() { return ADLS; } @Override protected List<FileSystemScriptConfig> getScriptConfigs(AdlsFileSystemConfiguration fsConfig) { return new ArrayList<>(); } }