Piotr Kliczewski has uploaded a new change for review. Change subject: jsonrpc: Stomp changes in vdsbroker ......................................................................
jsonrpc: Stomp changes in vdsbroker Stomp reactor used in vdsbroker. Bug-Url: https://bugzilla.redhat.com/1081049 Change-Id: If78de6620ba6891543531ac8ddd633b67828a89c Signed-off-by: pkliczewski <[email protected]> --- M backend/manager/dependencies/pom.xml A backend/manager/dependencies/src/main/modules/org/apache/qpid-proton-j/main/module.xml M backend/manager/dependencies/src/main/modules/org/ovirt/vdsm-jsonrpc-java/main/module.xml M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcUtils.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java M backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIntegrationTest.java A backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/ProtonIntegrationTest.java M pom.xml 10 files changed, 139 insertions(+), 15 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/26783/1 diff --git a/backend/manager/dependencies/pom.xml b/backend/manager/dependencies/pom.xml index 8abaf59..ec896df 100644 --- a/backend/manager/dependencies/pom.xml +++ b/backend/manager/dependencies/pom.xml @@ -100,6 +100,12 @@ </dependency> <dependency> + <groupId>org.apache.qpid</groupId> + <artifactId>proton-j</artifactId> + <version>${proton-j.version}</version> + </dependency> + + <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${quartz.version}</version> @@ -334,6 +340,12 @@ </module> <module> + <groupId>org.apache.qpid</groupId> + <artifactId>proton-j</artifactId> + <moduleName>org.apache.qpid-proton-j</moduleName> + </module> + + <module> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <moduleName>org.quartz</moduleName> diff --git a/backend/manager/dependencies/src/main/modules/org/apache/qpid-proton-j/main/module.xml b/backend/manager/dependencies/src/main/modules/org/apache/qpid-proton-j/main/module.xml new file mode 100644 index 0000000..0cc20b2 --- /dev/null +++ b/backend/manager/dependencies/src/main/modules/org/apache/qpid-proton-j/main/module.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<module xmlns="urn:jboss:module:1.1" name="org.apache.qpid-proton-j"> + + <resources> + <resource-root path="proton-j.jar"/> + </resources> + + <!-- dependencies> + <module name="javax.api"/> + <module name="org.apache.commons.logging"/> + <module name="org.codehaus.jackson.jackson-mapper-asl"/> + <module name="org.codehaus.jackson.jackson-core-asl"/> + </dependencies --> + +</module> \ No newline at end of file diff --git a/backend/manager/dependencies/src/main/modules/org/ovirt/vdsm-jsonrpc-java/main/module.xml b/backend/manager/dependencies/src/main/modules/org/ovirt/vdsm-jsonrpc-java/main/module.xml index bd7ab25..e20babb 100644 --- a/backend/manager/dependencies/src/main/modules/org/ovirt/vdsm-jsonrpc-java/main/module.xml +++ b/backend/manager/dependencies/src/main/modules/org/ovirt/vdsm-jsonrpc-java/main/module.xml @@ -11,6 +11,7 @@ <module name="org.apache.commons.logging"/> <module name="org.codehaus.jackson.jackson-mapper-asl"/> <module name="org.codehaus.jackson.jackson-core-asl"/> + <module name="org.apache.qpid-proton-j" /> </dependencies> </module> diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java index 8af43d8..c79ebb7 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java @@ -197,8 +197,8 @@ int clientRetries = Config.<Integer> getValue(ConfigValues.vdsRetries); if (_vds.getPort() == JSONRPC_PORT) { - _vdsProxy = new JsonRpcVdsServer(JsonRpcUtils.createClient(_vds.getHostName(), - _vds.getPort(), connectionTimeOut, + _vdsProxy = new JsonRpcVdsServer(JsonRpcUtils.createStompClient(_vds.getHostName(), + /*_vds.getPort()*/ 61613, connectionTimeOut, clientTimeOut, clientRetries, Config.<Boolean> getValue(ConfigValues.EncryptHostCommunication))); } else { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java index 7ef44e6..5963379 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java @@ -547,8 +547,8 @@ int clientRetries = Config.<Integer> getValue(ConfigValues.vdsRetries); if (getmIrsPort() == JSONRPC_PORT) { - privatemIrsProxy = new JsonRpcIIrsServer(JsonRpcUtils.createClient(host, - getmIrsPort(), connectionTimeOut, + privatemIrsProxy = new JsonRpcIIrsServer(JsonRpcUtils.createStompClient(host, + /*getmIrsPort()*/ 61613, connectionTimeOut, clientTimeOut, clientRetries, Config.<Boolean> getValue(ConfigValues.EncryptHostCommunication))); } else { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcUtils.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcUtils.java index 9e47e82..b82ea49 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcUtils.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcUtils.java @@ -11,27 +11,54 @@ import org.ovirt.vdsm.jsonrpc.client.reactors.Reactor; import org.ovirt.vdsm.jsonrpc.client.reactors.ReactorClient; import org.ovirt.vdsm.jsonrpc.client.reactors.ReactorFactory; +import org.ovirt.vdsm.jsonrpc.client.reactors.ReactorType; import org.ovirt.vdsm.jsonrpc.client.utils.retry.RetryPolicy; public class JsonRpcUtils { private static Log log = LogFactory.getLog(JsonRpcUtils.class); public static final int JSONRPC_PORT = 4044; + public static final int PROTON_PORT = 5672; - public static JsonRpcClient createClient(String hostName, int port, int connectionTimeOut, - int clientTimeOut, int connectionRetry, boolean isSecure) { + public static JsonRpcClient createTcpClient(String hostname, int port, int connectionTimeout, + int clientTimeout, int connectionRetry, boolean isSecure) { + return createClient(hostname, port, connectionTimeout, clientTimeout, connectionRetry, isSecure, ReactorType.TCP); + } + + private static ManagerProvider getManagerProvider(boolean isSecure) { ManagerProvider provider = null; if (isSecure) { provider = new EngineManagerProvider(); } + return provider; + } + + private static JsonRpcClient getJsonClient(Reactor reactor, String hostName, int port, int connectionTimeOut, + int clientTimeOut, int connectionRetry) throws ClientConnectionException { + final ReactorClient client = reactor.createClient(hostName, port); + client.setRetryPolicy(new RetryPolicy(connectionTimeOut, connectionRetry, IOException.class)); + ResponseWorker worker = ReactorFactory.getWorker(); + JsonRpcClient jsonClient = worker.register(client); + jsonClient.setRetryPolicy(new RetryPolicy(clientTimeOut, connectionRetry, IOException.class)); + return jsonClient; + } + + public static JsonRpcClient createProtonClient(String hostname, int port, int connectionTimeout, + int clientTimeout, int connectionRetry, boolean isSecure) { + return createClient(hostname, port, connectionTimeout, clientTimeout, connectionRetry, isSecure, ReactorType.PROTON); + } + + public static JsonRpcClient createStompClient(String hostname, int port, int connectionTimeout, + int clientTimeout, int connectionRetry, boolean isSecure) { + return createClient(hostname, port, connectionTimeout, clientTimeout, connectionRetry, isSecure, ReactorType.STOMP); + } + + private static JsonRpcClient createClient(String hostname, int port, int connectionTimeout, + int clientTimeout, int connectionRetry, boolean isSecure, ReactorType type) { + final ManagerProvider provider = getManagerProvider(isSecure); try { - final Reactor reactor = ReactorFactory.getReactor(provider); - final ReactorClient client = reactor.createClient(hostName, port); - client.setRetryPolicy(new RetryPolicy(connectionTimeOut, connectionRetry, IOException.class)); - ResponseWorker worker = ReactorFactory.getWorker(); - JsonRpcClient jsonClient = worker.register(client); - jsonClient.setRetryPolicy(new RetryPolicy(clientTimeOut, connectionRetry, IOException.class)); - return jsonClient; + final Reactor reactor = ReactorFactory.getReactor(provider, type); + return getJsonClient(reactor, hostname, port, connectionTimeout, clientTimeout, connectionRetry); } catch (ClientConnectionException e) { log.error("Exception occured during building ssl context or obtaining selector", e); throw new IllegalStateException(e); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java index b04c978..3f98c05 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java @@ -1385,4 +1385,15 @@ new FutureMap(this.client, request); return new StatusOnlyReturnForXmlRpc(response); } + + @Override + public StatusOnlyReturnForXmlRpc setHaMaintenanceMode(String mode, boolean enabled) { + JsonRpcRequest request = + new RequestBuilder("Host.setHaMaintenanceMode").withParameter("mode", mode) + .withParameter("enabled", enabled) + .build(); + Map<String, Object> response = + new FutureMap(this.client, request); + return new StatusOnlyReturnForXmlRpc(response); + } } diff --git a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIntegrationTest.java b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIntegrationTest.java index 7e6813c..edb76e6 100644 --- a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIntegrationTest.java +++ b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIntegrationTest.java @@ -21,7 +21,7 @@ @Test public void testGetVdsCapabilities() throws InterruptedException, ExecutionException, ClientConnectionException { - JsonRpcClient client = JsonRpcUtils.createClient(HOST_ADDRESS, PORT, TIMEOUT, 0, TIMEOUT, true); + JsonRpcClient client = JsonRpcUtils.createStompClient(HOST_ADDRESS, PORT, TIMEOUT, 0, TIMEOUT, true); final JsonRpcRequest request = new RequestBuilder("Host.getCapabilities").build(); Map<String, Object> map = new FutureMap(client, request); assertTrue(map.isEmpty()); diff --git a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/ProtonIntegrationTest.java b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/ProtonIntegrationTest.java new file mode 100644 index 0000000..261714c --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/jsonrpc/ProtonIntegrationTest.java @@ -0,0 +1,55 @@ +package org.ovirt.engine.core.vdsbroker.jsonrpc; + +import static junit.framework.Assert.assertFalse; + +import java.util.Map; +import java.util.concurrent.ExecutionException; + +import org.junit.Ignore; +import org.junit.Test; +import org.ovirt.vdsm.jsonrpc.client.ClientConnectionException; +import org.ovirt.vdsm.jsonrpc.client.JsonRpcClient; +import org.ovirt.vdsm.jsonrpc.client.JsonRpcRequest; +import org.ovirt.vdsm.jsonrpc.client.RequestBuilder; + +@Ignore +public class ProtonIntegrationTest { + private final static String HOST_ADDRESS = "192.168.1.10"; + private final static int PORT = 5672; + private final static int TIMEOUT = 5000; + + @Test + public void testGetVdsCapabilities() throws InterruptedException, ExecutionException, ClientConnectionException { + JsonRpcClient client = JsonRpcUtils.createProtonClient(HOST_ADDRESS, PORT, TIMEOUT, 0, TIMEOUT, false); + final JsonRpcRequest request = new RequestBuilder("Host.getCapabilities").build(); + Map<String, Object> map = new FutureMap(client, request); + assertFalse(map.isEmpty()); + + final JsonRpcRequest hwInforequest = new RequestBuilder("Host.getHardwareInfo").build(); + Map<String, Object> hwInfoMap = new FutureMap(client, hwInforequest); + assertFalse(hwInfoMap.isEmpty()); + + client.close(); + } + + /* + * For ssl this test requires ENGINE_DEFAULTS and ENGINE_VARS environment variables to be set. + * + * ENGINE_DEFAULTS = $HOME/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt-engine.conf + * ENGINE_VARS = $HOME/ovirt-engine/etc/ovirt-engine/engine.conf + */ + @Test + public void testSecureGetVdsCapabilities() throws InterruptedException, ExecutionException, ClientConnectionException { + JsonRpcClient client = JsonRpcUtils.createProtonClient(HOST_ADDRESS, PORT, TIMEOUT, 0, TIMEOUT, true); + + final JsonRpcRequest capsRequest = new RequestBuilder("Host.getCapabilities").build(); + Map<String, Object> capsMap = new FutureMap(client, capsRequest); + assertFalse(capsMap.isEmpty()); + + final JsonRpcRequest hwInforequest = new RequestBuilder("Host.getHardwareInfo").build(); + Map<String, Object> hwInfoMap = new FutureMap(client, hwInforequest); + assertFalse(hwInfoMap.isEmpty()); + + client.close(); + } +} diff --git a/pom.xml b/pom.xml index 20e1842..32c8e78 100644 --- a/pom.xml +++ b/pom.xml @@ -71,9 +71,11 @@ <mina-core.version>2.0.1</mina-core.version> <sshd-core.version>0.7.0</sshd-core.version> <otopi.version>1.1.0</otopi.version> - <ovirt-host-deploy.version>1.1.0</ovirt-host-deploy.version> <org.ovirt.engine.api.ovirt-engine-extensions-api.version>0.0.0-SNAPSHOT</org.ovirt.engine.api.ovirt-engine-extensions-api.version> + <ovirt-host-deploy.version>1.2.0-master</ovirt-host-deploy.version> <vdsm-jsonrpc-java.version>1.0.0-master</vdsm-jsonrpc-java.version> + <!-- Update version --> + <proton-j.version>1.0-SNAPSHOT</proton-j.version> <slf4j.version>1.7.5</slf4j.version> <slf4j-jdk14.version>1.5.6</slf4j-jdk14.version> <gwt.version>2.5.1</gwt.version> -- To view, visit http://gerrit.ovirt.org/26783 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If78de6620ba6891543531ac8ddd633b67828a89c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Piotr Kliczewski <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
