Moti Asayag has uploaded a new change for review. Change subject: restapi: Attaching network to cluster failure ......................................................................
restapi: Attaching network to cluster failure The server throws an internal server error when add network command is executed with invalid network name. Based on commit 0888726b8e5c39cacaefd5af9242513507d86292 which was reverted. Change-Id: Ia43074bc0819b19873e11ac0203cd518459e6644 Bug-Url: https://bugzilla.redhat.com/961046 Signed-off-by: Moti Asayag <[email protected]> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java 3 files changed, 33 insertions(+), 23 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/14680/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java index 6644080..973e530 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java @@ -377,6 +377,10 @@ throw new WebApplicationException(Response.Status.NOT_FOUND); } + protected void badRequest(String message) { + throw new WebFaultException(null, message, Response.Status.BAD_REQUEST); + } + protected abstract class EntityIdResolver<T> implements IResolver<T, Q> { public abstract Q lookupEntity(T id) throws BackendFailureException; diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java index 8eb94ef..11666e1 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java @@ -35,15 +35,22 @@ @Override public Response add(Network network) { validateParameters(network, "name"); //right now, name is mandatory (future - id alone will be enough) - if (!network.isSetId()) { - network.setId(getNetworkId(network.getName(), clusterId)); + String networkId = getNetworkId(network.getName(), clusterId); + if (networkId == null) { + notFound(Network.class); } + + if (!network.isSetId()) { + network.setId(networkId); + } else if (!network.getId().equals(networkId)) { + badRequest("Network ID provided does not match the ID for network with name: " + network.getName()); + } + org.ovirt.engine.core.common.businessentities.network.Network entity = map(network); return performCreate(addAction, getActionParameters(network, entity), new NetworkIdResolver(network.getName())); } - @Override protected VdcQueryParametersBase getQueryParameters() { diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java index 06d38a0..7c4c426 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java @@ -92,19 +92,15 @@ VDSGroup vdsGroup = setUpVDSGroupExpectations(CLUSTER_ID); setUriInfo(setUpBasicUriExpectations()); - - setUpCreationExpectations(VdcActionType.AttachNetworkToVdsGroup, - AttachNetworkToVdsGroupParameter.class, - new String[] { "VdsGroupId" }, - new Object[] { CLUSTER_ID }, - true, - true, - null, - VdcQueryType.GetAllNetworksByClusterId, - IdQueryParameters.class, - new String[] { "Id" }, - new Object[] { CLUSTER_ID }, - asList(getEntity(0))); + setUpEntityQueryExpectations(1, null); + setUpGetClusterExpectations(); + setUpGetNetworksByDataCenterExpectations(1, null); + setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup, + AttachNetworkToVdsGroupParameter.class, + new String[] { "VdsGroupId" }, + new Object[] { CLUSTER_ID }, + true, + true); Network model = getModel(0); Response response = collection.add(model); assertEquals(201, response.getStatus()); @@ -123,14 +119,17 @@ } private void doTestBadAddNetwork(boolean canDo, boolean success, String detail) throws Exception { - setUpVDSGroupExpectations(CLUSTER_ID); + VDSGroup vdsGroup = setUpVDSGroupExpectations(CLUSTER_ID); - setUriInfo(setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup, - AttachNetworkToVdsGroupParameter.class, - new String[] { "VdsGroupId" }, - new Object[] { CLUSTER_ID }, - canDo, - success)); + setUriInfo(setUpBasicUriExpectations()); + setUpGetClusterExpectations(); + setUpGetNetworksByDataCenterExpectations(1, null); + setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup, + AttachNetworkToVdsGroupParameter.class, + new String[] { "VdsGroupId" }, + new Object[] { CLUSTER_ID }, + canDo, + success); Network model = getModel(0); try { -- To view, visit http://gerrit.ovirt.org/14680 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia43074bc0819b19873e11ac0203cd518459e6644 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
