From ec01e0b42306d7099ad9db8ab5f7eb6b48ac858f Mon Sep 17 00:00:00 2001 From: abhishek Date: Fri, 10 Sep 2010 14:50:47 -0700 Subject: [PATCH] bug 5147: this checkin ensures that we cover some more corner cases, in particular, to not allow an execution when we have pools in inconsistent states (maintenance, prepareformaintenance or errorinmaintenance) --- .../commands/PreparePrimaryStorageForMaintenanceCmd.java | 2 +- server/src/com/cloud/server/ManagementServerImpl.java | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java b/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java index c2de2923cdc..08a087165fe 100644 --- a/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java +++ b/server/src/com/cloud/api/commands/PreparePrimaryStorageForMaintenanceCmd.java @@ -73,7 +73,7 @@ public class PreparePrimaryStorageForMaintenanceCmd extends BaseCmd { } if(getManagementServer().getPsMaintenanceCount(storagePool.getPodId()) > 0){ - throw new ServerApiException(BaseCmd.INTERNAL_ERROR,"There already exist other storage pools in maintenance"); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR,"There already exist other storage pools in maintenance process"); } long jobId = 0; diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 66b5518dfa6..4ecb921ebc9 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -8733,12 +8733,15 @@ public class ManagementServerImpl implements ManagementServer { @Override public long getPsMaintenanceCount(long podId){ - List poolsInMaintenance = _poolDao.listPoolsByStatus(Status.Maintenance); + List poolsInTransition = new ArrayList(); + poolsInTransition.addAll(_poolDao.listPoolsByStatus(Status.Maintenance)); + poolsInTransition.addAll(_poolDao.listPoolsByStatus(Status.PrepareForMaintenance)); + poolsInTransition.addAll(_poolDao.listPoolsByStatus(Status.ErrorInMaintenance)); - if(poolsInMaintenance==null) + if(poolsInTransition==null) return 0; else - return poolsInMaintenance.size(); + return poolsInTransition.size(); } @Override