Liran Zelkha has uploaded a new change for review. Change subject: restapi: Remove dynamic queries from storage REST API ......................................................................
restapi: Remove dynamic queries from storage REST API Dynamic search is extremely slow. This patch removes the usage of dynamic search from the Storage Rest API. Change-Id: I501058a88005df117a492ce8ece3f16ddbbd1e66 Signed-off-by: [email protected] <[email protected]> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResourceTest.java 4 files changed, 43 insertions(+), 24 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/26303/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java index 13a1de2..35131f8 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java @@ -1,5 +1,7 @@ package org.ovirt.engine.api.restapi.resource; +import static org.ovirt.engine.api.restapi.resource.BackendStorageDomainsResource.SUB_COLLECTIONS; + import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -16,11 +18,12 @@ import org.ovirt.engine.api.model.VMs; import org.ovirt.engine.api.resource.AssignedPermissionsResource; import org.ovirt.engine.api.resource.DisksResource; +import org.ovirt.engine.api.resource.FilesResource; import org.ovirt.engine.api.resource.ImagesResource; import org.ovirt.engine.api.resource.RemovableStorageDomainContentsResource; -import org.ovirt.engine.api.resource.FilesResource; import org.ovirt.engine.api.resource.StorageDomainResource; import org.ovirt.engine.api.resource.StorageDomainServerConnectionsResource; +import org.ovirt.engine.api.restapi.util.StorageDomainHelper; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.ExtendSANStorageDomainParameters; import org.ovirt.engine.core.common.action.StorageDomainManagementParameter; @@ -28,20 +31,16 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus; -import org.ovirt.engine.core.common.businessentities.VDS; - import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; -import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.common.businessentities.VdsStatic; import org.ovirt.engine.core.common.queries.GetDeviceListQueryParameters; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.NameQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.common.businessentities.StorageType; -import org.ovirt.engine.api.restapi.util.StorageDomainHelper; - -import static org.ovirt.engine.api.restapi.resource.BackendStorageDomainsResource.SUB_COLLECTIONS; public class BackendStorageDomainResource extends AbstractBackendSubResource<StorageDomain, org.ovirt.engine.core.common.businessentities.StorageDomain> implements StorageDomainResource { @@ -204,10 +203,12 @@ return storageDomain.getHost().isSetId() ? new Guid(storageDomain.getHost().getId()) : storageDomain.getHost().isSetName() - ? getEntity(VDS.class, - SearchType.VDS, - "Hosts: name=" + storageDomain.getHost().getName()).getId() + ? getEntity(VdsStatic.class, + VdcQueryType.GetVdsStaticByName, + new NameQueryParameters(storageDomain.getHost().getName()), + "Hosts: name=" + storageDomain.getHost().getName()).getId() : null; + } private ExtendSANStorageDomainParameters createParameters(Guid storageDomainId, List<LogicalUnit> newLuns, boolean force) { diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java index 50b505c..fcfbb7a 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java @@ -34,12 +34,13 @@ import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; -import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VdsStatic; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetDeviceListQueryParameters; import org.ovirt.engine.core.common.queries.GetExistingStorageDomainListParameters; import org.ovirt.engine.core.common.queries.GetLunsByVgIdParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.NameQueryParameters; import org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -361,9 +362,10 @@ return storageDomain.getHost().isSetId() ? new Guid(storageDomain.getHost().getId()) : storageDomain.getHost().isSetName() - ? getEntity(VDS.class, - SearchType.VDS, - "Hosts: name=" + storageDomain.getHost().getName()).getId() + ? getEntity(VdsStatic.class, + VdcQueryType.GetVdsStaticByName, + new NameQueryParameters(storageDomain.getHost().getName()), + "Hosts: name=" + storageDomain.getHost().getName()).getId() : null; } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java index a9a450e..905999d 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java @@ -7,8 +7,8 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; -import org.ovirt.engine.core.common.businessentities.VDS; -import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.businessentities.VdsStatic; +import org.ovirt.engine.core.common.queries.NameQueryParameters; import org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; @@ -64,8 +64,9 @@ return host.isSetId() ? new Guid(host.getId()) : host.isSetName() - ? getEntity(VDS.class, - SearchType.VDS, + ? getEntity(VdsStatic.class, + VdcQueryType.GetVdsStaticByName, + new NameQueryParameters(host.getName()), "Hosts: name=" + host.getName()).getId() : null; } diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResourceTest.java index 9272f3d..b26612b 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResourceTest.java @@ -26,11 +26,13 @@ import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VdsStatic; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetDeviceListQueryParameters; import org.ovirt.engine.core.common.queries.GetExistingStorageDomainListParameters; import org.ovirt.engine.core.common.queries.GetLunsByVgIdParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.NameQueryParameters; import org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -153,10 +155,12 @@ @Test public void testRemoveWithHostName() throws Exception { setUpGetEntityExpectations(); - VDS host = BackendHostsResourceTest.setUpEntityExpectations(control.createMock(VDS.class), 1); - setUpGetEntityExpectations("Hosts: name=" + NAMES[1], - SearchType.VDS, - host); + + setUpGetEntityExpectations(VdcQueryType.GetVdsStaticByName, + NameQueryParameters.class, + new String[] { "Name" }, + new Object[] { NAMES[1] }, + setUpVDStatic(1)); setUriInfo(setUpActionExpectations(VdcActionType.RemoveStorageDomain, RemoveStorageDomainParameters.class, @@ -289,7 +293,11 @@ Host host = new Host(); host.setName(NAMES[0]); - setUpGetEntityExpectations("Hosts: name=" + NAMES[0], SearchType.VDS, setUpVDS(0)); + setUpGetEntityExpectations(VdcQueryType.GetVdsStaticByName, + NameQueryParameters.class, + new String[] { "Name" }, + new Object[] { NAMES[0] }, + setUpVDStatic(0)); doTestAddStorageDomain(0, host, false); } @@ -709,6 +717,13 @@ return vds; } + protected VdsStatic setUpVDStatic(int index) { + VdsStatic vds = new VdsStatic(); + vds.setId(GUIDS[index]); + vds.setVdsName(NAMES[index]); + return vds; + } + @Override protected org.ovirt.engine.core.common.businessentities.StorageDomain getEntity(int index) { return setUpEntityExpectations(control.createMock(org.ovirt.engine.core.common.businessentities.StorageDomain.class), index); -- To view, visit http://gerrit.ovirt.org/26303 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I501058a88005df117a492ce8ece3f16ddbbd1e66 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liran Zelkha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
