diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 136dc669cfb..b80238daff4 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -5199,7 +5199,7 @@ public class ManagementServerImpl implements ManagementServer { VMTemplateVO template = ApiDBUtils.findTemplateById(volume.getTemplateId()); boolean isExtractable = template != null && template.isExtractable() && !(template.getTemplateType()== Storage.TemplateType.SYSTEM || template.getTemplateType()== Storage.TemplateType.BUILTIN); - if( !isExtractable ){ + if( !isExtractable && account!=null && account.getType() != Account.ACCOUNT_TYPE_ADMIN){ // Global admins are allowed to extract throw new PermissionDeniedException("The volume:" +volumeId+ " is not allowed to be extracted"); } diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index edf9ac0f31d..55af2930360 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -504,7 +504,7 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe throw new InvalidParameterValueException("Unsupported format, could not extract the template"); } } - if(!template.isExtractable()){ + if(!template.isExtractable() && account!=null && account.getType() != Account.ACCOUNT_TYPE_ADMIN){ // Global admins are always allowed to extract throw new PermissionDeniedException("The "+ desc + " is not allowed to be extracted" ); } if (_dcDao.findById(zoneId) == null) {