Search in sources :

Example 16 with KerberosConfig

use of com.sequenceiq.cloudbreak.domain.KerberosConfig in project cloudbreak by hortonworks.

the class KerberosConfigToKerberosRequestConverterTest method testExistingMit.

@Test
public void testExistingMit() {
    KerberosConfig config = new KerberosConfig();
    config.setType(KerberosType.EXISTING_MIT);
    config.setPassword("");
    config.setPrincipal("");
    config.setUrl("");
    config.setAdminUrl("");
    config.setRealm("");
    config.setTcpAllowed(true);
    KerberosRequest request = underTest.convert(config);
    assertAllFieldsNotNull(request, Lists.newArrayList("admin", "ldapUrl", "containerDn", "descriptor", "krb5Conf", "masterKey"));
}
Also used : KerberosConfig(com.sequenceiq.cloudbreak.domain.KerberosConfig) KerberosRequest(com.sequenceiq.cloudbreak.api.model.KerberosRequest) AbstractConverterTest(com.sequenceiq.cloudbreak.converter.AbstractConverterTest) Test(org.junit.Test)

Example 17 with KerberosConfig

use of com.sequenceiq.cloudbreak.domain.KerberosConfig in project cloudbreak by hortonworks.

the class ClusterHostServiceRunner method createSaltConfig.

private SaltConfig createSaltConfig(Stack stack, Cluster cluster, GatewayConfig primaryGatewayConfig, Iterable<GatewayConfig> gatewayConfigs) throws IOException, CloudbreakOrchestratorException {
    Map<String, SaltPillarProperties> servicePillar = new HashMap<>();
    saveDatalakeNameservers(stack, servicePillar);
    saveSharedRangerService(stack, servicePillar);
    if (cluster.isSecure() && kerberosDetailService.isAmbariManagedKerberosPackages(cluster.getKerberosConfig())) {
        Map<String, String> kerberosPillarConf = new HashMap<>();
        KerberosConfig kerberosConfig = cluster.getKerberosConfig();
        putIfNotNull(kerberosPillarConf, kerberosConfig.getMasterKey(), "masterKey");
        putIfNotNull(kerberosPillarConf, kerberosConfig.getAdmin(), "user");
        putIfNotNull(kerberosPillarConf, kerberosConfig.getPassword(), "password");
        if (StringUtils.isEmpty(kerberosConfig.getDescriptor())) {
            putIfNotNull(kerberosPillarConf, kerberosConfig.getUrl(), "url");
            putIfNotNull(kerberosPillarConf, kerberosConfig.getAdminUrl(), "adminUrl");
            putIfNotNull(kerberosPillarConf, kerberosConfig.getRealm(), "realm");
        } else {
            Map<String, Object> properties = kerberosDetailService.getKerberosEnvProperties(kerberosConfig);
            putIfNotNull(kerberosPillarConf, properties.get("kdc_hosts"), "url");
            putIfNotNull(kerberosPillarConf, properties.get("admin_server_host"), "adminUrl");
            putIfNotNull(kerberosPillarConf, properties.get("realm"), "realm");
        }
        putIfNotNull(kerberosPillarConf, cluster.getUserName(), "clusterUser");
        putIfNotNull(kerberosPillarConf, cluster.getPassword(), "clusterPassword");
        servicePillar.put("kerberos", new SaltPillarProperties("/kerberos/init.sls", singletonMap("kerberos", kerberosPillarConf)));
    }
    servicePillar.put("discovery", new SaltPillarProperties("/discovery/init.sls", singletonMap("platform", stack.cloudPlatform())));
    servicePillar.put("metadata", new SaltPillarProperties("/metadata/init.sls", singletonMap("cluster", singletonMap("name", stack.getCluster().getName()))));
    saveGatewayPillar(primaryGatewayConfig, cluster, servicePillar);
    AmbariRepo ambariRepo = clusterComponentConfigProvider.getAmbariRepo(cluster.getId());
    if (ambariRepo != null) {
        servicePillar.put("ambari-repo", new SaltPillarProperties("/ambari/repo.sls", singletonMap("ambari", singletonMap("repo", ambariRepo))));
    }
    servicePillar.put("ambari-gpl-repo", new SaltPillarProperties("/ambari/gpl.sls", singletonMap("ambari", singletonMap("gpl", singletonMap("enabled", clusterComponentConfigProvider.getHDPRepo(cluster.getId()).isEnableGplRepo())))));
    decoratePillarWithAmbariDatabase(cluster, servicePillar);
    saveLdapPillar(cluster.getLdapConfig(), servicePillar);
    saveDockerPillar(cluster.getExecutorType(), servicePillar);
    saveHDPPillar(cluster.getId(), servicePillar);
    Map<String, Object> credentials = new HashMap<>();
    credentials.put("username", ambariSecurityConfigProvider.getAmbariUserName(stack.getCluster()));
    credentials.put("password", ambariSecurityConfigProvider.getAmbariPassword(stack.getCluster()));
    credentials.put("securityMasterKey", ambariSecurityConfigProvider.getAmbariSecurityMasterKey(cluster));
    servicePillar.put("ambari-credentials", new SaltPillarProperties("/ambari/credentials.sls", singletonMap("ambari", credentials)));
    if (smartSenseCredentialConfigService.areCredentialsSpecified()) {
        Map<String, Object> smartSenseCredentials = smartSenseCredentialConfigService.getCredentials();
        servicePillar.put("smartsense-credentials", new SaltPillarProperties("/smartsense/credentials.sls", smartSenseCredentials));
    }
    postgresConfigService.decorateServicePillarWithPostgresIfNeeded(servicePillar, stack, cluster);
    proxyConfigProvider.decoratePillarWithProxyDataIfNeeded(servicePillar, cluster);
    return new SaltConfig(servicePillar, createGrainProperties(gatewayConfigs));
}
Also used : HashMap(java.util.HashMap) KerberosConfig(com.sequenceiq.cloudbreak.domain.KerberosConfig) AmbariRepo(com.sequenceiq.cloudbreak.cloud.model.AmbariRepo) SaltConfig(com.sequenceiq.cloudbreak.orchestrator.model.SaltConfig) SaltPillarProperties(com.sequenceiq.cloudbreak.orchestrator.model.SaltPillarProperties)

Example 18 with KerberosConfig

use of com.sequenceiq.cloudbreak.domain.KerberosConfig in project cloudbreak by hortonworks.

the class ClusterRequestToClusterConverter method convert.

@Override
public Cluster convert(ClusterRequest source) {
    Cluster cluster = new Cluster();
    cluster.setName(source.getName());
    cluster.setStatus(REQUESTED);
    cluster.setDescription(source.getDescription());
    cluster.setEmailNeeded(source.getEmailNeeded());
    cluster.setUserName(source.getUserName());
    cluster.setPassword(source.getPassword());
    cluster.setExecutorType(source.getExecutorType());
    Boolean enableSecurity = source.getEnableSecurity();
    cluster.setSecure(enableSecurity == null ? Boolean.FALSE : enableSecurity);
    convertKnox(source, cluster);
    if (source.getKerberos() != null) {
        KerberosConfig kerberosConfig = getConversionService().convert(source.getKerberos(), KerberosConfig.class);
        cluster.setKerberosConfig(kerberosConfig);
    }
    cluster.setConfigStrategy(source.getConfigStrategy());
    cluster.setEmailTo(source.getEmailTo());
    FileSystemBase fileSystem = source.getFileSystem();
    cluster.setCloudbreakAmbariPassword(PasswordUtil.generatePassword());
    cluster.setCloudbreakAmbariUser("cloudbreak");
    convertAttributes(source, cluster);
    if (fileSystem != null) {
        cluster.setFileSystem(getConversionService().convert(fileSystem, FileSystem.class));
    }
    Map<String, String> inputs = source.getBlueprintInputs() == null ? Collections.emptyMap() : convertBlueprintInputJsons(source.getBlueprintInputs());
    try {
        cluster.setBlueprintInputs(new Json(inputs));
        if (source.getBlueprintCustomProperties() != null) {
            cluster.setBlueprintCustomProperties(source.getBlueprintCustomProperties());
        } else {
            cluster.setBlueprintCustomProperties(null);
        }
    } catch (JsonProcessingException ignored) {
        cluster.setBlueprintInputs(null);
    }
    try {
        Json json = new Json(convertContainerConfigs(source.getCustomContainer()));
        cluster.setCustomContainerDefinition(json);
    } catch (JsonProcessingException ignored) {
        cluster.setCustomContainerDefinition(null);
    }
    cluster.setAmbariSecurityMasterKey(source.getAmbariSecurityMasterKey());
    return cluster;
}
Also used : FileSystemBase(com.sequenceiq.cloudbreak.api.model.FileSystemBase) KerberosConfig(com.sequenceiq.cloudbreak.domain.KerberosConfig) FileSystem(com.sequenceiq.cloudbreak.domain.FileSystem) Cluster(com.sequenceiq.cloudbreak.domain.Cluster) GatewayJson(com.sequenceiq.cloudbreak.api.model.GatewayJson) Json(com.sequenceiq.cloudbreak.domain.json.Json) BlueprintInputJson(com.sequenceiq.cloudbreak.api.model.BlueprintInputJson) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 19 with KerberosConfig

