You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2022/11/30 07:15:41 UTC
[cloudstack] branch 4.17 updated: server: Check for null poolid (#6879)
This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.17 by this push:
new dbc20320770 server: Check for null poolid (#6879)
dbc20320770 is described below
commit dbc20320770efa5a62b67aacc226bb2ecb72105e
Author: Craig Squire <cr...@gmail.com>
AuthorDate: Wed Nov 30 01:15:35 2022 -0600
server: Check for null poolid (#6879)
Extract retrieveDatastore method
Add unit test for null poolId
Fixes #6878
Co-authored-by: Craig Squire <cr...@ticketmaster.com>
Co-authored-by: Stephan Krug <st...@icloud.com>
---
.../main/java/com/cloud/tags/TaggedResourceManagerImpl.java | 11 ++++++++++-
.../java/com/cloud/tags/TaggedResourceManagerImplTest.java | 7 +++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/server/src/main/java/com/cloud/tags/TaggedResourceManagerImpl.java b/server/src/main/java/com/cloud/tags/TaggedResourceManagerImpl.java
index c855c9efa30..60ded224a21 100644
--- a/server/src/main/java/com/cloud/tags/TaggedResourceManagerImpl.java
+++ b/server/src/main/java/com/cloud/tags/TaggedResourceManagerImpl.java
@@ -318,8 +318,10 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
private void informStoragePoolForVmTags(long vmId, String key, String value) {
List<VolumeVO> volumeVos = volumeDao.findByInstance(vmId);
for (VolumeVO volume : volumeVos) {
- DataStore dataStore = dataStoreMgr.getDataStore(volume.getPoolId(), DataStoreRole.Primary);
+ Long poolId = volume.getPoolId();
+ DataStore dataStore = retrieveDatastore(poolId);
if (dataStore == null || !(dataStore.getDriver() instanceof PrimaryDataStoreDriver)) {
+ s_logger.info(String.format("No data store found for VM %d with pool ID %d.", vmId, poolId));
continue;
}
PrimaryDataStoreDriver dataStoreDriver = (PrimaryDataStoreDriver) dataStore.getDriver();
@@ -328,4 +330,11 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
}
}
}
+
+ protected DataStore retrieveDatastore(Long poolId) {
+ if (poolId == null) {
+ return null;
+ }
+ return dataStoreMgr.getDataStore(poolId, DataStoreRole.Primary);
+ }
}
diff --git a/server/src/test/java/com/cloud/tags/TaggedResourceManagerImplTest.java b/server/src/test/java/com/cloud/tags/TaggedResourceManagerImplTest.java
index 6d5b314263c..d25f2feccb5 100644
--- a/server/src/test/java/com/cloud/tags/TaggedResourceManagerImplTest.java
+++ b/server/src/test/java/com/cloud/tags/TaggedResourceManagerImplTest.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -123,4 +124,10 @@ public class TaggedResourceManagerImplTest extends TestCase {
Mockito.doThrow(PermissionDeniedException.class).when(accountManager).checkAccess(caller, null, false, owner);
taggedResourceManagerImplSpy.checkTagsDeletePermission(List.of(resourceTag1, resourceTag2), caller);
}
+
+ @Test
+ public void testRetrieveDataStoreNullPoolId() {
+ DataStore dataStore = taggedResourceManagerImplSpy.retrieveDatastore(null);
+ Assert.assertNull(dataStore);
+ }
}