Search in sources :

Example 36 with ClusterProfile

use of com.thoughtworks.go.config.elastic.ClusterProfile in project gocd by gocd.

the class InstanceFactory method createJobPlan.

public JobPlan createJobPlan(JobConfig config, SchedulingContext context) {
    JobIdentifier identifier = new JobIdentifier();
    String elasticProfileId = config.getElasticProfileId();
    String clusterProfileId = null;
    ElasticProfile elasticProfile = null;
    ClusterProfile clusterProfile = null;
    if (elasticProfileId != null) {
        elasticProfile = context.getElasticProfile(elasticProfileId);
        clusterProfileId = elasticProfile.getClusterProfileId();
    }
    if (clusterProfileId != null) {
        clusterProfile = context.getClusterProfile(clusterProfileId);
    }
    final EnvironmentVariables variables = EnvironmentVariables.toEnvironmentVariables(context.overrideEnvironmentVariables(config.getVariables()).getEnvironmentVariablesConfig());
    return new DefaultJobPlan(new Resources(config.resourceConfigs()), ArtifactPlan.toArtifactPlans(config.artifactTypeConfigs()), -1, identifier, null, variables, new EnvironmentVariables(), elasticProfile, clusterProfile);
}
Also used : ElasticProfile(com.thoughtworks.go.config.elastic.ElasticProfile) CaseInsensitiveString(com.thoughtworks.go.config.CaseInsensitiveString) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile)

Example 37 with ClusterProfile

use of com.thoughtworks.go.config.elastic.ClusterProfile in project gocd by gocd.

the class ConfigurationPropertyDTO method toDomainModel.

public ClusterProfile toDomainModel() {
    ArrayList<ConfigurationProperty> configurationProperties = new ArrayList<>();
    ConfigurationPropertyBuilder builder = new ConfigurationPropertyBuilder();
    this.properties.forEach((key, valueObject) -> {
        boolean isSecure = (boolean) valueObject.get("isSecure");
        String value = isSecure ? null : (String) valueObject.get("value");
        String encryptedValue = isSecure ? (String) valueObject.get("value") : null;
        configurationProperties.add(builder.create(key, value, encryptedValue, isSecure));
    });
    return new ClusterProfile(this.id, this.pluginId, configurationProperties);
}
Also used : ConfigurationProperty(com.thoughtworks.go.domain.config.ConfigurationProperty) ArrayList(java.util.ArrayList) ConfigurationPropertyBuilder(com.thoughtworks.go.config.builder.ConfigurationPropertyBuilder) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile)

Example 38 with ClusterProfile

use of com.thoughtworks.go.config.elastic.ClusterProfile in project gocd by gocd.

the class ElasticAgentExtensionConverterV5Test method shouldGetRequestBodyForMigrateCall_withNewConfig.

