Daniel Erez has uploaded a new change for review.

Change subject: core: update images size in DB after migration
......................................................................

core: update images size in DB after migration

Images actual size should be updated in db after live
disk migration (info data is fetched using GetImageInfo).

Change-Id: I4ec8e2e0c8017b6576f9a849d419e87d6d509c69
Bug-Url: https://bugzilla.redhat.com/878460
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java
1 file changed, 29 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/82/11482/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java
index dba186a..af94eff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java
@@ -8,11 +8,13 @@
 import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.DiskImageDynamic;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.ImageStorageDomainMapId;
 import org.ovirt.engine.core.common.businessentities.image_storage_domain_map;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import 
org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters;
+import 
org.ovirt.engine.core.common.vdscommands.GetImageInfoVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
@@ -21,6 +23,7 @@
 import org.ovirt.engine.core.compat.TransactionScopeOption;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.DiskImageDAO;
+import org.ovirt.engine.core.dao.DiskImageDynamicDAO;
 import org.ovirt.engine.core.dao.ImageStorageDomainMapDao;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
@@ -50,6 +53,7 @@
         // If the split succeeded, update the database
         if (ret.getSucceeded()) {
             moveDiskInDB();
+            updateImagesInfo();
             
ImagesHandler.updateImageStatus(getEnclosingCommand().getParameters().getDestinationImageId(),
                     ImageStatus.OK);
         }
@@ -81,6 +85,27 @@
                 });
     }
 
+    private void updateImagesInfo() {
+        for (DiskImage image : getDiskImageDao().getAllSnapshotsForImageGroup
+                (getEnclosingCommand().getParameters().getImageGroupID())) {
+            VDSReturnValue ret = 
Backend.getInstance().getResourceManager().RunVdsCommand(
+                    VDSCommandType.GetImageInfo,
+                    new 
GetImageInfoVDSCommandParameters(getEnclosingCommand().getParameters().getStoragePoolId(),
+                            
getEnclosingCommand().getParameters().getTargetStorageDomainId(),
+                            
getEnclosingCommand().getParameters().getImageGroupID(),
+                            image.getImageId()));
+
+            DiskImage imageFromIRS = (DiskImage) ret.getReturnValue();
+            DiskImageDynamic diskImageDynamic = 
getDiskImageDynamicDao().get(image.getImageId());
+
+            // Update image's actual size in DB
+            if (imageFromIRS != null && diskImageDynamic != null) {
+                diskImageDynamic.setactual_size(imageFromIRS.getactual_size());
+                getDiskImageDynamicDao().update(diskImageDynamic);
+            }
+        }
+    }
+
     private static DiskImageDAO getDiskImageDao() {
         return DbFacade.getInstance().getDiskImageDao();
     }
@@ -89,6 +114,10 @@
         return DbFacade.getInstance().getImageStorageDomainMapDao();
     }
 
+    private static DiskImageDynamicDAO getDiskImageDynamicDao() {
+        return DbFacade.getInstance().getDiskImageDynamicDao();
+    }
+
     @Override
     protected VDSCommandType getVDSCommandType() {
         return VDSCommandType.DeleteImageGroup;


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

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

Reply via email to