Eli Mesika has uploaded a new change for review.

Change subject: [WIP] API: Adding BackendStepResource and ...
......................................................................

[WIP] API: Adding BackendStepResource and ...

API: Adding BackendStepResource and BackendStepsResource

Change-Id: I5f7b7f51d113600ac9a484645da93cc16a1b6bc6
Signed-off-by: Eli Mesika <[email protected]>
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=872719
---
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java
A 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java
A 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java
A 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java
5 files changed, 268 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/16167/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java
new file mode 100644
index 0000000..78592d4
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java
@@ -0,0 +1,54 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.Action;
+import org.ovirt.engine.api.model.Step;
+import org.ovirt.engine.api.resource.StepResource;
+import org.ovirt.engine.core.common.action.EndExternalStepParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.GetStepByStepIdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendStepResource extends 
AbstractBackendActionableResource<org.ovirt.engine.api.model.Step, 
org.ovirt.engine.core.common.job.Step> implements StepResource{
+
+    private BackendStepsResource parent;
+    public BackendStepsResource getParent() {
+        return parent;
+    }
+
+    public void setParent(BackendStepsResource parent) {
+        this.parent = parent;
+    }
+
+    public BackendStepResource(String id,
+            Class<Step> modelType,
+            Class<org.ovirt.engine.core.common.job.Step> entityType,
+            String[] subCollections) {
+        super(id, modelType, entityType, subCollections);
+    }
+
+    public BackendStepResource(String id, BackendStepsResource 
backendStepsResource) {
+        super(id, org.ovirt.engine.api.model.Step.class, 
org.ovirt.engine.core.common.job.Step.class);
+        this.setParent(parent);
+    }
+
+    @Override
+    protected Step doPopulate(Step model, 
org.ovirt.engine.core.common.job.Step entity) {
+        return model;
+    }
+
+    @Override
+    public Response end(Action action) {
+        return doAction(VdcActionType.EndExternalStep,
+                new EndExternalStepParameters(guid, action.isSucceeded(), 
action.isForce()), action);
+    }
+
+    @Override
+    public Step get() {
+        GetStepByStepIdQueryParameters params = new 
GetStepByStepIdQueryParameters();
+        params.setStepId(guid);
+        return performGet(VdcQueryType.GetStepByStepId, params);
+    }
+
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java
index d82302e..a5d5473 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java
@@ -14,8 +14,8 @@
 import org.ovirt.engine.api.restapi.types.StepMapper;
 import org.ovirt.engine.core.common.action.AddExternalStepParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.GetStepByStepIdQueryParameters;
 import org.ovirt.engine.core.common.queries.GetStepsByJobIdQueryParameters;
-import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -37,17 +37,17 @@
 
     @Override
     public Response add(Step step) {
-        validateParameters(step, "job" , "stepType", "status" , "description");
+        validateParameters(step, "stepType", "status" , "description");
         String id;
         if (step.isSetParentStep()) {
             id = step.getParentStep().getId();
         }
         else {
-            id = step.getJob().getId();
+            id = jobId.toString();
         }
         return performCreate(VdcActionType.AddExternalStep,
-                new AddExternalStepParameters(Guid.createGuidFromString(id), 
step.getDescription(),StepMapper.map(step.getStepType()), 
StepMapper.map(step.getStatus())),
-                new QueryIdResolver<Guid>(VdcQueryType.GetStepByStepId, 
IdQueryParameters.class));
+                new AddExternalStepParameters(Guid.createGuidFromString(id), 
step.getDescription(),StepMapper.map(step.getStepType()), 
StepMapper.map(step.getStatus(), null)),
+                new QueryIdResolver<Guid>(VdcQueryType.GetStepByStepId, 
GetStepByStepIdQueryParameters.class));
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java
new file mode 100644
index 0000000..3c4777c
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java
@@ -0,0 +1,80 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.junit.Test;
+import org.ovirt.engine.api.model.Step;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public abstract class AbstractBackendStepResourceTest
+        extends AbstractBackendSubResourceTest<Step, 
org.ovirt.engine.core.common.job.Step, BackendStepResource> {
+
+    public AbstractBackendStepResourceTest(BackendStepResource stepResource) {
+        super(stepResource);
+    }
+
+    @Test
+    public void testBadGuid() throws Exception {
+        control.replay();
+        try {
+            new BackendStepResource(null, null);
+            fail("expected WebApplicationException");
+        } catch (WebApplicationException wae) {
+            verifyNotFoundException(wae);
+        }
+    }
+
+    @Test
+    public void testGetNotFound() throws Exception {
+        setUriInfo(setUpBasicUriExpectations());
+        setUpGetEntityExpectations(true);
+        control.replay();
+        try {
+            resource.get();
+            fail("expected WebApplicationException");
+        } catch (WebApplicationException wae) {
+            verifyNotFoundException(wae);
+        }
+    }
+
+    @Test
+    public void testGet() throws Exception {
+        setUriInfo(setUpBasicUriExpectations());
+        setUpGetEntityExpectations();
+        control.replay();
+
+        verifyModel(resource.get(), 0);
+    }
+
+    protected void setUpGetEntityExpectations() throws Exception {
+        setUpGetEntityExpectations(false);
+    }
+
+    protected void setUpGetEntityExpectations(boolean notFound) throws 
Exception {
+        setUpGetEntityExpectations(VdcQueryType.GetStepByStepId,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                notFound ? null : getEntity(0));
+    }
+
+    @Override
+    protected org.ovirt.engine.core.common.job.Step getEntity(int index) {
+        int parentIndex = index == 1 ? 0 : 1;
+        org.ovirt.engine.core.common.job.Step step = new 
org.ovirt.engine.core.common.job.Step();
+        step.setId(GUIDS[index]);
+        step.setJobId(GUIDS[parentIndex]);
+        step.setDescription(DESCRIPTIONS[index]);
+        step.setExternal(true);
+        return step;
+    }
+
+    @Override
+    protected void verifyModel(Step model, int index) {
+        super.verifyModel(model, index);
+        assertTrue(model.isExternal());
+        assertNotNull(model.getJob());
+    }
+
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java
new file mode 100644
index 0000000..4d20443
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java
@@ -0,0 +1,10 @@
+package org.ovirt.engine.api.restapi.resource;
+
+
+public class BackendStepResourceTest extends AbstractBackendStepResourceTest {
+
+    public BackendStepResourceTest() {
+        super(new BackendStepResource(GUIDS[0].toString(), new 
BackendStepsResource(GUIDS[1])));
+    }
+}
+
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java
new file mode 100644
index 0000000..981e757
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java
@@ -0,0 +1,119 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.ovirt.engine.api.model.Job;
+import org.ovirt.engine.api.model.Step;
+import org.ovirt.engine.core.common.action.AddExternalJobParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendStepsResourceTest extends 
AbstractBackendCollectionResourceTest<Step, 
org.ovirt.engine.core.common.job.Step, BackendStepsResource> {
+
+   public BackendStepsResourceTest() {
+       super(new BackendStepsResource(GUIDS[1]), null, "");
+    }
+    @Override
+    protected List<Step> getCollection() {
+        return collection.list().getSteps();
+    }
+    @Override
+    protected org.ovirt.engine.core.common.job.Step getEntity(int index) {
+        int jobIndex = index == 0 ? 1 : index -1 ;
+        org.ovirt.engine.core.common.job.Step step = new 
org.ovirt.engine.core.common.job.Step();
+        step.setId(GUIDS[index]);
+        step.setJobId(GUIDS[jobIndex]);
+        step.setDescription(DESCRIPTIONS[index]);
+        step.setExternal(true);
+        return step;
+    }
+
+    @Override
+    protected void setUpQueryExpectations(String query, Object failure) throws 
Exception {
+        assert(query.equals(""));
+
+        setUpEntityQueryExpectations(VdcQueryType.GetAllSteps,
+                                    VdcQueryParametersBase.class,
+                                     new String[] { },
+                                     new Object[] { },
+                                     setUpSteps(),
+                                     failure);
+
+        control.replay();
+    }
+
+    @Override
+    protected void verifyModel(Step model, int index) {
+        super.verifyModel(model, index);
+        assertTrue(model.isExternal());
+    }
+
+    protected List<org.ovirt.engine.core.common.job.Step> setUpSteps() {
+        List<org.ovirt.engine.core.common.job.Step> steps = new 
ArrayList<org.ovirt.engine.core.common.job.Step>();
+        for (int i = 0; i < NAMES.length; i++) {
+            steps.add(getEntity(i));
+        }
+        return steps;
+    }
+
+    private void setUpGetEntityExpectations() throws Exception {
+        setUpGetEntityExpectations(VdcQueryType.GetStepByStepId,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                getEntity(0));
+    }
+
+    @Test
+    @Ignore
+    @Override
+    public void testQuery() throws Exception {
+    }
+
+    @Test
+    public void testAddJob() throws Exception {
+        setUriInfo(setUpBasicUriExpectations());
+        setUpCreationExpectations(VdcActionType.AddExternalStep,
+                                  AddExternalJobParameters.class,
+                                  new String[] { "Job.Description, Job.JobId"},
+                                  new Object[] { DESCRIPTIONS[0], GUIDS[1] },
+                                  true,
+                                  true,
+                                  GUIDS[0],
+                                  VdcQueryType.GetStepByStepId,
+                                  IdQueryParameters.class,
+                                  new String[] { "Id" },
+                                  new Object[] { GUIDS[0] },
+                                  getEntity(0));
+        Step model = new Step();
+        Job job = new Job();
+        job.setId(GUIDS[1].toString());
+        model.setJob(job);
+        model.setDescription(DESCRIPTIONS[0].toString());
+        Response response = collection.add(model);
+        assertEquals(201, response.getStatus());
+        assertTrue(response.getEntity() instanceof Job);
+        verifyModel((Step) response.getEntity(), 0);
+    }
+
+    @Test
+    public void testAddIncompleteParametersNoDescription() throws Exception {
+        Step model = new Step();
+        setUriInfo(setUpBasicUriExpectations());
+        control.replay();
+        try {
+            collection.add(model);
+            fail("expected WebApplicationException on incomplete parameters");
+        } catch (WebApplicationException wae) {
+             verifyIncompleteException(wae, "Job", "add", "description");
+        }
+    }
+}


-- 
To view, visit http://gerrit.ovirt.org/16167
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5f7b7f51d113600ac9a484645da93cc16a1b6bc6
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Eli Mesika <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to