From dc3d279272d8499fc590e4fbe5b5d115ef704c5d Mon Sep 17 00:00:00 2001 From: Min Chen Date: Thu, 7 Nov 2013 15:12:43 -0800 Subject: [PATCH] CLOUDSTACK-4833:[Automation][BVT] Template and ISO test cases failing from BVT suite, during LIST api call. --- framework/db/src/com/cloud/dao/EntityManagerImpl.java | 3 ++- server/src/com/cloud/api/ApiDispatcher.java | 6 +++--- utils/src/com/cloud/utils/db/EntityManager.java | 9 +++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/framework/db/src/com/cloud/dao/EntityManagerImpl.java b/framework/db/src/com/cloud/dao/EntityManagerImpl.java index bb493c0b795..74be13c041b 100644 --- a/framework/db/src/com/cloud/dao/EntityManagerImpl.java +++ b/framework/db/src/com/cloud/dao/EntityManagerImpl.java @@ -57,6 +57,7 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager { return dao.findByUuid(uuid); } + @Override public T findByUuidIncludingRemoved(Class entityType, String uuid) { // Finds and returns a unique VO using uuid, null if entity not found in db GenericDao dao = (GenericDao)GenericDaoBase.getDao(entityType); @@ -94,7 +95,7 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager { _name = name; return true; - } + } @Override public boolean start() { diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java index 9672ef1e837..44fb6765a34 100755 --- a/server/src/com/cloud/api/ApiDispatcher.java +++ b/server/src/com/cloud/api/ApiDispatcher.java @@ -33,6 +33,8 @@ import java.util.regex.Matcher; import javax.annotation.PostConstruct; import javax.inject.Inject; +import org.apache.log4j.Logger; + import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.RoleType; @@ -49,7 +51,6 @@ import org.apache.cloudstack.api.EntityReference; import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; -import org.apache.cloudstack.api.Validate; import org.apache.cloudstack.api.command.admin.resource.ArchiveAlertsCmd; import org.apache.cloudstack.api.command.admin.resource.DeleteAlertsCmd; import org.apache.cloudstack.api.command.user.event.ArchiveEventsCmd; @@ -58,7 +59,6 @@ import org.apache.cloudstack.api.command.user.event.ListEventsCmd; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobManager; -import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; @@ -369,7 +369,7 @@ public class ApiDispatcher { for (Class entity : entities) { // For backward compatibility, we search within removed entities and let service layer deal // with removed ones, return empty response or error - Object objVO = s_instance._entityMgr.findByUuid(entity, uuid); + Object objVO = s_instance._entityMgr.findByUuidIncludingRemoved(entity, uuid); if (objVO == null) { continue; } diff --git a/utils/src/com/cloud/utils/db/EntityManager.java b/utils/src/com/cloud/utils/db/EntityManager.java index 49f4f720698..d613d7d5f9a 100644 --- a/utils/src/com/cloud/utils/db/EntityManager.java +++ b/utils/src/com/cloud/utils/db/EntityManager.java @@ -43,6 +43,15 @@ public interface EntityManager { */ public T findByUuid(Class entityType, String uuid); + /** + * Finds a unique entity by uuid string, including those removed entries + * @param entity class + * @param entityType type of entity you're looking for. + * @param uuid the unique id + * @return T if found, null if not. + */ + public T findByUuidIncludingRemoved(Class entityType, String uuid); + /** * Finds an entity by external id which is always String * @param entity class