[ 
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)

Reply via email to