This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 14937e1adb Fixed NPE on volume creation from snapshot (#6839)
14937e1adb is described below

commit 14937e1adbcbcdc8544da3ab0e3bdf9668c0f60b
Author: João Jandre <[email protected]>
AuthorDate: Wed Oct 26 03:44:01 2022 -0300

    Fixed NPE on volume creation from snapshot (#6839)
    
    Co-authored-by: João Jandre <[email protected]>
---
 api/src/main/java/com/cloud/deploy/DataCenterDeployment.java       | 7 +++++++
 .../src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java      | 5 ++++-
 .../apache/cloudstack/engine/orchestration/VolumeOrchestrator.java | 6 +++---
 .../cloudstack/storage/allocator/AbstractStoragePoolAllocator.java | 6 ++++++
 .../storage/allocator/ClusterScopeStoragePoolAllocator.java        | 2 +-
 .../cloudstack/storage/allocator/LocalStoragePoolAllocator.java    | 2 +-
 .../cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java | 2 +-
 .../apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java  | 6 ++++++
 .../cloudstack/storage/allocator/RandomStoragePoolAllocator.java   | 2 +-
 9 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/api/src/main/java/com/cloud/deploy/DataCenterDeployment.java 
b/api/src/main/java/com/cloud/deploy/DataCenterDeployment.java
index 3ee544cf4e..c7471bd1b3 100644
--- a/api/src/main/java/com/cloud/deploy/DataCenterDeployment.java
+++ b/api/src/main/java/com/cloud/deploy/DataCenterDeployment.java
@@ -18,6 +18,7 @@ package com.cloud.deploy;
 
 import com.cloud.deploy.DeploymentPlanner.ExcludeList;
 import com.cloud.vm.ReservationContext;
+import 
org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -117,4 +118,10 @@ public class DataCenterDeployment implements 
DeploymentPlan {
         return migrationPlan;
     }
 
+    @Override
+    public String toString() {
+        return ReflectionToStringBuilderUtils.reflectOnlySelectedFields(this, 
"_dcId", "_podId", "_clusterId", "_poolId", "_hostid", "_physicalNetworkId",
+                "migrationPlan");
+    }
+
 }
diff --git 
a/engine/components-api/src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java
 
b/engine/components-api/src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java
index efe4e2e570..bc689fef87 100644
--- 
a/engine/components-api/src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java
+++ 
b/engine/components-api/src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java
@@ -86,7 +86,10 @@ public class VirtualMachineProfileImpl implements 
VirtualMachineProfile {
 
     @Override
     public String toString() {
-        return _vm.toString();
+        if (_vm != null) {
+            return _vm.toString();
+        }
+        return "";
     }
 
     @Override
diff --git 
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
 
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
index 07b475af67..c9f83aadbd 100644
--- 
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
+++ 
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
@@ -374,15 +374,15 @@ public class VolumeOrchestrator extends ManagerBase 
implements VolumeOrchestrati
                 if (storagePool.isPresent()) {
                     storage = 
(StoragePool)this.dataStoreMgr.getDataStore(storagePool.get().getId(), 
DataStoreRole.Primary);
                     s_logger.debug(String.format("VM [%s] has a preferred 
storage pool [%s]. Volume Orchestrator found this storage using Storage Pool 
Allocator [%s] and will"
-                            + " use it.", vm, storage, allocator));
+                            + " use it.", vm, storage, 
allocator.getClass().getSimpleName()));
                 } else {
                     storage = 
(StoragePool)dataStoreMgr.getDataStore(poolList.get(0).getId(), 
DataStoreRole.Primary);
                     s_logger.debug(String.format("VM [%s] does not have a 
preferred storage pool or it cannot be used. Volume Orchestrator will use the 
available Storage Pool"
-                            + " [%s], which was discovered using Storage Pool 
Allocator [%s].", vm, storage, allocator));
+                            + " [%s], which was discovered using Storage Pool 
Allocator [%s].", vm, storage, allocator.getClass().getSimpleName()));
                 }
                 return storage;
             }
-            s_logger.debug(String.format("Could not find any available Storage 
Pool using Storage Pool Allocator [%s].", allocator));
+            s_logger.debug(String.format("Could not find any available Storage 
Pool using Storage Pool Allocator [%s].", 
allocator.getClass().getSimpleName()));
         }
         s_logger.info("Volume Orchestrator could not find any available 
Storage Pool.");
         return null;
diff --git 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
index 919571999e..2966f68204 100644
--- 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
+++ 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
@@ -19,6 +19,7 @@ package org.apache.cloudstack.storage.allocator;
 import java.math.BigDecimal;
 import java.security.SecureRandom;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -389,4 +390,9 @@ public abstract class AbstractStoragePoolAllocator extends 
AdapterBase implement
                 + "deployment plan [%s]. Returning up to [%d] and 
bypassStorageTypeCheck [%s].", this.getClass().getSimpleName(), dskCh, 
vmProfile, plan, returnUpTo, bypassStorageTypeCheck));
     }
 
