---
title: "Mejoras en Configuración Centralizada"
canonical: "https://onesaitplatform-es.refined.site/space/DOC/2216832534/Mejoras%20en%20Configuraci%C3%B3n%20Centralizada"
format: markdown
---
> Macro (toc)

> ℹ️ Disponible desde Release 2.3.0-immortal

# Introducción 

En Q4 de 2021 se ha remodelado la [Configuración Centralizada](https://onesaitplatform.atlassian.net/wiki/pages/createpage.action?spaceKey=doc&title=How%20to%20use%20Central%20Configuration%20util%20on%20your%20application%3F&linkCreation=true&fromPageId=2216832534), 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**

![image](media://6e3dbe48-32b4-4d7a-9341-bddb2c77fdf2)

## 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:

![image](media://71a999d6-19d4-4d96-9aa5-5bfc69d27c6b)

## 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. 

```java
ConfigurationManager manager = new ConfigurationManager("developer", "changeIt2020!", "https://hyperblast.onesaitplatform.com");
Configuration configuration = manager.getConfigurationById(configurationId);
```

Para mas detalle consultar [este tutorial](https://onesaitplatform.atlassian.net/wiki/spaces/DOC/pages/2216832401).

A continuación se muestra un ejemplo completo de como operar con el Cliente Java de la Plataforma:

```java
/**
 * 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);

	}
}
```


## Explicación en vídeo

> Macro (widget)