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