Arik Hadas has uploaded a new change for review.

Change subject: core: add query for getting vms from external server
......................................................................

core: add query for getting vms from external server

Change-Id: I870043d8c392e6cd60d133a8701fa756b6b6a079
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsFromExternalServerQuery.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsFromExternalServerQueryParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmsFromExternalServerParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmsFromExternalServerVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
10 files changed, 207 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/33052/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsFromExternalServerQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsFromExternalServerQuery.java
new file mode 100644
index 0000000..2bda850
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsFromExternalServerQuery.java
@@ -0,0 +1,61 @@
+package org.ovirt.engine.core.bll;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.bll.context.EngineContext;
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.queries.GetVmsFromExternalServerQueryParameters;
+import 
org.ovirt.engine.core.common.vdscommands.GetVmsFromExternalServerParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsProperties;
+
+public class GetVmsFromExternalServerQuery<T extends 
GetVmsFromExternalServerQueryParameters> extends QueriesCommandBase<T> {
+
+    public GetVmsFromExternalServerQuery(T parameters) {
+        this(parameters, null);
+    }
+
+    public GetVmsFromExternalServerQuery(T parameters, EngineContext 
engineContext) {
+        super(parameters, engineContext);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        VDSReturnValue returnValue = executeVerb();
+        Map<String, Object>[] ob = (Map<String, Object>[]) 
returnValue.getReturnValue();
+        List<VM> vms = new ArrayList<>(ob.length);
+        for (Map<String, Object> map : ob) {
+            VM vm = new VM();
+            vm.setName((String) map.get(VdsProperties.vm_name));
+            vms.add(vm);
+        }
+        setReturnValue(vms);
+    }
+
+    private VDSReturnValue executeVerb() {
+        try {
+            return Backend.getInstance().getResourceManager()
+                    .RunVdsCommand(VDSCommandType.GetVmsFromExternalServer, 
buildGetRemoteVmsInfoParameters());
+        } catch (RuntimeException e) {
+/*            AuditLogableBase logable = new AuditLogableBase();
+            logable.addCustomValue("StorageDomainName", 
storage.getStorageName());
+            AuditLogDirector.log(logable, 
AuditLogType.IMPORTEXPORT_GET_VMS_INFO_FAILED);*/
+            throw e;
+        }
+    }
+
+    private GetVmsFromExternalServerParameters 
buildGetRemoteVmsInfoParameters() {
+        return new GetVmsFromExternalServerParameters(selectProxyHost(), 
getParameters().getUrl(),
+                getParameters().getUsername(), getParameters().getPassword());
+    }
+
+    private Guid selectProxyHost() {
+//        Guid proxy = getParameters().getProxyHost();
+//        return proxy != null ? proxy : null;
+        return 
Guid.createGuidFromString("acf3fc44-75c2-4c23-af5c-ed811acf3790");
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsFromExternalServerQueryParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsFromExternalServerQueryParameters.java
new file mode 100644
index 0000000..bc5d41e
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsFromExternalServerQueryParameters.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.core.common.queries;
+
+
+public class GetVmsFromExternalServerQueryParameters extends 
VdcQueryParametersBase {
+    private static final long serialVersionUID = 5436719744430725756L;
+
+    private String url;
+    private String username;
+    private String password;
+
+    public GetVmsFromExternalServerQueryParameters() {
+    }
+
+    public GetVmsFromExternalServerQueryParameters(String url, String 
username, String password) {
+        this.url = url;
+        this.username = username;
+        this.password = password;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 3a26d5d..825b991 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -29,6 +29,7 @@
     GetVmsInit(VdcQueryAuthType.User),
     GetVmNextRunConfiguration(VdcQueryAuthType.User),
     GetVmUpdatesOnNextRunExists(VdcQueryAuthType.User),
+    GetVmsFromExternalServer,
 
     // Vds queries
     GetVdsByVdsId,
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmsFromExternalServerParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmsFromExternalServerParameters.java
new file mode 100644
index 0000000..7097e8b
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmsFromExternalServerParameters.java
@@ -0,0 +1,33 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVmsFromExternalServerParameters extends 
VdsIdVDSCommandParametersBase {
+
+    private String url;
+    private String username;
+    private String password;
+
+    public GetVmsFromExternalServerParameters() {
+    }
+
+    public GetVmsFromExternalServerParameters(Guid vdsId, String url, String 
username, String password) {
+        super(vdsId);
+
+        this.url = url;
+        this.username = username;
+        this.password = password;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 6a055cc..0bb373c 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -158,6 +158,7 @@
     
GetGlusterVolumeRemoveBricksStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     SetNumberOfCpus("org.ovirt.engine.core.vdsbroker"),
     UpdateVmPolicy("org.ovirt.engine.core.vdsbroker"),
+    GetVmsFromExternalServer("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     List("org.ovirt.engine.core.vdsbroker.vdsbroker"),           // get a list 
of VMs with status only
     GetVmStats("org.ovirt.engine.core.vdsbroker.vdsbroker"),     // get a VM 
with full data and statistics
     GetAllVmStats("org.ovirt.engine.core.vdsbroker.vdsbroker");  // get a list 
of VMs with full data and statistics
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 749ce7b..7d5e003 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
@@ -1478,4 +1478,20 @@
                 new FutureMap(this.client, request);
         return new StatusOnlyReturnForXmlRpc(response);
     }
+
+    @Override
+    public VMListReturnForXmlRpc getExternalVmList(String url, String 
username, String password) {
+        JsonRpcRequest request =
+                new RequestBuilder("Host.getExternalVMsList")
+                        .withParameter("url", url)
+                        .withParameter("username", username)
+                        .withParameter("password", password)
+                        .build();
+        Map<String, Object> response =
+                new FutureMap(this.client, request).withResponseKey("vmList")
+                        .withResponseType(Object[].class)
+                        .withSubTypeClazz(new HashMap<String, 
Object>().getClass())
+                        .withSubtypeKey("vmId");
+        return new VMListReturnForXmlRpc(response);
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmsFromExternalServerVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmsFromExternalServerVDSCommand.java
new file mode 100644
index 0000000..46dbe75
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmsFromExternalServerVDSCommand.java
@@ -0,0 +1,37 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.Map;
+
+import 
org.ovirt.engine.core.common.vdscommands.GetVmsFromExternalServerParameters;
+
+public class GetVmsFromExternalServerVDSCommand<T extends 
GetVmsFromExternalServerParameters> extends VdsBrokerCommand<T> {
+    private VMListReturnForXmlRpc mVmListReturn;
+
+    public GetVmsFromExternalServerVDSCommand(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        mVmListReturn = getBroker().getExternalVmList(getParameters().getUrl(),
+                getParameters().getUsername(), getParameters().getPassword());
+        proceedProxyReturnValue();
+        Map<String, Object>[] struct = mVmListReturn.mVmList;
+        setReturnValue(struct);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return mVmListReturn.mStatus;
+    }
+
+    @Override
+    protected Object getReturnValueFromBroker() {
+        return mVmListReturn;
+    }
+
+    @Override
+    protected boolean getIsPrintReturnValue() {
+        return false;
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 559ca12..974f67f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -310,4 +310,6 @@
     StatusOnlyReturnForXmlRpc setNumberOfCpus(String vmId, String 
numberOfCpus);
 
     StatusOnlyReturnForXmlRpc updateVmPolicy(Map info);
+
+    VMListReturnForXmlRpc getExternalVmList(String url, String username, 
String password);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index c937834..4f18fbb 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -294,4 +294,6 @@
     public Map<String, Object> setNumberOfCpus(String vmId, String 
numberOfCpus);
 
     public Map<String, Object> updateVmPolicy(Map info);
+
+    public Map<String, Object> getExternalVMList(String url, String username, 
String password);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index 5019176..1e35adf 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -1438,4 +1438,15 @@
     public void close() {
         XmlRpcUtils.shutDownConnection(this.httpClient);
     }
+
+    @Override
+    public VMListReturnForXmlRpc getExternalVmList(String url, String 
username, String password) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = 
vdsServer.getExternalVMList(url, username, password);
+            VMListReturnForXmlRpc wrapper = new 
VMListReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/33052
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I870043d8c392e6cd60d133a8701fa756b6b6a079
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to