@Test
public void shouldGetRequestBodyForMigrateCall_withNewConfig() throws CryptoException {
    ConfigurationProperty property1 = new ConfigurationProperty(new ConfigurationKey("key"), new ConfigurationValue("value"));
    ConfigurationProperty property2 = new ConfigurationProperty(new ConfigurationKey("key2"), new EncryptedConfigurationValue(new GoCipher().encrypt("password")));
    Configuration configuration = new Configuration();
    configuration.add(property1);
    configuration.add(property2);
    Map<String, String> pluginSettings = configuration.getConfigurationAsMap(true);
    List<ClusterProfile> clusterProfiles = new ArrayList<>();
    clusterProfiles.add(new ClusterProfile("cluster_profile_id", "plugin_id", new ConfigurationProperty(new ConfigurationKey("some_key"), new ConfigurationValue("some_value")), new ConfigurationProperty(new ConfigurationKey("some_key2"), new EncryptedConfigurationValue(new GoCipher().encrypt("some_value2")))));
    List<ElasticProfile> elasticAgentProfiles = new ArrayList<>();
    elasticAgentProfiles.add(new ElasticProfile("profile_id", "cluster_profile_id", new ConfigurationProperty(new ConfigurationKey("some_key"), new ConfigurationValue("some_value")), new ConfigurationProperty(new ConfigurationKey("some_key2"), new EncryptedConfigurationValue(new GoCipher().encrypt("some_value2")))));
    ElasticAgentInformation elasticAgentInformation = new ElasticAgentInformation(pluginSettings, clusterProfiles, elasticAgentProfiles);
    ElasticAgentInformationDTO elasticAgentInformationDTO = new ElasticAgentExtensionConverterV5().getElasticAgentInformationDTO(elasticAgentInformation);
    String requestBody = elasticAgentInformationDTO.toJSON().toString();
    String expectedRequestBody = "{" + "    \"plugin_settings\":{" + "        \"key2\":\"password\", " + "        \"key\":\"value\"" + "    }," + "    \"cluster_profiles\":[" + "        {" + "            \"id\":\"cluster_profile_id\"," + "            \"plugin_id\":\"plugin_id\"," + "            \"properties\":{" + "                \"some_key\":\"some_value\"," + "                \"some_key2\":\"some_value2\"" + "            }" + "         }" + "    ]," + "    \"elastic_agent_profiles\":[" + "        {" + "            \"id\":\"profile_id\"," + "            \"plugin_id\":\"plugin_id\"," + "            \"cluster_profile_id\":\"cluster_profile_id\"," + "            \"properties\":{" + "                \"some_key\":\"some_value\", " + "                \"some_key2\":\"some_value2\"" + "            }" + "        }" + "    ]" + "}\n";
    assertThatJson(expectedRequestBody).isEqualTo(requestBody);
}
Also used : GoCipher(com.thoughtworks.go.security.GoCipher) PluginConfiguration(com.thoughtworks.go.plugin.domain.common.PluginConfiguration) ElasticAgentInformation(com.thoughtworks.go.plugin.access.elastic.models.ElasticAgentInformation) ElasticProfile(com.thoughtworks.go.config.elastic.ElasticProfile) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile) Test(org.junit.jupiter.api.Test)

Example 39 with ClusterProfile

use of com.thoughtworks.go.config.elastic.ClusterProfile in project gocd by gocd.

the class ElasticAgentExtensionConverterV5Test method shouldGetRequestBodyForMigrateCall_withOldConfig.

@Test
public void shouldGetRequestBodyForMigrateCall_withOldConfig() throws CryptoException {
    ConfigurationProperty property1 = new ConfigurationProperty(new ConfigurationKey("key"), new ConfigurationValue("value"));
    ConfigurationProperty property2 = new ConfigurationProperty(new ConfigurationKey("key2"), new EncryptedConfigurationValue(new GoCipher().encrypt("password")));
    Configuration configuration = new Configuration();
    configuration.add(property1);
    configuration.add(property2);
    Map<String, String> pluginSettings = configuration.getConfigurationAsMap(true);
    List<ClusterProfile> clusterProfiles = new ArrayList<>();
    clusterProfiles.add(new ClusterProfile("prod-cluster", "plugin_id"));
    List<ElasticProfile> elasticAgentProfiles = new ArrayList<>();
    elasticAgentProfiles.add(new ElasticProfile("profile_id", "prod-cluster", new ConfigurationProperty(new ConfigurationKey("some_key"), new ConfigurationValue("some_value")), new ConfigurationProperty(new ConfigurationKey("some_key2"), new EncryptedConfigurationValue(new GoCipher().encrypt("some_value2")))));
    ElasticAgentInformation elasticAgentInformation = new ElasticAgentInformation(pluginSettings, clusterProfiles, elasticAgentProfiles);
    ElasticAgentInformationDTO elasticAgentInformationDTO = new ElasticAgentExtensionConverterV5().getElasticAgentInformationDTO(elasticAgentInformation);
    String requestBody = elasticAgentInformationDTO.toJSON().toString();
    String expectedRequestBody = "{" + "    \"plugin_settings\":{" + "        \"key2\":\"password\", " + "        \"key\":\"value\"" + "    }," + "    \"cluster_profiles\":[" + "        {" + "            \"id\":\"prod-cluster\"," + "            \"plugin_id\":\"plugin_id\"," + "            \"properties\":{" + "            }" + "        }" + "    ]," + "    \"elastic_agent_profiles\":[" + "        {" + "            \"id\":\"profile_id\"," + "            \"plugin_id\":\"plugin_id\"," + "            \"cluster_profile_id\": \"prod-cluster\"," + "            \"properties\":{" + "                \"some_key\":\"some_value\", " + "                \"some_key2\":\"some_value2\"" + "            }" + "        }" + "    ]" + "}\n";
    assertThatJson(expectedRequestBody).isEqualTo(requestBody);
}
Also used : GoCipher(com.thoughtworks.go.security.GoCipher) PluginConfiguration(com.thoughtworks.go.plugin.domain.common.PluginConfiguration) ElasticAgentInformation(com.thoughtworks.go.plugin.access.elastic.models.ElasticAgentInformation) ElasticProfile(com.thoughtworks.go.config.elastic.ElasticProfile) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile) Test(org.junit.jupiter.api.Test)

