From 0463e9ac726af3c109e101c69785a67c548c7362 Mon Sep 17 00:00:00 2001 From: kioie Date: Wed, 26 Jun 2019 10:28:38 +0300 Subject: [PATCH 1/5] KVM Volumes: Limit migration of volumes within the same storage pool. --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 099f88bde426..2146d33e3f52 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2083,6 +2083,8 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { throw new InvalidParameterValueException("Failed to find the destination storage pool: " + storagePoolId); } else if (destPool.isInMaintenance()) { throw new InvalidParameterValueException("Cannot migrate volume " + vol + "to the destination storage pool " + destPool.getName() + " as the storage pool is in maintenance mode."); + }else if(storagePoolId == vol.poolId){ + throw new InvalidParameterValueException("Cannot migrate volume "+ vol.name +" to the destination storage pool " +storagePoolId+ " as the current storage pool and the destination pool are the same."); } if (!storageMgr.storagePoolHasEnoughSpace(Collections.singletonList(vol), destPool)) { From 9f461d3e23a11b1723760233ea2aadec7661f9c9 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 26 Jun 2019 13:30:05 +0530 Subject: [PATCH 2/5] fix checkstyle issues and refactor --- .../main/java/com/cloud/storage/VolumeApiServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 2146d33e3f52..56edeaadac73 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2032,6 +2032,10 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { if (vol.getState() != Volume.State.Ready) { throw new InvalidParameterValueException("Volume must be in ready state"); } + + if (vol.getPoolId() == storagePoolId) { + throw new InvalidParameterValueException("Volume "+ vol +" current storage pool is same as the the destination storage pool " + destPool.getName()); + } boolean liveMigrateVolume = false; Long instanceId = vol.getInstanceId(); @@ -2083,8 +2087,6 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { throw new InvalidParameterValueException("Failed to find the destination storage pool: " + storagePoolId); } else if (destPool.isInMaintenance()) { throw new InvalidParameterValueException("Cannot migrate volume " + vol + "to the destination storage pool " + destPool.getName() + " as the storage pool is in maintenance mode."); - }else if(storagePoolId == vol.poolId){ - throw new InvalidParameterValueException("Cannot migrate volume "+ vol.name +" to the destination storage pool " +storagePoolId+ " as the current storage pool and the destination pool are the same."); } if (!storageMgr.storagePoolHasEnoughSpace(Collections.singletonList(vol), destPool)) { @@ -3386,4 +3388,4 @@ public String getConfigComponentName() { public ConfigKey[] getConfigKeys() { return new ConfigKey[] {ConcurrentMigrationsThresholdPerDatastore}; } -} \ No newline at end of file +} From 85bc5edf80ccb291a76d4b418698d84a5b61f227 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 26 Jun 2019 13:31:45 +0530 Subject: [PATCH 3/5] fix space around + operator --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 56edeaadac73..7c722ee6d65f 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2034,7 +2034,7 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { } if (vol.getPoolId() == storagePoolId) { - throw new InvalidParameterValueException("Volume "+ vol +" current storage pool is same as the the destination storage pool " + destPool.getName()); + throw new InvalidParameterValueException("Volume " + vol + " current storage pool is same as the the destination storage pool " + destPool.getName()); } boolean liveMigrateVolume = false; From 0c8fa713f0ae069017c814f924ffaa2c30219593 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 26 Jun 2019 14:37:07 +0530 Subject: [PATCH 4/5] Update VolumeApiServiceImpl.java --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 7c722ee6d65f..30dd6e8b1748 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2032,7 +2032,7 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { if (vol.getState() != Volume.State.Ready) { throw new InvalidParameterValueException("Volume must be in ready state"); } - + if (vol.getPoolId() == storagePoolId) { throw new InvalidParameterValueException("Volume " + vol + " current storage pool is same as the the destination storage pool " + destPool.getName()); } From c3531d245bc15daef5b1982fbf5c8d3ba09b4058 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 26 Jun 2019 14:46:42 +0530 Subject: [PATCH 5/5] Update VolumeApiServiceImpl.java --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 30dd6e8b1748..182379acbabe 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2034,7 +2034,7 @@ public Volume migrateVolume(MigrateVolumeCmd cmd) { } if (vol.getPoolId() == storagePoolId) { - throw new InvalidParameterValueException("Volume " + vol + " current storage pool is same as the the destination storage pool " + destPool.getName()); + throw new InvalidParameterValueException("Volume " + vol + " is already on the destination storage pool"); } boolean liveMigrateVolume = false;