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

Reply via email to