Hello Fred Rolland,
I'd like you to do a code review. Please visit
https://gerrit.ovirt.org/39318
to review the following change.
Change subject: engine: Add support for Refresh LUNs size
......................................................................
engine: Add support for Refresh LUNs size
Add command RefreshLunsSizeCommand to support resize of LUNs.
input : a list of LUN GUIDs
output : status of operation
action : - Send to all hosts in Data Center a "refresh device"
command.
- If all hosts return the same size,
send to SPM a "resize PV" command.
- Retrieve SD info and update DB with new sizes.
- Send to all other hosts in Data Center
a "refresh PV" command
Add support to refresh LUNs via REST API of update Storage Domain.
An additional boolean field named "refresh_size" will be added to the
"logical_unit".
Still missing:
- Additional VDSM verbs support - resizePV, refreshPV
- Locking and compensation
- Version support validation
- Error Handling
Change-Id: I6c5c6d59087736466ee5e7eb0c77ee9282199c62
Relates-To: https://bugzilla.redhat.com/609689
Signed-off-by: Fred Rolland <[email protected]>
---
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RefreshLunsSizeCommand.java
M
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
A
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/RefreshDeviceSizeVDSCommandParameters.java
M
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M
backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
M
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
M
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
M
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
A
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeMapReturnForXmlRpc.java
A
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeVDSCommand.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
15 files changed, 265 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/18/39318/1
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RefreshLunsSizeCommand.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RefreshLunsSizeCommand.java
new file mode 100644
index 0000000..8bfbd9c
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RefreshLunsSizeCommand.java
@@ -0,0 +1,121 @@
+package org.ovirt.engine.core.bll.storage;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.context.CompensationContext;
+import org.ovirt.engine.core.common.action.ExtendSANStorageDomainParameters;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VdsSpmStatus;
+import org.ovirt.engine.core.common.errors.VdcBLLException;
+import
org.ovirt.engine.core.common.vdscommands.GetStorageDomainStatsVDSCommandParameters;
+import
org.ovirt.engine.core.common.vdscommands.RefreshDeviceSizeVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.utils.linq.LinqUtils;
+import org.ovirt.engine.core.utils.linq.Predicate;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RefreshLunsSizeCommand<T extends
ExtendSANStorageDomainParameters> extends
+ StorageDomainCommandBase<T> {
+
+ private static final Logger log =
LoggerFactory.getLogger(RefreshLunsSizeCommand.class);
+
+ public RefreshLunsSizeCommand(T parameters, CommandContext commandContext)
{
+ super(parameters, commandContext);
+ }
+
+ public RefreshLunsSizeCommand(T parameters) {
+ this(parameters, null);
+ }
+
+ @Override
+ protected void executeCommand() {
+ // Call Refresh Device on all Hosts
+ Map<String, Map<Long, List<VDS>>> lunToSize =
refreshLunSizeAllVds(getParameters().getLunIds());
+
+ for (Map.Entry<String, Map<Long, List<VDS>>> entry :
lunToSize.entrySet()) {
+ if (entry.getValue().size() != 1) {
+ log.error("Failed to refresh device " + entry.getKey() + " Not
all VDS are seeing the same size");
+ }
+ }
+ // Call PV resize on SPM
+
+ // Update storage domain size
+ updateStorageDomainData();
+
+ // Call PV refresh on all Hosts
+
+ setSucceeded(true);
+ }
+
+ private Map<String, Map<Long, List<VDS>>>
refreshLunSizeAllVds(List<String> luns) {
+ Map<String, Map<Long, List<VDS>>> lunToSize = new HashMap<>();
+ for (String lun : luns) {
+ Map<Long, List<VDS>> lunSizeToVDs = new HashMap<>();
+ lunToSize.put(lun, lunSizeToVDs);
+
+ for (VDS vds : getAllRunningVdssInPool()) {
+ Long size = refreshLun(vds, lun); // catch exception for each
lun ? Fail by lun or all operation ?
+ List<VDS> vdsForSize = lunSizeToVDs.get(size);
+ if (vdsForSize == null) {
+ vdsForSize = new ArrayList<>();
+ lunSizeToVDs.put(size, vdsForSize);
+ }
+ vdsForSize.add(vds);
+ }
+ }
+ return lunToSize;
+ }
+
+ private Long refreshLun(VDS vds, String lunId) {
+ try {
+ return (Long) runVdsCommand(
+ VDSCommandType.RefreshDeviceSize,
+ new RefreshDeviceSizeVDSCommandParameters(vds.getId(),
+ lunId)).getReturnValue();
+ } catch (VdcBLLException e) {
+ log.error("Failed to refresh device " + lunId, e);
+ throw e;
+ }
+ }
+
+ private void updateStorageDomainData() {
+ VDSReturnValue returnValueUpdatedStorageDomain = getStatsForDomain();
+ if (returnValueUpdatedStorageDomain.getSucceeded()) {
+ StorageDomain updatedStorageDomain =
+ (StorageDomain)
returnValueUpdatedStorageDomain.getReturnValue();
+ updateStorageDomain(updatedStorageDomain);
+ }
+ }
+
+ protected VDSReturnValue getStatsForDomain() {
+ VDS spmVds =
LinqUtils.first(LinqUtils.filter(getAllRunningVdssInPool(), new
Predicate<VDS>() {
+ @Override
+ public boolean eval(VDS vds) {
+ return vds.getSpmStatus() == VdsSpmStatus.SPM;
+ }
+ }));
+ return runVdsCommand(VDSCommandType.GetStorageDomainStats,
+ new GetStorageDomainStatsVDSCommandParameters(spmVds.getId(),
getParameters().getStorageDomainId()));
+ }
+
+ protected void updateStorageDomain(final StorageDomain
storageDomainToUpdate) {
+ executeInNewTransaction(new TransactionMethod<Void>() {
+ @Override
+ public Void runInTransaction() {
+ CompensationContext context = getCompensationContext();
+
context.snapshotEntity(storageDomainToUpdate.getStorageDynamicData());
+
getDbFacade().getStorageDomainDynamicDao().update(storageDomainToUpdate.getStorageDynamicData());
+ getCompensationContext().stateChanged();
+ return null;
+ }
+ });
+ }
+}
diff --git
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index c524d69..1e95207 100644
---
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -244,6 +244,7 @@
DeactivateStorageDomain(909, ActionGroup.MANIPULATE_STORAGE_DOMAIN,
QuotaDependency.NONE),
AddSANStorageDomain(910, ActionGroup.CREATE_STORAGE_DOMAIN,
QuotaDependency.NONE),
ExtendSANStorageDomain(911, ActionGroup.EDIT_STORAGE_DOMAIN_CONFIGURATION,
QuotaDependency.NONE),
+ RefreshLunsSize(917, ActionGroup.EDIT_STORAGE_DOMAIN_CONFIGURATION,
QuotaDependency.NONE),
ReconstructMasterDomain(913, QuotaDependency.NONE),
DeactivateStorageDomainWithOvfUpdate(914,
ActionGroup.MANIPULATE_STORAGE_DOMAIN, QuotaDependency.NONE),
RecoveryStoragePool(915, ActionGroup.CREATE_STORAGE_POOL,
QuotaDependency.NONE),
diff --git
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/RefreshDeviceSizeVDSCommandParameters.java
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/RefreshDeviceSizeVDSCommandParameters.java
new file mode 100644
index 0000000..9750c73
--- /dev/null
+++
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/RefreshDeviceSizeVDSCommandParameters.java
@@ -0,0 +1,29 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class RefreshDeviceSizeVDSCommandParameters extends
VdsIdVDSCommandParametersBase {
+
+ private String deviceId;
+
+ public RefreshDeviceSizeVDSCommandParameters(Guid vdsId, String deviceId) {
+ super(vdsId);
+ this.deviceId = deviceId;
+ }
+
+ public RefreshDeviceSizeVDSCommandParameters() {
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s, deviceId=%s", super.toString(),
getDeviceId());
+ }
+}
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 f7dbfca..fb1e4c6 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
@@ -94,6 +94,7 @@
CreateVG("org.ovirt.engine.core.vdsbroker.vdsbroker"),
GetVGList("org.ovirt.engine.core.vdsbroker.vdsbroker"),
GetVGInfo("org.ovirt.engine.core.vdsbroker.vdsbroker"),
+ RefreshDeviceSize("org.ovirt.engine.core.vdsbroker.vdsbroker"),
GetDeviceList("org.ovirt.engine.core.vdsbroker.vdsbroker"),
GetDevicesVisibility("org.ovirt.engine.core.vdsbroker.vdsbroker"),
SPMGetAllTasksStatuses("org.ovirt.engine.core.vdsbroker.irsbroker"),
diff --git
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
index faf0ef5..e8ca494 100644
---
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
+++
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
@@ -64,6 +64,7 @@
job.DeactivateStorageDomainWithOvfUpdate=Deactivating Storage Domain
${Storage} in Data Center ${StoragePool}.
job.AddSANStorageDomain=Adding SAN Storage Domain ${Storage}
job.ExtendSANStorageDomain=Extending SAN Storage Domain ${Storage}
+job.RefreshLunsSize=Refresh LUNs Size in Domain ${Storage}
job.RecoveryStoragePool=Recovering Data Center ${StoragePool}
job.RemoveStoragePool=Removing Data Center ${StoragePool}
job.UpdateStoragePool=Editing Data Center ${StoragePool} properties
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 7a81124..3146ffb 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -2636,6 +2636,7 @@
<xs:element name="volume_group_id" type="xs:string" minOccurs="0"/>
<xs:element name="storage_domain_id" type="xs:string" minOccurs="0"/>
<xs:element name="disk_id" type="xs:string" minOccurs="0"/>
+ <xs:element name="refresh_size" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:group>
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index dd76285..3f62758 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -1553,7 +1553,7 @@
- mandatoryArguments: {storagedomain.host.id|name: 'xs:string',
storagedomain.storage.logical_unit--COLLECTION: {logical_unit.address:
'xs:string',
logical_unit.port: 'xs:int', logical_unit.target: 'xs:string',
logical_unit.username: 'xs:string', logical_unit.password: 'xs:string',
logical_unit.serial: 'xs:string', logical_unit.vendor_id:
'xs:string', logical_unit.product_id: 'xs:string',
- logical_unit.lun_mapping: 'xs:int', logical_unit.portal:
'xs:string', logical_unit.paths: 'xs:int', logical_unit.id: 'xs:string'}}
+ logical_unit.lun_mapping: 'xs:int', logical_unit.portal:
'xs:string', logical_unit.paths: 'xs:int', logical_unit.id: 'xs:string',
logical_unit.refresh_size: 'xs:boolean'}}
optionalArguments: {storagedomain.name: 'xs:string',
storagedomain.comment: 'xs:string', storagedomain.storage.override_luns:
'xs:boolean', storagedomain.wipe_after_delete: 'xs:boolean'}
description: update the storage domain
urlparams:
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java
index 32eef84..45b5de0 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java
@@ -85,6 +85,7 @@
case ISCSI:
case FCP:
extendStorageDomain(incoming, model, storageType);
+ refreshLunSize(incoming, model, storageType);
break;
default:
break;
@@ -163,6 +164,33 @@
}
/**
+ * Resize the LUNs if the user specified
+ * @param incoming
+ * @param storageDomain
+ * @param storageType
+ */
+ private void refreshLunSize(StorageDomain incoming, StorageDomain
storageDomain, StorageType storageType) {
+ if (incoming.getStorage() == null) {
+ // LUNs info was not supplied in the request so no need to check
whether to refresh the size
+ return;
+ }
+ List<LogicalUnit> incomingLuns =
getIncomingLuns(incoming.getStorage());
+ if (!incomingLuns.isEmpty()) {
+ List<LogicalUnit> lunsToResize = new ArrayList<>();
+ for(LogicalUnit logicalUnit: incomingLuns){
+ if(logicalUnit.isSetRefreshSize() &&
logicalUnit.isRefreshSize()){
+ lunsToResize.add(logicalUnit);
+ }
+ }
+ if(!lunsToResize.isEmpty()){
+
+ ExtendSANStorageDomainParameters params =
createParameters(guid, lunsToResize, false);
+ performAction(VdcActionType.RefreshLunsSize, params);
+ }
+ }
+ }
+
+ /**
* if user added new LUNs - extend the storage domain.
*
* @param incoming
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
index a0a0183..2a558f4 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
@@ -98,6 +98,7 @@
addErrataForHostsFeature(features);
addCumulativeNetworkUsageFeature(features);
addGuestMemoryBufferedCached(features);
+ addRefreshLunSize(features);
}
return features;
}
@@ -560,4 +561,11 @@
feature.setDescription("Report of used cached and buffered memory in
the guest OS");
features.getFeature().add(feature);
}
+
+ private void addRefreshLunSize(Features features) {
+ Feature feature = new Feature();
+ feature.setName("Refresh LUNs Size");
+ feature.setDescription("Refresh the LUN size in order to reflect an
increase in the size of a storage domain");
+ features.getFeature().add(feature);
+ }
}
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 f6f5b3f..5f1f863 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
@@ -45,6 +45,7 @@
import
org.ovirt.engine.core.vdsbroker.vdsbroker.OneStorageDomainStatsReturnForXmlRpc;
import org.ovirt.engine.core.vdsbroker.vdsbroker.OneVGReturnForXmlRpc;
import org.ovirt.engine.core.vdsbroker.vdsbroker.OneVmReturnForXmlRpc;
+import
org.ovirt.engine.core.vdsbroker.vdsbroker.RefreshDeviceSizeMapReturnForXmlRpc;
import
org.ovirt.engine.core.vdsbroker.vdsbroker.ServerConnectionListReturnForXmlRpc;
import
org.ovirt.engine.core.vdsbroker.vdsbroker.ServerConnectionStatusReturnForXmlRpc;
import org.ovirt.engine.core.vdsbroker.vdsbroker.SpmStatusReturnForXmlRpc;
@@ -743,6 +744,15 @@
}
@Override
+ public RefreshDeviceSizeMapReturnForXmlRpc refreshDeviceSize(String
device) {
+ JsonRpcRequest request =
+ new RequestBuilder("Host.refreshDevice").withParameter("guid",
device).build();
+ Map<String, Object> response =
+ new FutureMap(this.client, request).withResponseKey("size");
+ return new RefreshDeviceSizeMapReturnForXmlRpc(response);
+ }
+
+ @Override
public LUNListReturnForXmlRpc getDeviceList(int storageType) {
JsonRpcRequest request =
new
RequestBuilder("Host.getDeviceList").withParameter("storageType",
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 d29ea83..7485e8c 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
@@ -153,6 +153,8 @@
OneVGReturnForXmlRpc getVGInfo(String vgUUID);
+ RefreshDeviceSizeMapReturnForXmlRpc refreshDeviceSize(String device);
+
LUNListReturnForXmlRpc getDeviceList(int storageType);
StorageDeviceListReturnForXmlRpc getStorageDeviceList();
diff --git
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeMapReturnForXmlRpc.java
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeMapReturnForXmlRpc.java
new file mode 100644
index 0000000..b59a4dc
--- /dev/null
+++
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeMapReturnForXmlRpc.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc;
+
+import java.util.Map;
+
+public class RefreshDeviceSizeMapReturnForXmlRpc extends StatusReturnForXmlRpc
{
+ private static final String SIZE = "size";
+
+ private Long deviceSize;
+
+ public RefreshDeviceSizeMapReturnForXmlRpc(Map<String, Object> innerMap) {
+ super(innerMap);
+ deviceSize = (innerMap.get(SIZE) != null) ?
+ Long.valueOf((String) innerMap.get(SIZE)) : null;
+ }
+
+ public Long getDeviceSize() {
+ return deviceSize;
+ }
+}
diff --git
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeVDSCommand.java
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeVDSCommand.java
new file mode 100644
index 0000000..57eba56
--- /dev/null
+++
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RefreshDeviceSizeVDSCommand.java
@@ -0,0 +1,28 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import
org.ovirt.engine.core.common.vdscommands.RefreshDeviceSizeVDSCommandParameters;
+
+public class RefreshDeviceSizeVDSCommand<P extends
RefreshDeviceSizeVDSCommandParameters> extends VdsBrokerCommand<P> {
+
+ private RefreshDeviceSizeMapReturnForXmlRpc result;
+
+ public RefreshDeviceSizeVDSCommand(P parameters) {
+ super(parameters);
+ }
+
+ protected void executeVdsBrokerCommand() {
+ result = getBroker().refreshDeviceSize(getParameters().getDeviceId());
+ proceedProxyReturnValue();
+ setReturnValue(result.getDeviceSize());
+ }
+
+ @Override
+ protected Object getReturnValueFromBroker() {
+ return result;
+ }
+
+ @Override
+ protected StatusForXmlRpc getReturnStatus() {
+ return result.mStatus;
+ }
+}
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 a315a23..3d5943a 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
@@ -126,6 +126,8 @@
public Map<String, Object> getVGInfo(String vgUUID);
+ public Map<String, Object> refreshDevice(String device);
+
public Map<String, Object> getDeviceList(int storageType);
public Map<String, Object> getDevicesVisibility(String[] devicesList);
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 b13910c..cc9bfee 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
@@ -666,6 +666,17 @@
}
@Override
+ public RefreshDeviceSizeMapReturnForXmlRpc refreshDeviceSize(String
device){
+ try {
+ Map<String, Object> xmlRpcReturnValue =
vdsServer.refreshDevice(device);
+ RefreshDeviceSizeMapReturnForXmlRpc wrapper = new
RefreshDeviceSizeMapReturnForXmlRpc(xmlRpcReturnValue);
+ return wrapper;
+ } catch (UndeclaredThrowableException ute) {
+ throw new XmlRpcRunTimeException(ute);
+ }
+ }
+
+ @Override
public LUNListReturnForXmlRpc getDeviceList(int storageType) {
try {
Map<String, Object> xmlRpcReturnValue =
vdsServer.getDeviceList(storageType);
--
To view, visit https://gerrit.ovirt.org/39318
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c5c6d59087736466ee5e7eb0c77ee9282199c62
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Freddy Rolland <[email protected]>
Gerrit-Reviewer: Fred Rolland <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches