Liron Ar has uploaded a new change for review. Change subject: restapi: add support to regenerate ids when adding vm from configuration ......................................................................
restapi: add support to regenerate ids when adding vm from configuration This patch adds support to regenerate new ids when adding a vm from the configuration. This is done so that the vm could be still added from a provided configuration even if the "original" vm still exists. Change-Id: I9ccf0f61b58ad49aa50d1efe3aa0b9a8bd31da70 Signed-off-by: Liron Aravot <[email protected]> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java 3 files changed, 73 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/22207/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java index d64aff0..f8b967b 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java @@ -44,6 +44,7 @@ protected static final int NO_LIMIT = -1; private static final String CORRELATION_ID = "Correlation-Id"; private static final String ASYNC_CONSTRAINT = "async"; + public static final String REGENERATE_CONSTRAINT = "regenerate"; public static final String FORCE_CONSTRAINT = "force"; protected static final String MAX = "max"; private static final String EXPECT_HEADER = "Expect"; @@ -213,6 +214,10 @@ return getBooleanMatrixConstraint(FORCE_CONSTRAINT); } + protected boolean isRegenerate() { + return getBooleanMatrixConstraint(REGENERATE_CONSTRAINT); + } + protected void badRequest(String message) { throw new WebFaultException(null, message, Response.Status.BAD_REQUEST); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java index bc0e26f..3d95341 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java @@ -201,6 +201,7 @@ ImportVmParameters parameters = new ImportVmParameters(); parameters.setVm(vmConfiguration); parameters.setVdsGroupId(clusterId); + parameters.setImportAsNewEntity(isRegenerate()); return performCreate(VdcActionType.ImportVmFromConfiguration, parameters, new QueryIdResolver<Guid>(VdcQueryType.GetVmByVmId, IdQueryParameters.class)); diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java index dd034fa..da3c0f4 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java @@ -635,8 +635,57 @@ } @Test + public void testAddFromConfigurationWithRegenerateTrue() throws Exception { + setUriInfo(setUpGetMatrixConstraintsExpectations(BackendHostResource.REGENERATE_CONSTRAINT, + true, + "true", + setUpBasicUriExpectations(), + false)); + setUpGetPayloadExpectations(1, 3); + setUpGetBallooningExpectations(1, 3); + setUpGetCertuficateExpectations(1, 3); + setUpGetConsoleExpectations(new int[] { 3 }); + setUpGetVirtioScsiExpectations(new int[] { 3 }); + VM model = createModel(null); + org.ovirt.engine.core.common.businessentities.VM returnedVM = getEntity(2); + model.setInitialization(new Initialization()); + model.getInitialization().setConfiguration(new Configuration()); + model.getInitialization().getConfiguration().setData("asdasdasd"); + model.getInitialization().getConfiguration().setType("ovf"); + setUpGetEntityExpectations(VdcQueryType.GetVmFromConfiguration, + GetVmFromConfigurationQueryParameters.class, + new String[] { "VmConfiguration", "ConfigurationType" }, + new Object[] { model.getInitialization().getConfiguration().getData(), ConfigurationType.OVF }, + returnedVM); + Guid newId = GUIDS[3]; + setUpCreationExpectations(VdcActionType.ImportVmFromConfiguration, + ImportVmParameters.class, + new String[] { "Vm", "VdsGroupId", "ImportAsNewEntity" }, + new Object[] { returnedVM, Guid.createGuidFromString(model.getCluster().getId()), true}, + true, + true, + newId, + VdcQueryType.GetVmByVmId, + IdQueryParameters.class, + new String[] { "Id" }, + new Object[] { newId }, + getEntityWithProvidedId(2, newId)); + Response response = collection.add(model); + assertEquals(201, response.getStatus()); + assertTrue(response.getEntity() instanceof VM); + VM queriedVm = (VM) response.getEntity(); + assertEquals(newId.toString(), queriedVm.getId()); + queriedVm.setId(GUIDS[2].toString()); + verifyModel((VM) response.getEntity(), 2); + } + + @Test public void testAddFromConfiguration() throws Exception { - setUriInfo(setUpBasicUriExpectations()); + setUriInfo(setUpGetMatrixConstraintsExpectations(BackendHostResource.REGENERATE_CONSTRAINT, + false, + "false", + setUpBasicUriExpectations(), + false)); setUpGetPayloadExpectations(1, 2); setUpGetBallooningExpectations(1, 2); setUpGetCertuficateExpectations(1, 2); @@ -655,8 +704,8 @@ returnedVM); setUpCreationExpectations(VdcActionType.ImportVmFromConfiguration, ImportVmParameters.class, - new String[] { "Vm", "VdsGroupId" }, - new Object[] { returnedVM, Guid.createGuidFromString(model.getCluster().getId()) }, + new String[] { "Vm", "VdsGroupId", "ImportAsNewEntity"}, + new Object[] { returnedVM, Guid.createGuidFromString(model.getCluster().getId()), false}, true, true, GUIDS[2], @@ -1184,8 +1233,8 @@ } static org.ovirt.engine.core.common.businessentities.VM setUpEntityExpectations( - org.ovirt.engine.core.common.businessentities.VM entity, VmStatistics statistics, int index) { - expect(entity.getId()).andReturn(GUIDS[index]).anyTimes(); + org.ovirt.engine.core.common.businessentities.VM entity, VmStatistics statistics, int index, Guid vmId) { + expect(entity.getId()).andReturn(vmId).anyTimes(); expect(entity.getVdsGroupId()).andReturn(GUIDS[2]).anyTimes(); expect(entity.getName()).andReturn(NAMES[index]).anyTimes(); expect(entity.getVmDescription()).andReturn(DESCRIPTIONS[index]).anyTimes(); @@ -1199,6 +1248,11 @@ expect(entity.getRunOnVdsName()).andReturn(NAMES[NAMES.length -1]).anyTimes(); setUpStatisticalEntityExpectations(entity, statistics); return entity; + } + + static org.ovirt.engine.core.common.businessentities.VM setUpEntityExpectations( + org.ovirt.engine.core.common.businessentities.VM entity, VmStatistics statistics, int index) { + return setUpEntityExpectations(entity, statistics, index, GUIDS[index]); } static org.ovirt.engine.core.common.businessentities.VmTemplate setUpEntityExpectations( @@ -1304,6 +1358,14 @@ index); } + protected org.ovirt.engine.core.common.businessentities.VM getEntityWithProvidedId(int index, Guid vmId) { + return setUpEntityExpectations( + control.createMock(org.ovirt.engine.core.common.businessentities.VM.class), + control.createMock(VmStatistics.class), + index, + vmId); + } + protected org.ovirt.engine.core.common.businessentities.VmTemplate getTemplateEntity(int index) { return setUpEntityExpectations( control.createMock(org.ovirt.engine.core.common.businessentities.VmTemplate.class), -- To view, visit http://gerrit.ovirt.org/22207 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9ccf0f61b58ad49aa50d1efe3aa0b9a8bd31da70 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Ar <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