use of com.sequenceiq.cloudbreak.domain.KerberosConfig in project cloudbreak by hortonworks.

the class ClusterToClusterResponseConverter method convert.

protected <R extends ClusterResponse> R convert(Cluster source, Class<R> clazz) throws IllegalAccessException, InstantiationException {
    R clusterResponse = clazz.newInstance();
    clusterResponse.setId(source.getId());
    clusterResponse.setName(source.getName());
    clusterResponse.setStatus(source.getStatus());
    clusterResponse.setStatusReason(source.getStatusReason());
    if (source.getBlueprint() != null) {
        clusterResponse.setBlueprintId(source.getBlueprint().getId());
    }
    long uptime = stackUtil.getUptimeForCluster(source, source.isAvailable());
    int minutes = (int) ((uptime / (MILLIS_PER_SECOND * SECONDS_PER_MINUTE)) % SECONDS_PER_MINUTE);
    int hours = (int) (uptime / (MILLIS_PER_SECOND * SECONDS_PER_MINUTE * SECONDS_PER_MINUTE));
    clusterResponse.setUptime(uptime);
    clusterResponse.setHoursUp(hours);
    clusterResponse.setMinutesUp(minutes);
    Set<RDSConfig> rdsConfigs = source.getRdsConfigs();
    convertRdsIds(clusterResponse, rdsConfigs);
    if (source.getLdapConfig() != null) {
        clusterResponse.setLdapConfigId(source.getLdapConfig().getId());
    }
    if (source.getAttributes() != null) {
        clusterResponse.setAttributes(source.getAttributes().getMap());
    }
    String ambariIp = stackUtil.extractAmbariIp(source.getStack());
    clusterResponse.setAmbariServerIp(ambariIp);
    clusterResponse.setUserName(source.getUserName());
    clusterResponse.setExecutorType(source.getExecutorType());
    clusterResponse.setDescription(source.getDescription() == null ? "" : source.getDescription());
    clusterResponse.setExtendedBlueprintText(source.getExtendedBlueprintText() == null ? source.getBlueprint().getBlueprintText() : source.getExtendedBlueprintText());
    clusterResponse.setHostGroups(convertHostGroupsToJson(source.getHostGroups()));
    clusterResponse.setAmbariServerUrl(getAmbariServerUrl(source, ambariIp));
    clusterResponse.setServiceEndPoints(prepareServiceEndpointsMap(source, ambariIp));
    clusterResponse.setBlueprintInputs(convertBlueprintInputs(source.getBlueprintInputs()));
    clusterResponse.setConfigStrategy(source.getConfigStrategy());
    setExtendedBlueprintText(source, clusterResponse);
    clusterResponse.setLdapConfig(getConversionService().convert(source.getLdapConfig(), LdapConfigResponse.class));
    convertRdsConfigs(source, clusterResponse);
    clusterResponse.setBlueprint(getConversionService().convert(source.getBlueprint(), BlueprintResponse.class));
    convertKnox(source, clusterResponse);
    convertCustomQueue(source, clusterResponse);
    if (source.getBlueprintCustomProperties() != null) {
        clusterResponse.setBlueprintCustomProperties(jsonHelper.createJsonFromString(source.getBlueprintCustomProperties()));
    }
    convertContainerConfig(source, clusterResponse);
    convertComponentConfig(clusterResponse, source);
    clusterResponse.setCreationFinished(source.getCreationFinished());
    KerberosConfig kerberosConfig = source.getKerberosConfig();
    if (source.isSecure() && kerberosConfig != null) {
        clusterResponse.setSecure(source.isSecure());
        clusterResponse.setKerberosResponse(getConversionService().convert(source.getKerberosConfig(), KerberosResponse.class));
    }
    decorateResponseWithProxyConfig(source, clusterResponse);
    return clusterResponse;
}
Also used : KerberosResponse(com.sequenceiq.cloudbreak.api.model.KerberosResponse) RDSConfig(com.sequenceiq.cloudbreak.domain.RDSConfig) KerberosConfig(com.sequenceiq.cloudbreak.domain.KerberosConfig) LdapConfigResponse(com.sequenceiq.cloudbreak.api.model.ldap.LdapConfigResponse) Blueprint(com.sequenceiq.cloudbreak.domain.Blueprint) BlueprintResponse(com.sequenceiq.cloudbreak.api.model.BlueprintResponse)

