Skip to content

Commit 433c28f

Browse files
committed
bug 7041: fix npe in delete template from storage pool, if the template already marked as removed
status 7041: resolved fixed
1 parent e2aa473 commit 433c28f

3 files changed

Lines changed: 10 additions & 9 deletions

File tree

api/src/com/cloud/storage/Storage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ public static enum FileSystem {
8080
}
8181

8282
public static enum TemplateType {
83-
SYSTEM,
84-
BUILTIN
83+
SYSTEM, /*routing, system vm template*/
84+
BUILTIN /*buildin template*/
8585
}
8686

8787
public static enum StoragePoolType {

server/src/com/cloud/server/ManagementServerImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@
231231
import com.cloud.storage.SnapshotVO;
232232
import com.cloud.storage.Storage;
233233
import com.cloud.storage.Storage.ImageFormat;
234+
import com.cloud.storage.Storage.TemplateType;
234235
import com.cloud.storage.StorageManager;
235236
import com.cloud.storage.StoragePoolHostVO;
236237
import com.cloud.storage.StoragePoolVO;
@@ -3723,7 +3724,7 @@ public List<VolumeVO> searchForVolumes(ListVolumesCmd cmd) throws InvalidParamet
37233724
for(VolumeVO v:allVolumes)
37243725
{
37253726
VMTemplateVO template = _templateDao.findById(v.getTemplateId());
3726-
if(template!=null && template.getUniqueName().startsWith("routing"))
3727+
if(template!=null && (template.getTemplateType() == TemplateType.SYSTEM))
37273728
{
37283729
//do nothing
37293730
}

server/src/com/cloud/template/TemplateManagerImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -953,10 +953,10 @@ public List<VMTemplateStoragePoolVO> getUnusedTemplatesInPool(StoragePoolVO pool
953953
List<VMTemplateStoragePoolVO> allTemplatesInPool = _tmpltPoolDao.listByPoolId(pool.getId());
954954

955955
for (VMTemplateStoragePoolVO templatePoolVO : allTemplatesInPool) {
956-
VMTemplateVO template = _tmpltDao.findById(templatePoolVO.getTemplateId());
957-
956+
VMTemplateVO template = _tmpltDao.findByIdIncludingRemoved(templatePoolVO.getTemplateId());
957+
958958
// If this is a routing template, consider it in use
959-
if (template.getUniqueName().equals("routing")) {
959+
if (template.getTemplateType() == TemplateType.SYSTEM) {
960960
continue;
961961
}
962962

@@ -976,7 +976,7 @@ public List<VMTemplateStoragePoolVO> getUnusedTemplatesInPool(StoragePoolVO pool
976976
@Override
977977
public void evictTemplateFromStoragePool(VMTemplateStoragePoolVO templatePoolVO) {
978978
StoragePoolVO pool = _poolDao.findById(templatePoolVO.getPoolId());
979-
VMTemplateVO template = _tmpltDao.findById(templatePoolVO.getTemplateId());
979+
VMTemplateVO template = _tmpltDao.findByIdIncludingRemoved(templatePoolVO.getTemplateId());
980980

981981
long hostId;
982982
List<StoragePoolHostVO> poolHostVOs = _poolHostDao.listByPoolId(pool.getId());
@@ -1096,7 +1096,7 @@ public Long createInZone(long zoneId, long userId, String displayText,
10961096

10971097
@Override
10981098
public boolean templateIsDeleteable(VMTemplateHostVO templateHostRef) {
1099-
VMTemplateVO template = _tmpltDao.findById(templateHostRef.getTemplateId());
1099+
VMTemplateVO template = _tmpltDao.findByIdIncludingRemoved(templateHostRef.getTemplateId());
11001100
long templateId = template.getId();
11011101
HostVO secondaryStorageHost = _hostDao.findById(templateHostRef.getHostId());
11021102
long zoneId = secondaryStorageHost.getDataCenterId();
@@ -1284,7 +1284,7 @@ public boolean deleteTemplate(DeleteTemplateCmd cmd) {
12841284
throw new InvalidParameterValueException("Please specify a valid template.");
12851285
}
12861286

1287-
if (template.getUniqueName().equals("routing")) {
1287+
if (template.getTemplateType() == TemplateType.SYSTEM) {
12881288
throw new InvalidParameterValueException("The DomR template cannot be deleted.");
12891289
}
12901290

0 commit comments

Comments
 (0)