Update API
Methods
setMicroserviceConfiguration
Sets microservice configuration.
void setMicroserviceConfiguration(
final NodeConnectionData node, final String microserviceName, final Map configuration
) throws ExecutionException, MainServerNotConnectedException, ExecutionInterruptedException;
Arguments:
- node - Node to execute command.
- microserviceName - Microservice name to change configuration for.
- configuration - New configuration.
Exceptions:
- ExecutionException - Is thrown when exception occurred while executing command.
- MainServerNotConnectedException - Is thrown when cannot connect to node.
- ExecutionInterruptedException - Is thrown when thread was interrupted during execution.
setMainServerConfiguration
Sets main server configuration.
void setMainServerConfiguration(
final NodeConnectionData node, final Map configuration
) throws ExecutionException, MainServerNotConnectedException, ExecutionInterruptedException;
Arguments:
- node - Node to execute command.
- configuration - New configuration.
Exceptions:
- ExecutionException - Is thrown when exception occurred while executing command.
- MainServerNotConnectedException - Is thrown when cannot connect to node.
- ExecutionInterruptedException - Is thrown when thread was interrupted during execution.
Example
Change Main Server configuration
Full example of changing Main Server configuration.
import com.jlupin.entrypoint.command.forwarder.transmission.main.JLupinMainServerTransmissionEntryPointCommandForwarder;
import com.jlupin.impl.util.communication.factory.socket.impl.defaults.JLupinDefaultCommunicationProtocolUtilSocketFactoryImpl;
import com.jlupin.platform.management.client.api.query.impl.QueryAPIImpl;
import com.jlupin.platform.management.client.api.query.interfaces.QueryAPI;
import com.jlupin.platform.management.client.api.query.pojo.query.Query;
import com.jlupin.platform.management.client.api.query.pojo.result.Node;
import com.jlupin.platform.management.client.api.query.pojo.result.Result;
import com.jlupin.platform.management.client.api.query.pojo.wrapper.Field;
import com.jlupin.platform.management.client.api.update.impl.UpdateAPIImpl;
import com.jlupin.platform.management.client.api.update.interfaces.UpdateAPI;
import com.jlupin.platform.management.client.common.pojo.NodeConnectionData;
import com.jlupin.platform.management.client.common.pojo.exceptions.ExecutionException;
import com.jlupin.platform.management.client.common.pojo.exceptions.ExecutionInterruptedException;
import com.jlupin.platform.management.client.common.pojo.exceptions.MainServerNotConnectedException;
import com.jlupin.platform.management.client.remote.executor.cache.impl.InMemoryRemoteExecutorCacheImpl;
import com.jlupin.platform.management.client.remote.executor.cache.intefaces.RemoteExecutorCache;
import com.jlupin.platform.management.client.remote.executor.impl.RemoteExecutorWithCacheImpl;
import com.jlupin.platform.management.client.remote.executor.interfaces.RemoteExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
public class Example {
private static final Logger logger = LoggerFactory.getLogger(Example.class);
public void example() {
final SSLSocketFactory sslSocketFactory = JLupinSecurityUtil.getTwoWayAuthenticationSSLClientSocketFactory(
"ssl/client/clientX509Certificate.crt",
"ssl/client/clientPrivateKey.pk",
"ssl/server/serverX509Certificate.crt"
);
JLupinSSLCommunicationProtocolUtilSocketFactoryImpl.initialize(sslSocketFactory);
final JLupinMainServerTransmissionEntryPointCommandForwarder commandForwarder =
new JLupinMainServerTransmissionEntryPointCommandForwarder(
JLupinSSLCommunicationProtocolUtilSocketFactoryImpl.getInstance()
);
final RemoteExecutorCache cache = new InMemoryRemoteExecutorCacheImpl();
final RemoteExecutor remoteExecutor = new RemoteExecutorWithCacheImpl(
logger, logger::debug, "client-name", commandForwarder, cache
);
final QueryAPI queryAPI = new QueryAPIImpl(remoteExecutor);
final NodeConnectionData nodeConnectionData = new NodeConnectionData(); // defaults to 127.0.0.1:9096
final Query query = new Query();
query.getNode().getConfigurationAsMap();
final Result result;
try {
result = queryAPI.get(nodeConnectionData, query);
} catch (ExecutionException | MainServerNotConnectedException | ExecutionInterruptedException e) {
e.printStackTrace();
return;
}
final Node node;
final Field<Node> nodeField = result.getNode();
if (nodeField.getRequested()) {
if (nodeField.getLoaded()) {
node = nodeField.getValue();
} else {
final Throwable th = nodeField.getThrowable();
th.printStackTrace();
return;
}
} else {
System.out.println("Field was not requested.");
return;
}
if (node == null) {
System.out.println("Loaded node is null.");
return;
}
final Map configuration;
final Field<Map> configurationAsMapField = node.getConfigurationAsMap();
if (configurationAsMapField.getRequested()) {
if (configurationAsMapField.getLoaded()) {
configuration = configurationAsMapField.getValue();
} else {
final Throwable th = configurationAsMapField.getThrowable();
th.printStackTrace();
return;
}
} else {
System.out.println("Field configurationAsMap was not requested.");
return;
}
final Object mainServerMapAsObject = configuration.get("MAIN_SERVER");
if (!(mainServerMapAsObject instanceof Map)) {
System.out.println("Error with map key MAIN_SERVER.");
return;
}
final Map mainServerMap = (Map) mainServerMapAsObject;
mainServerMap.put("name", "NEW_NODE_NAME");
final UpdateAPI updateAPI = new UpdateAPIImpl(remoteExecutor);
try {
updateAPI.setMicroserviceConfiguration(nodeConnectionData, "nativeMicroservice", configuration);
} catch (ExecutionException | MainServerNotConnectedException | ExecutionInterruptedException e) {
e.printStackTrace();
return;
}
}
}
Change microservice configuration
Full example of changing microservice configuration.
import com.jlupin.entrypoint.command.forwarder.transmission.main.JLupinMainServerTransmissionEntryPointCommandForwarder;
import com.jlupin.impl.util.communication.factory.socket.impl.defaults.JLupinDefaultCommunicationProtocolUtilSocketFactoryImpl;
import com.jlupin.platform.management.client.api.query.impl.QueryAPIImpl;
import com.jlupin.platform.management.client.api.query.interfaces.QueryAPI;
import com.jlupin.platform.management.client.api.query.pojo.query.Query;
import com.jlupin.platform.management.client.api.query.pojo.result.Microservice;
import com.jlupin.platform.management.client.api.query.pojo.result.Microservices;
import com.jlupin.platform.management.client.api.query.pojo.result.Result;
import com.jlupin.platform.management.client.api.query.pojo.wrapper.Field;
import com.jlupin.platform.management.client.api.update.impl.UpdateAPIImpl;
import com.jlupin.platform.management.client.api.update.interfaces.UpdateAPI;
import com.jlupin.platform.management.client.common.pojo.NodeConnectionData;
import com.jlupin.platform.management.client.common.pojo.exceptions.ExecutionException;
import com.jlupin.platform.management.client.common.pojo.exceptions.ExecutionInterruptedException;
import com.jlupin.platform.management.client.common.pojo.exceptions.MainServerNotConnectedException;
import com.jlupin.platform.management.client.remote.executor.cache.impl.InMemoryRemoteExecutorCacheImpl;
import com.jlupin.platform.management.client.remote.executor.cache.intefaces.RemoteExecutorCache;
import com.jlupin.platform.management.client.remote.executor.impl.RemoteExecutorWithCacheImpl;
import com.jlupin.platform.management.client.remote.executor.interfaces.RemoteExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
public class Example {
private static final Logger logger = LoggerFactory.getLogger(Example.class);
public void example() {
final SSLSocketFactory sslSocketFactory = JLupinSecurityUtil.getTwoWayAuthenticationSSLClientSocketFactory(
"ssl/client/clientX509Certificate.crt",
"ssl/client/clientPrivateKey.pk",
"ssl/server/serverX509Certificate.crt"
);
JLupinSSLCommunicationProtocolUtilSocketFactoryImpl.initialize(sslSocketFactory);
final JLupinMainServerTransmissionEntryPointCommandForwarder commandForwarder =
new JLupinMainServerTransmissionEntryPointCommandForwarder(
JLupinSSLCommunicationProtocolUtilSocketFactoryImpl.getInstance()
);
final RemoteExecutorCache cache = new InMemoryRemoteExecutorCacheImpl();
final RemoteExecutor remoteExecutor = new RemoteExecutorWithCacheImpl(
logger, logger::debug, "client-name", commandForwarder, cache
);
final QueryAPI queryAPI = new QueryAPIImpl(remoteExecutor);
final NodeConnectionData nodeConnectionData = new NodeConnectionData(); // defaults to 127.0.0.1:9096
final Query query = new Query();
query.getMicroservices().addQueryFor("nativeMicroservice");
query.getMicroservices().getConfigurationAsMap();
final Result result;
try {
result = queryAPI.get(nodeConnectionData, query);
} catch (ExecutionException | MainServerNotConnectedException | ExecutionInterruptedException e) {
e.printStackTrace();
return;
}
final Microservices microservices;
final Field<Microservices> microservicesField = result.getMicroservices();
if (microservicesField.getRequested()) {
if (microservicesField.getLoaded()) {
microservices = microservicesField.getValue();
} else {
final Throwable th = microservicesField.getThrowable();
th.printStackTrace();
return;
}
} else {
System.out.println("Field was not requested.");
return;
}
if (microservices == null) {
System.out.println("Loaded microservices is null.");
return;
}
if (!microservices.getMicroservicesNames().contains("nativeMicroservice")) {
System.out.println("Data for nativeMicroservice not loaded.");
return;
}
final Microservice microservice = microservices.getMicroservice("nativeMicroservice");
final Map configuration;
final Field<Map> configurationAsMapField = microservice.getConfigurationAsMap();
if (configurationAsMapField.getRequested()) {
if (configurationAsMapField.getLoaded()) {
configuration = configurationAsMapField.getValue();
} else {
final Throwable th = configurationAsMapField.getThrowable();
th.printStackTrace();
return;
}
} else {
System.out.println("Field configurationAsMap was not requested.");
return;
}
final Object propertiesMapAsObject = configuration.get("PROPERTIES");
if (!(propertiesMapAsObject instanceof Map)) {
System.out.println("Error with map key PROPERTIES.");
return;
}
final Map propertiesMap = (Map) propertiesMapAsObject;
propertiesMap.put("jvmOptions1", "-Xms256 -Xmx512");
final UpdateAPI updateAPI = new UpdateAPIImpl(remoteExecutor);
try {
updateAPI.setMicroserviceConfiguration(nodeConnectionData, "nativeMicroservice", configuration);
} catch (ExecutionException | MainServerNotConnectedException | ExecutionInterruptedException e) {
e.printStackTrace();
return;
}
}
}