Example 40 with ClusterProfile

use of com.thoughtworks.go.config.elastic.ClusterProfile in project gocd by gocd.

the class JobAgentMetadata method clusterProfile.

public ClusterProfile clusterProfile() {
    Map map = GSON.fromJson(clusterProfileMetadata, LinkedHashMap.class);
    if (map == null || map.isEmpty()) {
        return null;
    }
    String pluginId = (String) map.get("pluginId");
    String id = (String) map.get("id");
    Map<String, String> properties = (Map<String, String>) map.get("properties");
    Collection<ConfigurationProperty> configProperties = properties.entrySet().stream().map(entry -> new ConfigurationProperty(new ConfigurationKey(entry.getKey()), new ConfigurationValue(entry.getValue()))).collect(Collectors.toList());
    return new ClusterProfile(id, pluginId, configProperties);
}
Also used : ConfigurationProperty(com.thoughtworks.go.domain.config.ConfigurationProperty) ConfigurationKey(com.thoughtworks.go.domain.config.ConfigurationKey) Collection(java.util.Collection) Collectors(java.util.stream.Collectors) GsonBuilder(com.google.gson.GsonBuilder) ConfigurationValue(com.thoughtworks.go.domain.config.ConfigurationValue) LinkedHashMap(java.util.LinkedHashMap) Objects(java.util.Objects) FieldNamingPolicy(com.google.gson.FieldNamingPolicy) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile) Gson(com.google.gson.Gson) Map(java.util.Map) ElasticProfile(com.thoughtworks.go.config.elastic.ElasticProfile) ConfigurationProperty(com.thoughtworks.go.domain.config.ConfigurationProperty) ConfigurationValue(com.thoughtworks.go.domain.config.ConfigurationValue) ConfigurationKey(com.thoughtworks.go.domain.config.ConfigurationKey) ClusterProfile(com.thoughtworks.go.config.elastic.ClusterProfile) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

ClusterProfile (com.thoughtworks.go.config.elastic.ClusterProfile)69 Test (org.junit.jupiter.api.Test)39 ElasticProfile (com.thoughtworks.go.config.elastic.ElasticProfile)32 ConfigurationProperty (com.thoughtworks.go.domain.config.ConfigurationProperty)14 HttpLocalizedOperationResult (com.thoughtworks.go.server.service.result.HttpLocalizedOperationResult)12 ConfigurationKey (com.thoughtworks.go.domain.config.ConfigurationKey)10 ConfigurationValue (com.thoughtworks.go.domain.config.ConfigurationValue)10 ElasticAgentPluginInfo (com.thoughtworks.go.plugin.domain.elastic.ElasticAgentPluginInfo)10 ClusterProfiles (com.thoughtworks.go.config.elastic.ClusterProfiles)8 Username (com.thoughtworks.go.server.domain.Username)8 GoPluginDescriptor (com.thoughtworks.go.plugin.infra.plugininfo.GoPluginDescriptor)7 BeforeEach (org.junit.jupiter.api.BeforeEach)7 ElasticConfig (com.thoughtworks.go.config.elastic.ElasticConfig)6 Capabilities (com.thoughtworks.go.plugin.domain.elastic.Capabilities)6 BasicCruiseConfig (com.thoughtworks.go.config.BasicCruiseConfig)5 RecordNotFoundException (com.thoughtworks.go.config.exceptions.RecordNotFoundException)5 JobAgentMetadata (com.thoughtworks.go.domain.JobAgentMetadata)4 ElasticAgentInformation (com.thoughtworks.go.plugin.access.elastic.models.ElasticAgentInformation)4 PluginConfiguration (com.thoughtworks.go.plugin.domain.common.PluginConfiguration)4 GoCipher (com.thoughtworks.go.security.GoCipher)4