diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 622f73c1e37d..33a3caa8d6ed 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -35,6 +35,7 @@ import javax.inject.Inject; +import com.cloud.exception.AgentUnavailableException; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.InternalIdentity; @@ -3165,6 +3166,8 @@ private Volume orchestrateDetachVolumeFromVM(long vmId, long volumeId) { try { answer = _agentMgr.send(hostId, cmd); + } catch (AgentUnavailableException e) { + throw new CloudRuntimeException(String.format("%s. Please contact your system administrator. ", errorMsg)); } catch (Exception e) { throw new CloudRuntimeException(errorMsg + " due to: " + e.getMessage()); } @@ -4657,6 +4660,11 @@ private VolumeVO sendAttachVolumeCommand(UserVmVO vm, VolumeVO volumeToAttach, L try { answer = (AttachAnswer)_agentMgr.send(hostId, cmd); + } catch (AgentUnavailableException e) { + if (host != null) { + volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore); + } + throw new CloudRuntimeException(String.format("%s. Please, contact your system administrator", errorMsg)); } catch (Exception e) { if (host != null) { volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);