You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2014/01/23 21:19:55 UTC
[2/2] git commit: AMBARI-4334. Add Request Schedule as an object to
the Request with properties. (mpapirkovskyy)
AMBARI-4334. Add Request Schedule as an object to the Request with properties. (mpapirkovskyy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a0ea66fe
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a0ea66fe
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a0ea66fe
Branch: refs/heads/trunk
Commit: a0ea66fecae19438267467aed0a2a7a661880bc7
Parents: e5d440b
Author: Myroslav Papirkovskyy <mp...@hortonworks.com>
Authored: Thu Jan 23 18:34:23 2014 +0200
Committer: Myroslav Papirkovskyy <mp...@hortonworks.com>
Committed: Thu Jan 23 22:19:49 2014 +0200
----------------------------------------------------------------------
.../resources/RequestResourceDefinition.java | 1 +
.../internal/RequestResourceProvider.java | 14 ++-
.../src/main/resources/properties.json | 3 +-
.../internal/RequestResourceProviderTest.java | 120 +++++++++++++++++++
4 files changed, 132 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a0ea66fe/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RequestResourceDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RequestResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RequestResourceDefinition.java
index 474bf56..a2099a4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RequestResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RequestResourceDefinition.java
@@ -86,6 +86,7 @@ public class RequestResourceDefinition extends BaseResourceDefinition {
private class RequestSourceScheduleHrefPostProcessor implements PostProcessor {
+ @SuppressWarnings("unchecked")
@Override
public void process(Request request, TreeNode<Resource> resultNode, String href) {
StringBuilder sb = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a0ea66fe/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
index d96e841..92d1476 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
@@ -33,6 +33,7 @@ import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.state.Clusters;
import java.util.ArrayList;
@@ -56,8 +57,9 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
protected static final String REQUEST_ID_PROPERTY_ID = "Requests/id";
protected static final String REQUEST_STATUS_PROPERTY_ID = "Requests/request_status";
protected static final String REQUEST_CONTEXT_ID = "Requests/request_context";
- public static final String REQUEST_SOURCE_SCHEDULE_HREF = "Requests/source_schedule_href";
- public static final String REQUEST_SOURCE_SCHEDULE_ID = "Requests/source_schedule_id";
+ public static final String REQUEST_SOURCE_SCHEDULE = "Requests/request_schedule";
+ public static final String REQUEST_SOURCE_SCHEDULE_ID = "Requests/request_schedule/schedule_id";
+ public static final String REQUEST_SOURCE_SCHEDULE_HREF = "Requests/request_schedule/href";
protected static final String REQUEST_TYPE_ID = "Requests/type";
protected static final String REQUEST_INPUTS_ID = "Requests/inputs";
protected static final String REQUEST_TARGET_SERVICE_ID = "Requests/target_service";
@@ -275,7 +277,7 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
return resourceMap.values();
}
- private Resource getRequestResource(org.apache.ambari.server.actionmanager.Request request,
+ private Resource getRequestResource(final org.apache.ambari.server.actionmanager.Request request,
Set<String> requestedPropertyIds) {
Resource resource = new ResourceImpl(Resource.Type.Request);
@@ -290,7 +292,11 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
setResourceProperty(resource, REQUEST_CREATE_TIME_ID, request.getCreateTime(), requestedPropertyIds);
setResourceProperty(resource, REQUEST_START_TIME_ID, request.getStartTime(), requestedPropertyIds);
setResourceProperty(resource, REQUEST_END_TIME_ID, request.getEndTime(), requestedPropertyIds);
- setResourceProperty(resource, REQUEST_SOURCE_SCHEDULE_ID, request.getRequestScheduleId(), requestedPropertyIds);
+ if (request.getRequestScheduleId() != null) {
+ setResourceProperty(resource, REQUEST_SOURCE_SCHEDULE_ID, request.getRequestScheduleId(), requestedPropertyIds);
+ } else {
+ setResourceProperty(resource, REQUEST_SOURCE_SCHEDULE, null, requestedPropertyIds);
+ }
List<HostRoleCommand> commands = request.getCommands();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a0ea66fe/ambari-server/src/main/resources/properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/properties.json b/ambari-server/src/main/resources/properties.json
index ce7292c..1e555c2 100644
--- a/ambari-server/src/main/resources/properties.json
+++ b/ambari-server/src/main/resources/properties.json
@@ -97,8 +97,7 @@
"Requests/cluster_name",
"Requests/request_status",
"Requests/request_context",
- "Requests/source_schedule_id",
- "Requests/source_schedule_href",
+ "Requests/request_schedule",
"Requests/type",
"Requests/inputs",
"Requests/target_service",
http://git-wip-us.apache.org/repos/asf/ambari/blob/a0ea66fe/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
index 6df5de5..e279342 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
@@ -147,6 +147,126 @@ public class RequestResourceProviderTest {
}
@Test
+ public void testGetResourcesWithRequestSchedule() throws Exception {
+ Resource.Type type = Resource.Type.Request;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ ActionManager actionManager = createNiceMock(ActionManager.class);
+ HostRoleCommand hostRoleCommand = createNiceMock(HostRoleCommand.class);
+
+
+ List<HostRoleCommand> hostRoleCommands = new LinkedList<HostRoleCommand>();
+ hostRoleCommands.add(hostRoleCommand);
+
+ org.apache.ambari.server.actionmanager.Request requestMock =
+ createNiceMock(org.apache.ambari.server.actionmanager.Request.class);
+ expect(requestMock.getCommands()).andReturn(hostRoleCommands).anyTimes();
+ expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
+ expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
+ expect(requestMock.getRequestScheduleId()).andReturn(11L).anyTimes();
+
+
+ Capture<Collection<Long>> requestIdsCapture = new Capture<Collection<Long>>();
+
+ // set expectations
+ expect(managementController.getActionManager()).andReturn(actionManager);
+ expect(actionManager.getRequests(capture(requestIdsCapture))).andReturn(Collections.singletonList(requestMock)).anyTimes();
+ expect(hostRoleCommand.getRequestId()).andReturn(100L).anyTimes();
+ expect(hostRoleCommand.getStatus()).andReturn(HostRoleStatus.IN_PROGRESS);
+
+ // replay
+ replay(managementController, actionManager, hostRoleCommand, requestMock);
+
+ ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
+ propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
+ propertyIds.add(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE);
+
+
+ Predicate predicate = new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+ toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ for (Resource resource : resources) {
+ Assert.assertEquals(100L, (long) (Long) resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
+ Assert.assertEquals("IN_PROGRESS", resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
+ Assert.assertEquals(11L, (long) (Long) resource.getPropertyValue(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE_ID));
+ }
+
+ // verify
+ verify(managementController, actionManager, hostRoleCommand);
+ }
+
+ @Test
+ public void testGetResourcesWithoutRequestSchedule() throws Exception {
+ Resource.Type type = Resource.Type.Request;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ ActionManager actionManager = createNiceMock(ActionManager.class);
+ HostRoleCommand hostRoleCommand = createNiceMock(HostRoleCommand.class);
+
+
+ List<HostRoleCommand> hostRoleCommands = new LinkedList<HostRoleCommand>();
+ hostRoleCommands.add(hostRoleCommand);
+
+ org.apache.ambari.server.actionmanager.Request requestMock =
+ createNiceMock(org.apache.ambari.server.actionmanager.Request.class);
+ expect(requestMock.getCommands()).andReturn(hostRoleCommands).anyTimes();
+ expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
+ expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
+ expect(requestMock.getRequestScheduleId()).andReturn(null).anyTimes();
+
+
+ Capture<Collection<Long>> requestIdsCapture = new Capture<Collection<Long>>();
+
+ // set expectations
+ expect(managementController.getActionManager()).andReturn(actionManager);
+ expect(actionManager.getRequests(capture(requestIdsCapture))).andReturn(Collections.singletonList(requestMock)).anyTimes();
+ expect(hostRoleCommand.getRequestId()).andReturn(100L).anyTimes();
+ expect(hostRoleCommand.getStatus()).andReturn(HostRoleStatus.IN_PROGRESS);
+
+ // replay
+ replay(managementController, actionManager, hostRoleCommand, requestMock);
+
+ ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
+ propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
+ propertyIds.add(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE);
+
+
+ Predicate predicate = new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+ toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ for (Resource resource : resources) {
+ Assert.assertEquals(100L, (long) (Long) resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
+ Assert.assertEquals("IN_PROGRESS", resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
+ Assert.assertEquals(null, resource.getPropertyValue(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE));
+ }
+
+ // verify
+ verify(managementController, actionManager, hostRoleCommand);
+ }
+
+ @Test
public void testGetResourcesWithCluster() throws Exception {
Resource.Type type = Resource.Type.Request;