[
https://issues.apache.org/jira/browse/CLOUDSTACK-9607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15712394#comment-15712394
]
ASF GitHub Bot commented on CLOUDSTACK-9607:
--------------------------------------------
Github user jburwell commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1773#discussion_r90480678
--- Diff: server/src/com/cloud/template/TemplateManagerImpl.java ---
@@ -1176,6 +1176,23 @@ public boolean deleteTemplate(DeleteTemplateCmd cmd)
{
throw new InvalidParameterValueException("unable to find
template with id " + templateId);
}
+ List<VMInstanceVO> vmInstanceVOList;
+ if(cmd.getZoneId() != null) {
+ vmInstanceVOList =
_vmInstanceDao.listNonExpungedByZoneAndTemplate(cmd.getZoneId(), templateId);
+ }
+ else {
+ vmInstanceVOList =
_vmInstanceDao.listNonExpungedByTemplate(templateId);
+ }
+ if(!cmd.isForced() &&
CollectionUtils.isNotEmpty(vmInstanceVOList)) {
+ StringBuilder s = new StringBuilder("Unable to delete
template with id: " + templateId + " because some VM instances are using it. ");
+ for (VMInstanceVO elm : vmInstanceVOList) {
+ s.append(elm.getInstanceName() + ", ");
+ }
+
+ s_logger.warn(s.substring(0,s.length()-2));
+ throw new
InvalidParameterValueException(s.substring(0,s.length()-2));
--- End diff --
Lines 1187-1193 should replaced with the following to be DRY and improve
clarity:
```java
final String message = String.format("Unable to delete template with id:
%1$s because VM instances: [%2$s] are using it.", templateId,
Joiner.on(",").join(vmInstanceVOList));
s_logger.warn(message);
throw new InvalidParameterValueException(message);
```
> Preventing template deletion when template is in use.
> -----------------------------------------------------
>
> Key: CLOUDSTACK-9607
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9607
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Reporter: Priyank Parihar
> Assignee: Priyank Parihar
>
> Consider this scenario:
> 1. User launches a VM from Template and keep it running
> 2. Admin logins and deleted that template [CloudPlatform does not check
> existing / running VM etc. while the deletion is done]
> 3. User resets the VM
> 4. CloudPlatform fails to star the VM as it cannot find the corresponding
> template.
> It throws error as
> java.lang.RuntimeException: Job failed due to exception Resource [Host:11] is
> unreachable: Host 11: Unable to start instance due to can't find ready
> template: 209 for data center 1
> at
> com.cloud.vm.VmWorkJobDispatcher.runJob(VmWorkJobDispatcher.java:113)
> at
> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:495)
> Client is requesting better handing of this scenario. We need to check
> existing / running VM's when the template is deleted and warn admin about the
> possible issue that may occur.
> REPRO STEPS
> ==================
> 1. Launches a VM from Template and keep it running
> 2. Now delete that template
> 3. Reset the VM
> 4. CloudPlatform fails to star the VM as it cannot find the corresponding
> template.
> EXPECTED BEHAVIOR
> ==================
> Cloud platform should throw some warning message while the template is
> deleted if that template is being used by existing / running VM's
> ACTUAL BEHAVIOR
> ==================
> Cloud platform does not throw as waring etc.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)