Skip to content

Commit e92cd6d

Browse files
committed
Move data store specific extract volume logic from VolumeManager to data
store driver.
1 parent ef03d5a commit e92cd6d

5 files changed

Lines changed: 76 additions & 179 deletions

File tree

api/src/com/cloud/storage/VolumeApiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,5 @@ Snapshot allocSnapshot(Long volumeId, Long policyId)
9797
* @throws PermissionDeniedException
9898
*
9999
*/
100-
Long extractVolume(ExtractVolumeCmd cmd);
100+
String extractVolume(ExtractVolumeCmd cmd);
101101
}

api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -126,33 +126,26 @@ public String getEventDescription() {
126126

127127
@Override
128128
public void execute(){
129-
// try {
130-
UserContext.current().setEventDetails("Volume Id: "+getId());
131-
Long uploadId = _volumeService.extractVolume(this);
132-
if (uploadId != null){
133-
Upload uploadInfo = _entityMgr.findById(Upload.class, uploadId);
134-
ExtractResponse response = new ExtractResponse();
135-
response.setResponseName(getCommandName());
136-
response.setObjectName("volume");
137-
Volume vol = _entityMgr.findById(Volume.class, id);
138-
response.setId(vol.getUuid());
139-
response.setName(vol.getName());
140-
DataCenter zone = _entityMgr.findById(DataCenter.class, zoneId);
141-
response.setZoneId(zone.getUuid());
142-
response.setZoneName(zone.getName());
143-
response.setMode(mode);
144-
response.setUploadId(uploadInfo.getUuid());
145-
response.setState(uploadInfo.getUploadState().toString());
146-
Account account = _entityMgr.findById(Account.class, getEntityOwnerId());
147-
response.setAccountId(account.getUuid());
148-
response.setUrl(uploadInfo.getUploadUrl());
149-
this.setResponseObject(response);
150-
} else {
151-
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to extract volume");
152-
}
153-
// } catch (URISyntaxException ex) {
154-
// s_logger.info(ex);
155-
// throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
156-
// }
129+
UserContext.current().setEventDetails("Volume Id: " + getId());
130+
String uploadUrl = _volumeService.extractVolume(this);
131+
if (uploadUrl != null) {
132+
ExtractResponse response = new ExtractResponse();
133+
response.setResponseName(getCommandName());
134+
response.setObjectName("volume");
135+
Volume vol = _entityMgr.findById(Volume.class, id);
136+
response.setId(vol.getUuid());
137+
response.setName(vol.getName());
138+
DataCenter zone = _entityMgr.findById(DataCenter.class, zoneId);
139+
response.setZoneId(zone.getUuid());
140+
response.setZoneName(zone.getName());
141+
response.setMode(mode);
142+
response.setState(Upload.Status.DOWNLOAD_URL_CREATED.toString());
143+
Account account = _entityMgr.findById(Account.class, getEntityOwnerId());
144+
response.setAccountId(account.getUuid());
145+
response.setUrl(uploadUrl);
146+
this.setResponseObject(response);
147+
} else {
148+
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to extract volume");
149+
}
157150
}
158151
}

server/src/com/cloud/api/ApiResponseHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,8 +1605,8 @@ public ExtractResponse createExtractResponse(Long id, Long zoneId, Long accountI
16051605
response.setZoneName(zone.getName());
16061606
}
16071607
response.setMode(mode);
1608-
response.setUrl(url);
1609-
response.setState(Upload.Status.DOWNLOAD_URL_CREATED.toString());
1608+
response.setUrl(url);
1609+
response.setState(Upload.Status.DOWNLOAD_URL_CREATED.toString());
16101610
Account account = ApiDBUtils.findAccountById(accountId);
16111611
response.setAccountId(account.getUuid());
16121612

server/src/com/cloud/storage/VolumeManager.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,11 @@
1818
*/
1919
package com.cloud.storage;
2020

21-
import java.net.URISyntaxException;
2221
import java.util.Map;
2322

2423
import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
2524
import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
2625
import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd;
27-
import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
2826
import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd;
2927
import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
3028
import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
@@ -35,8 +33,6 @@
3533
import com.cloud.deploy.DeployDestination;
3634
import com.cloud.exception.ConcurrentOperationException;
3735
import com.cloud.exception.InsufficientStorageCapacityException;
38-
import com.cloud.exception.InternalErrorException;
39-
import com.cloud.exception.PermissionDeniedException;
4036
import com.cloud.exception.ResourceAllocationException;
4137
import com.cloud.exception.StorageUnavailableException;
4238
import com.cloud.host.Host;
@@ -54,6 +50,7 @@ VolumeInfo moveVolume(VolumeInfo volume, long destPoolDcId, Long destPoolPodId,
5450
Long destPoolClusterId, HypervisorType dataDiskHyperType)
5551
throws ConcurrentOperationException;
5652

53+
@Override
5754
VolumeVO uploadVolume(UploadVolumeCmd cmd)
5855
throws ResourceAllocationException;
5956

@@ -65,28 +62,35 @@ VolumeVO uploadVolume(UploadVolumeCmd cmd)
6562

6663
String getVmNameOnVolume(Volume volume);
6764

65+
@Override
6866
VolumeVO allocVolume(CreateVolumeCmd cmd)
6967
throws ResourceAllocationException;
7068

69+
@Override
7170
VolumeVO createVolume(CreateVolumeCmd cmd);
7271

72+
@Override
7373
VolumeVO resizeVolume(ResizeVolumeCmd cmd)
7474
throws ResourceAllocationException;
7575

76+
@Override
7677
boolean deleteVolume(long volumeId, Account caller)
7778
throws ConcurrentOperationException;
7879

7980
void destroyVolume(VolumeVO volume);
8081

8182
DiskProfile allocateRawVolume(Type type, String name, DiskOfferingVO offering, Long size, VMInstanceVO vm, Account owner);
83+
@Override
8284
Volume attachVolumeToVM(AttachVolumeCmd command);
8385

86+
@Override
8487
Volume detachVolumeFromVM(DetachVolumeCmd cmmd);
8588

8689
void release(VirtualMachineProfile<? extends VMInstanceVO> profile);
8790

8891
void cleanupVolumes(long vmId) throws ConcurrentOperationException;
8992

93+
@Override
9094
Volume migrateVolume(MigrateVolumeCmd cmd);
9195

9296
<T extends VMInstanceVO> void migrateVolumes(T vm, VirtualMachineTO vmTo, Host srcHost, Host destHost,

0 commit comments

Comments
 (0)