Example 20 with KerberosConfig

use of com.sequenceiq.cloudbreak.domain.KerberosConfig in project cloudbreak by hortonworks.

the class AmbariClusterService method cleanupKerberosCredential.

@Override
public void cleanupKerberosCredential(Cluster cluster) {
    if (cluster.isSecure() && cluster.getKerberosConfig() != null) {
        KerberosConfig kerberosConfig = cluster.getKerberosConfig();
        kerberosConfig.setPassword(null);
        kerberosConfig.setPrincipal(null);
        kerberosConfigRepository.save(kerberosConfig);
    }
}
Also used : KerberosConfig(com.sequenceiq.cloudbreak.domain.KerberosConfig)

Aggregations

KerberosConfig (com.sequenceiq.cloudbreak.domain.KerberosConfig)21 Test (org.junit.Test)10 KerberosRequest (com.sequenceiq.cloudbreak.api.model.KerberosRequest)5 Blueprint (com.sequenceiq.cloudbreak.domain.Blueprint)5 Cluster (com.sequenceiq.cloudbreak.domain.Cluster)5 AbstractConverterTest (com.sequenceiq.cloudbreak.converter.AbstractConverterTest)4 Stack (com.sequenceiq.cloudbreak.domain.Stack)3 JsonNode (com.fasterxml.jackson.databind.JsonNode)2 BlueprintPreparationObject (com.sequenceiq.cloudbreak.blueprint.BlueprintPreparationObject)2 BlueprintTextProcessor (com.sequenceiq.cloudbreak.blueprint.BlueprintTextProcessor)2 GeneralClusterConfigs (com.sequenceiq.cloudbreak.blueprint.templates.GeneralClusterConfigs)2 FileSystem (com.sequenceiq.cloudbreak.domain.FileSystem)2 RDSConfig (com.sequenceiq.cloudbreak.domain.RDSConfig)2 CloudbreakServiceException (com.sequenceiq.cloudbreak.service.CloudbreakServiceException)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 BlueprintInputJson (com.sequenceiq.cloudbreak.api.model.BlueprintInputJson)1 BlueprintResponse (com.sequenceiq.cloudbreak.api.model.BlueprintResponse)1 FileSystemBase (com.sequenceiq.cloudbreak.api.model.FileSystemBase)1 FileSystemRequest (com.sequenceiq.cloudbreak.api.model.FileSystemRequest)1 GatewayJson (com.sequenceiq.cloudbreak.api.model.GatewayJson)1