CLOUDSTACK-5831: return quiescevm field in volumeresponse

Conflicts:

	api/src/org/apache/cloudstack/api/response/VolumeResponse.java
	server/src/com/cloud/api/query/QueryManagerImpl.java
This commit is contained in:
Edison Su 2014-03-27 16:03:49 -07:00 committed by Anthony Xu
parent 550834e4b9
commit 7c04aa6115
2 changed files with 38 additions and 4 deletions

View File

@ -204,6 +204,11 @@ public class VolumeResponse extends BaseResponse implements ControlledViewEntity
@Param(description = "the chain info of the volume", since = "4.4")
String chainInfo;
@SerializedName(ApiConstants.SNAPSHOT_QUIESCEVM)
@Param(description = "need quiesce vm or not when taking snapshot", since="4.3")
private boolean needQuiescevm;
public String getPath() {
return path;
}
@ -425,4 +430,18 @@ public class VolumeResponse extends BaseResponse implements ControlledViewEntity
public void setChainInfo(String chainInfo) {
this.chainInfo = chainInfo;
}
public String getStoragePoolId() {
return storagePoolId;
}
public void setNeedQuiescevm(boolean quiescevm) {
this.needQuiescevm = quiescevm;
}
public boolean isNeedQuiescevm() {
return this.needQuiescevm;
}
}

View File

@ -26,6 +26,7 @@ import java.util.Set;
import javax.ejb.Local;
import javax.inject.Inject;
import org.apache.cloudstack.engine.subsystem.api.storage.*;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@ -91,10 +92,6 @@ import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.query.QueryService;
@ -1643,6 +1640,24 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
List<VolumeResponse> volumeResponses = ViewResponseHelper.createVolumeResponse(respView, result.first().toArray(
new VolumeJoinVO[result.first().size()]));
for(VolumeResponse vr : volumeResponses) {
String poolId = vr.getStoragePoolId();
DataStore store = dataStoreManager.getPrimaryDataStore(poolId);
if (store == null) {
continue;
}
DataStoreDriver driver = store.getDriver();
if (driver == null) {
continue;
}
Map<String, String> caps = driver.getCapabilities();
if (caps != null) {
boolean quiescevm = Boolean.parseBoolean(caps.get(DataStoreCapabilities.VOLUME_SNAPSHOT_QUIESCEVM.toString()));
vr.setNeedQuiescevm(quiescevm);
}
}
response.setResponses(volumeResponses, result.second());
return response;
}