Shireesh Anjal has uploaded a new change for review. Change subject: gluster: VDS command to fetch gluster services ......................................................................
gluster: VDS command to fetch gluster services - VDS Command - VDS Parameters class - XmlRpc return type - Entries in VDSCommandType, IVdsServer, VdsServerConnector, VdsServerWrapper - New error code in VdcBllErrors and VdsmErrors - New enum for service statuses (GlusterServiceStatus) - Refactored ServiceInfo to use GlusterServiceStatus instead of GlusterStats Change-Id: I0c59a6f153fdcb584de206ca389a2ef7ce30fd80 Signed-off-by: Shireesh Anjal <[email protected]> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterServiceStatus.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/ServiceInfo.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterServicesListVDSParameters.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesListVDSCommand.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesReturnForXmlRpc.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.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 M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml 15 files changed, 175 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/14129/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterServiceStatus.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterServiceStatus.java new file mode 100644 index 0000000..b944f38 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterServiceStatus.java @@ -0,0 +1,13 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +/** + * Enum for status of gluster related services + */ +public enum GlusterServiceStatus { + RUNNING, + STOPPED, + FAILED, + ERROR, + NOT_INSTALLED, + ; +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/ServiceInfo.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/ServiceInfo.java index 3096fae..7a8e483 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/ServiceInfo.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/ServiceInfo.java @@ -2,6 +2,8 @@ import java.io.Serializable; +import org.ovirt.engine.core.compat.Guid; + /** * The Volume status service info. * @@ -13,10 +15,13 @@ private static final long serialVersionUID = 108478798053613345L; private ServiceType serviceType; + private String serviceName; + private Guid serverId; private String hostName; private int port; private int pid; - private GlusterStatus status; + private GlusterServiceStatus status; + private String message; public ServiceType getServiceType() { return serviceType; @@ -50,11 +55,35 @@ this.pid = pid; } - public GlusterStatus getStatus() { + public GlusterServiceStatus getStatus() { return status; } - public void setStatus(GlusterStatus status) { + public void setStatus(GlusterServiceStatus status) { this.status = status; } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Guid getServerId() { + return serverId; + } + + public void setServerId(Guid hostId) { + this.serverId = hostId; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java index d454170..781f913 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/gluster/GlusterConstants.java @@ -1,6 +1,7 @@ package org.ovirt.engine.core.common.constants.gluster; public class GlusterConstants { + public static final int CODE_SUCCESS = 0; public static final String ON = "on"; public static final String OFF = "off"; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java index a07bbca..3bf377d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java @@ -367,6 +367,7 @@ GlusterAddHostFailed(4404), RemoveGlusterServerFailed(4406), GlusterPeerListFailed(4407), + GlusterServicesListFailed(4409), GlusterHookFailed(4500), GlusterHookEnableFailed(4501), GlusterHookDisableFailed(4502), 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 efcfbe2..9b61ddb 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 @@ -139,6 +139,7 @@ GetGlusterVolumeProfileInfo("org.ovirt.engine.core.vdsbroker.gluster"), EnableGlusterHook("org.ovirt.engine.core.vdsbroker.gluster"), DisableGlusterHook("org.ovirt.engine.core.vdsbroker.gluster"), + GlusterServicesList("org.ovirt.engine.core.vdsbroker.gluster"), ; String packageName; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterServicesListVDSParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterServicesListVDSParameters.java new file mode 100644 index 0000000..e66b4f5 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterServicesListVDSParameters.java @@ -0,0 +1,22 @@ +package org.ovirt.engine.core.common.vdscommands.gluster; + +import java.util.List; + +import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase; +import org.ovirt.engine.core.compat.Guid; + +/** + * VDS parameters class with Server ID and service names as parameters, Used by the "Gluster Services List" command. + */ +public class GlusterServicesListVDSParameters extends VdsIdVDSCommandParametersBase { + private List<String> serviceNames; + + public GlusterServicesListVDSParameters(Guid serverId, List<String> serviceNames) { + super(serverId); + this.serviceNames = serviceNames; + } + + public List<String> getServiceNames() { + return serviceNames; + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java index 7b502ff..5465b50 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java @@ -49,6 +49,7 @@ case GlusterHookAlreadyEnabled: case GlusterHookAlreadyDisabled: case GlusterHookNotFound: + case GlusterServicesListFailed: // Capture error from gluster command and record failure getVDSReturnValue().setVdsError(new VDSError(returnStatus, getReturnStatus().mMessage)); getVDSReturnValue().setSucceeded(false); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesListVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesListVDSCommand.java new file mode 100644 index 0000000..7e264ae --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesListVDSCommand.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.core.vdsbroker.gluster; + +import org.ovirt.engine.core.common.vdscommands.gluster.GlusterServicesListVDSParameters; +import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc; + +/** + * VDS command to fetch list of services with their status + * @param <P> The parameters class to be used with this command + */ +public class GlusterServicesListVDSCommand<P extends GlusterServicesListVDSParameters> extends AbstractGlusterBrokerCommand<P> { + private GlusterServicesReturnForXmlRpc glusterServices; + + public GlusterServicesListVDSCommand(P parameters) { + super(parameters); + } + + @Override + protected void ExecuteVdsBrokerCommand() { + glusterServices = getBroker().glusterServicesList(getParameters().getServiceNames().toArray(new String[0])); + ProceedProxyReturnValue(); + if (getVDSReturnValue().getSucceeded()) { + setReturnValue(glusterServices.getServices()); + } + } + + @Override + protected StatusForXmlRpc getReturnStatus() { + return glusterServices.mStatus; + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesReturnForXmlRpc.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesReturnForXmlRpc.java new file mode 100644 index 0000000..2a789a1 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterServicesReturnForXmlRpc.java @@ -0,0 +1,51 @@ +package org.ovirt.engine.core.vdsbroker.gluster; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterServiceStatus; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceInfo; +import org.ovirt.engine.core.common.constants.gluster.GlusterConstants; +import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc; + +/** + * The XmlRpc return type to receive a list of gluster related services. + */ +public class GlusterServicesReturnForXmlRpc extends StatusReturnForXmlRpc { + private static final String SERVICES = "services"; + private static final String NAME = "name"; + private static final String PID = "pid"; + private static final String STATUS = "status"; + private static final String MESSAGE = "message"; + + private List<ServiceInfo> services; + + @SuppressWarnings("unchecked") + public GlusterServicesReturnForXmlRpc(Map<String, Object> innerMap) { + super(innerMap); + + if (mStatus.mCode != GlusterConstants.CODE_SUCCESS) { + return; + } + + services = new ArrayList<ServiceInfo>(); + for (Object service : (Object[]) innerMap.get(SERVICES)) { + services.add(getService((Map<String, Object>) service)); + } + } + + private ServiceInfo getService(Map<String, Object> serviceMap) { + ServiceInfo service = new ServiceInfo(); + service.setServiceName((String) serviceMap.get(NAME)); + service.setPid(Integer.parseInt((String) serviceMap.get(PID))); + service.setStatus(GlusterServiceStatus.valueOf((String) serviceMap.get(STATUS))); + service.setMessage((String) serviceMap.get(MESSAGE)); + + return service; + } + + public List<ServiceInfo> getServices() { + return services; + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java index 0308b5e..97c5a2b 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java @@ -8,6 +8,7 @@ import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterServiceStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; @@ -119,7 +120,7 @@ if (volumeServiceInfo.containsKey(STATUS)) { String brickStatus = (String) volumeServiceInfo.get(STATUS); if (brickStatus.toUpperCase().equals(ONLINE)) { - serviceInfo.setStatus(GlusterStatus.UP); + serviceInfo.setStatus(GlusterServiceStatus.RUNNING); // parse the port and pid only if the brick is online. if (volumeServiceInfo.containsKey(PORT)) { serviceInfo.setPort(Integer.parseInt((String) volumeServiceInfo.get(PORT))); @@ -129,7 +130,7 @@ serviceInfo.setPid(Integer.parseInt((String) volumeServiceInfo.get(PID))); } } else { - serviceInfo.setStatus(GlusterStatus.DOWN); + serviceInfo.setStatus(GlusterServiceStatus.STOPPED); } } return serviceInfo; 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 4d197f4..5eafdc7 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 @@ -9,6 +9,7 @@ import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc; +import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc; @@ -240,4 +241,6 @@ StatusOnlyReturnForXmlRpc glusterHookEnable(String glusterCommand, String stage, String hookName); StatusOnlyReturnForXmlRpc glusterHookDisable(String glusterCommand, String stage, String hookName); + + GlusterServicesReturnForXmlRpc glusterServicesList(String[] serviceNames); } 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 3c9663e..57ca888 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 @@ -230,4 +230,6 @@ public Map<String, Object> glusterHookEnable(String glusterCommand, String level, String hookName); public Map<String, Object> glusterHookDisable(String glusterCommand, String level, String hookName); + + public Map<String, Object> glusterServicesGet(String[] serviceNames); } 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 2c50d94..b6bfb1e 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 @@ -11,6 +11,7 @@ import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc; +import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc; import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc; @@ -1178,4 +1179,15 @@ } } + @Override + public GlusterServicesReturnForXmlRpc glusterServicesList(String[] serviceNames) { + try { + + Map<String, Object> xmlRpcReturnValue = vdsServer.glusterServicesGet(serviceNames); + GlusterServicesReturnForXmlRpc wrapper = new GlusterServicesReturnForXmlRpc(xmlRpcReturnValue); + return wrapper; + } catch (UndeclaredThrowableException ute) { + throw new XmlRpcRunTimeException(ute); + } + } } diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java index 1a72274..7e4fa9a 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java @@ -741,4 +741,6 @@ @DefaultStringValue("Gluster hook not found") String GlusterHookNotFound(); + @DefaultStringValue("Failed to fetch statuses of services.") + String GlusterServicesListFailed(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index ae829de..61a3d12 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -289,6 +289,7 @@ <include name="common/businessentities/gluster/GlusterVolumeEntity.java" /> <include name="common/businessentities/gluster/GlusterVolumeType.java" /> <include name="common/businessentities/gluster/GlusterStatus.java" /> + <include name="common/businessentities/gluster/GlusterServiceStatus.java" /> <include name="common/businessentities/gluster/TransportType.java" /> <include name="common/businessentities/gluster/GlusterBrickEntity.java"/> <include name="common/businessentities/gluster/GlusterVolumeOptionEntity.java"/> -- To view, visit http://gerrit.ovirt.org/14129 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0c59a6f153fdcb584de206ca389a2ef7ce30fd80 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shireesh Anjal <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
