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;
        }
    }
}