+    protected void logEndOfSearch(List<StoragePool> storagePoolList) {
+        s_logger.debug(String.format("%s is returning [%s] suitable storage 
pools [%s].", this.getClass().getSimpleName(), storagePoolList.size(),
+                Arrays.toString(storagePoolList.toArray())));
+    }
+
 }
diff --git 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java
 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java
index 683d70dec2..e7c9b7e6f3 100644
--- 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java
+++ 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java
@@ -107,7 +107,7 @@ public class ClusterScopeStoragePoolAllocator extends 
AbstractStoragePoolAllocat
             }
         }
 
-        s_logger.debug(String.format("ClusterScopeStoragePoolAllocator is 
returning [%s] suitable storage pools [%s].", suitablePools.size(), 
suitablePools));
+        logEndOfSearch(suitablePools);
 
         return suitablePools;
     }
diff --git 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java
 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java
index 52d74e97e4..4fbaa8c0e8 100644
--- 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java
+++ 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/LocalStoragePoolAllocator.java
@@ -120,7 +120,7 @@ public class LocalStoragePoolAllocator extends 
AbstractStoragePoolAllocator {
                 avoid.addPool(pool.getId());
             }
         }
-        s_logger.debug(String.format("LocalStoragePoolAllocator returning [%s] 
suitable storage pools [%s].", suitablePools.size(), suitablePools));
+        logEndOfSearch(suitablePools);
 
         return suitablePools;
     }
diff --git 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
index 0f3ecb6946..2902871a9e 100644
--- 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
+++ 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
@@ -102,7 +102,7 @@ public class ZoneWideStoragePoolAllocator extends 
AbstractStoragePoolAllocator {
                 }
             }
         }
-        LOGGER.debug(String.format("ZoneWideStoragePoolAllocator is returning 
[%s] suitable storage pools [%s].", suitablePools.size(), suitablePools));
+        logEndOfSearch(suitablePools);
 
         return suitablePools;
     }
diff --git 
a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java
 
b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java
index cf0bca9cfe..e392c2615f 100644
--- 
a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java
+++ 
b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java
@@ -46,6 +46,7 @@ import 
org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.to.PrimaryDataStoreTO;
 import org.apache.cloudstack.storage.volume.VolumeObject;
+import 
org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.to.DataObjectType;
@@ -464,4 +465,9 @@ public class PrimaryDataStoreImpl implements 
PrimaryDataStore {
         }
         return null;
     }
+
+    @Override
+    public String toString() {
+        return ReflectionToStringBuilderUtils.reflectOnlySelectedFields(this, 
"name", "uuid");
+    }
 }
diff --git 
a/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
 
b/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
index 36ab102f53..9787e618f0 100644
--- 
a/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
+++ 
b/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
@@ -73,7 +73,7 @@ public class RandomStoragePoolAllocator extends 
AbstractStoragePoolAllocator {
             }
         }
 
-        s_logger.debug(String.format("RandomStoragePoolAllocator is returning 
[%s] suitable storage pools [%s].", suitablePools.size(), suitablePools));
+        logEndOfSearch(suitablePools);
 
         return suitablePools;
     }

Reply via email to