From d0543449a66714dc37c754d57a6072f5a3ae84dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20B=C3=B6ck?= <89930804+erikbocks@users.noreply.github.com> Date: Mon, 23 Feb 2026 07:21:04 -0300 Subject: [PATCH] Changes to the error message displayed during the removal of public templates that are used (#12373) --- .../com/cloud/template/TemplateManagerImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java index 194d97349f0..bf470205107 100755 --- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java @@ -219,7 +219,6 @@ import com.cloud.vm.VirtualMachineProfileImpl; import com.cloud.vm.VmDetailConstants; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; -import com.google.common.base.Joiner; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -1375,9 +1374,16 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, else { vmInstanceVOList = _vmInstanceDao.listNonExpungedByTemplate(templateId); } - if(!cmd.isForced() && CollectionUtils.isNotEmpty(vmInstanceVOList)) { - final String message = String.format("Unable to delete Template: %s because Instance: [%s] are using it.", template, Joiner.on(",").join(vmInstanceVOList)); - logger.warn(message); + if (!cmd.isForced() && CollectionUtils.isNotEmpty(vmInstanceVOList)) { + String message = String.format("Unable to delete template [%s] because there are [%d] VM instances using it.", template, vmInstanceVOList.size()); + String instancesListMessage = String.format(" Instances list: [%s].", StringUtils.join(vmInstanceVOList, ",")); + + logger.warn("{}{}", message, instancesListMessage); + + if (_accountMgr.isRootAdmin(caller.getAccountId())) { + message += instancesListMessage; + } + throw new InvalidParameterValueException(message); }