slavkap commented on code in PR #8575:
URL: https://github.com/apache/cloudstack/pull/8575#discussion_r1500315507


##########
plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java:
##########
@@ -485,55 +484,14 @@ public void copyAsync(DataObject srcData, DataObject 
dstData, AsyncCompletionCal
                     StorPoolUtil.spLog("Snapshot %s does not exists on 
StorPool, will try to create a volume from a snopshot on secondary storage", 
snapshotName);
                     SnapshotDataStoreVO snap = 
getSnapshotImageStoreRef(sinfo.getId(), vinfo.getDataCenterId());
                     if (snap != null && 
StorPoolStorageAdaptor.getVolumeNameFromPath(snap.getInstallPath(), false) == 
null) {
-                        resp = StorPoolUtil.volumeCreate(srcData.getUuid(), 
null, size, null, "no", "snapshot", sinfo.getBaseVolume().getMaxIops(), conn);
-                        if (resp.getError() == null) {
-                            VolumeObjectTO dstTO = (VolumeObjectTO) 
dstData.getTO();
-                            dstTO.setSize(size);
-                            
dstTO.setPath(StorPoolUtil.devPath(StorPoolUtil.getNameFromResponse(resp, 
false)));
-                            cmd = new 
StorPoolDownloadTemplateCommand(srcData.getTO(), dstTO, 
StorPoolHelper.getTimeout(StorPoolHelper.PrimaryStorageDownloadWait, 
configDao), VirtualMachineManager.ExecuteInSequence.value(), "volume");
-
-                            EndPoint ep = selector.select(srcData, dstData);
-                            if (ep == null) {
-                                err = "No remote endpoint to send command, 
check if host or ssvm is down?";
-                            } else {
-                                answer = ep.sendMessage(cmd);
-                            }
-
-                            if (answer != null && answer.getResult()) {
-                                SpApiResponse resp2 = 
StorPoolUtil.volumeFreeze(StorPoolUtil.getNameFromResponse(resp, true), conn);
-                                if (resp2.getError() != null) {
-                                    err = String.format("Could not freeze 
Storpool volume %s. Error: %s", srcData.getUuid(), resp2.getError());
-                                } else {
-                                    String name = 
StorPoolUtil.getNameFromResponse(resp, false);
-                                    SnapshotDetailsVO snapshotDetails = 
_snapshotDetailsDao.findDetail(sinfo.getId(), sinfo.getUuid());
-                                    if (snapshotDetails != null) {
-                                        
StorPoolHelper.updateSnapshotDetailsValue(snapshotDetails.getId(), 
StorPoolUtil.devPath(name), "snapshot");
-                                    }else {
-                                        
StorPoolHelper.addSnapshotDetails(sinfo.getId(), sinfo.getUuid(), 
StorPoolUtil.devPath(name), _snapshotDetailsDao);
-                                    }
-                                    resp = 
StorPoolUtil.volumeCreate(volumeName, StorPoolUtil.getNameFromResponse(resp, 
true), size, null, null, "volume", sinfo.getBaseVolume().getMaxIops(), conn);
-                                    if (resp.getError() == null) {
-                                        
updateStoragePool(dstData.getDataStore().getId(), size);
-
-                                        VolumeObjectTO to = (VolumeObjectTO) 
dstData.getTO();
-                                        
to.setPath(StorPoolUtil.devPath(StorPoolUtil.getNameFromResponse(resp, false)));
-                                        to.setSize(size);
-                                        // successfully downloaded snapshot to 
primary storage
-                                        answer = new CopyCmdAnswer(to);
-                                        StorPoolUtil.spLog("Created volume=%s 
with uuid=%s from snapshot=%s with uuid=%s", name, to.getUuid(), snapshotName, 
sinfo.getUuid());
-
-                                    } else {
-                                        err = String.format("Could not create 
Storpool volume %s from snapshot %s. Error: %s", volumeName, snapshotName, 
resp.getError());
-                                    }
-                                }
-                            } else {
-                                err = answer != null ? answer.getDetails() : 
"Unknown error while downloading template. Null answer returned.";
-                            }
+                        SpApiResponse emptyVolumeCreateResp = 
StorPoolUtil.volumeCreate(volumeName, null, size, null, null, "volume", null, 
conn);
+                        if (emptyVolumeCreateResp.getError() == null) {
+                            answer = createVolumeFromSnapshot(srcData, 
dstData, size, emptyVolumeCreateResp);

Review Comment:
   thanks @sureshanaparti for the review! Actually, we expect a response, the 
created volume is empty before we download the data from the secondary storage



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to