Mejoras en Configuración Centralizada
Disponible desde Release 2.3.0-immortal
Introducción
En Q4 de 2021 se ha remodelado la Configuración Centralizada, a partir de la versión 2.3.0 encontraremos los diversos cambios.
Cambios introducidos
Nueva ubicación.
Se cambiará la ubicación de esta funcionalidad dentro del menú del Controlpanel, ya que ahora estará disponible para todos los usuarios, no solo los administradores.
A partir de la próxima versión de Plataforma encontrarás esta funcionalidad en DEV TOOLS
Nombrado y APIs
A partir de esta versión, se podrá asignar un identificador legible a cada configuración, lo que permitirá operar con las configuraciones de manera más sencilla. Para ello se ha creado también un nuevo API dentro de las APIs del controlpanel para poder obtener una Configuración según su identificador, tipo y entorno:
Integración con microsericios
Además, se añade un nuevo tipo de Configuración para el caso de los usuarios no administradores “EXTERNAL_CONFIGURATION“.
Este nuevo tipo de configuración permitirá a los usuarios cargarla de manera simple en microservicios. Para ello basta con crear un objeto Configuration con los datos de conexión contra el entorno donde se encuentra la configuración deseada, después se puede utilizar dicho objeto para obtener la Configuración deseada.
ConfigurationManager manager = new ConfigurationManager("developer", "changeIt2020!", "https://hyperblast.onesaitplatform.com");
Configuration configuration = manager.getConfigurationById(configurationId);
Para mas detalle consultar este tutorial.
A continuación se muestra un ejemplo completo de como operar con el Cliente Java de la Plataforma:
/**
* Copyright Indra Soluciones Tecnologías de la Información, S.L.U.
* 2013-2021 SPAIN
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.minsait.onesait.platform.client;
import java.io.IOException;
import java.util.List;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.minsait.onesait.platform.client.enums.ConfigurationType;
import com.minsait.onesait.platform.client.exception.ConfigurationManagerException;
import com.minsait.onesait.platform.client.model.Configuration;
import com.minsait.onesait.platform.testing.IntegrationTest;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Category(IntegrationTest.class)
public class TestConfigurationManager {
private final static String USERNAME = "developer";
private final static String PASSWORD = "Changed2019!";
private final static String SERVER = "http://localhost:18000";
private final static String IDENTIFICATION = "testing_01";
private final static String ENVIRONMENT = "default";
private final static String YML_SAMPLE = "rancher:\r\n url: https://rancher.sofia4cities.com/\r\n accessKey: 471D90A16431C2CE7158\r\n secretKey: VSoq31eGBqaFsG4vUcuvdpkQL1T64FypVPVckaDx";
private final static ConfigurationType TYPE = ConfigurationType.EXTERNAL_CONFIG;
private static ConfigurationManager manager;
@BeforeClass
public static void startUp() throws ConfigurationManagerException {
log.info("Initializing Manager");
manager = new ConfigurationManager(USERNAME, PASSWORD, SERVER);
}
@Test
public void getAllConfigurations() throws IOException, ConfigurationManagerException {
log.info("Getting Configurations from open platform");
final List<Configuration> configurations = manager.getConfigurations();
Assert.assertTrue(configurations.size() > 0);
}
@Test
public void configurationCRUD() throws IOException, ConfigurationManagerException {
@SuppressWarnings("unchecked")
final Configuration configuration = Configuration.builder().description("Rancher config sample")
.environment(ENVIRONMENT).identification(IDENTIFICATION).username(USERNAME).type(TYPE).yml(YML_SAMPLE)
.build();
Configuration retrievedConfig = manager.getConfiguration(IDENTIFICATION, ConfigurationType.EXTERNAL_CONFIG,
ENVIRONMENT);
if (retrievedConfig != null) {
log.info("Deleting configuration with id {}", retrievedConfig.getId());
manager.deleteConfiguration(retrievedConfig.getId());
}
log.info("Creating configuration");
final String id = manager.createConfiguration(configuration);
Assert.assertNotNull(id);
log.info("Created configuration, id is {}", id);
retrievedConfig = manager.getConfigurationById(id);
Assert.assertNotNull(retrievedConfig);
log.info("Retrieved config from the platform by id");
retrievedConfig = manager.getConfiguration(IDENTIFICATION, ConfigurationType.EXTERNAL_CONFIG, ENVIRONMENT);
Assert.assertNotNull(retrievedConfig);
log.info("Retrieved config from the platform by parameters");
configuration.setDescription("This is a new description");
log.info("Updating configuration with new description and identification {}", IDENTIFICATION);
manager.updateConfiguration(configuration, id);
log.info("Deleting configuration with id {}", id);
manager.deleteConfiguration(IDENTIFICATION, ConfigurationType.EXTERNAL_CONFIG, ENVIRONMENT);
}
}