You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2014/12/18 11:35:50 UTC

ambari git commit: AMBARI-8784 - Unable To Move Manual Task From HOLDING to COMPLETED Via API (tbeerbower)

Repository: ambari
Updated Branches:
  refs/heads/trunk 18e831dea -> 95fe4b028


AMBARI-8784 - Unable To Move Manual Task From HOLDING to COMPLETED Via API (tbeerbower)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/95fe4b02
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/95fe4b02
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/95fe4b02

Branch: refs/heads/trunk
Commit: 95fe4b028ea7a3176a24315cd417b4147d31ff21
Parents: 18e831d
Author: tbeerbower <tb...@hortonworks.com>
Authored: Thu Dec 18 05:35:29 2014 -0500
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Thu Dec 18 05:35:43 2014 -0500

----------------------------------------------------------------------
 .../server/api/services/UpgradeItemService.java | 26 ++++++-
 .../internal/UpgradeItemResourceProvider.java   | 34 ++++-----
 .../api/services/UpgradeItemServiceTest.java    | 78 ++++++++++++++++++++
 3 files changed, 118 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/95fe4b02/ambari-server/src/main/java/org/apache/ambari/server/api/services/UpgradeItemService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UpgradeItemService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UpgradeItemService.java
index 9bfcf36..ab7e125 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UpgradeItemService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UpgradeItemService.java
@@ -67,6 +67,28 @@ public class UpgradeItemService extends BaseService {
         createResourceInstance(id));
   }
 
+  /**
+   * Handles:
+   * PUT /clusters/{clusterId}/upgrades/{upgradeId}/upgrade_groups/{upgradeGroupId}/upgrade_items/{upgradeItemId}
+   *
+   * Change state of existing upgrade item.
+   *
+   * @param body     http body
+   * @param headers  http headers
+   * @param ui       uri info
+   * @param id       the upgrade item id
+   *
+   * @return information regarding the created services
+   */
+  @PUT
+  @Path("{upgradeItemId}")
+  @Produces("text/plain")
+  public Response updateUpgradeItem(String body,
+                                    @Context HttpHeaders headers,
+                                    @Context UriInfo ui, @PathParam("upgradeItemId") Long id) {
+    return handleRequest(headers, body, ui, Request.Type.PUT, createResourceInstance(id));
+  }
+
   @Path("{upgradeItemId}/tasks")
   public TaskService getTasks(
       @Context HttpHeaders headers,
@@ -79,16 +101,14 @@ public class UpgradeItemService extends BaseService {
    * @param upgradeItemId the specific item id
    * @return the resource instance
    */
-  private ResourceInstance createResourceInstance(Long upgradeItemId) {
+  ResourceInstance createResourceInstance(Long upgradeItemId) {
     Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
     mapIds.put(Resource.Type.Cluster, m_clusterName);
     mapIds.put(Resource.Type.Upgrade, m_upgradeId);
     mapIds.put(Resource.Type.UpgradeGroup, m_upgradeGroupId);
-    mapIds.put(Resource.Type.Request, m_upgradeId);
 
     if (null != upgradeItemId) {
       mapIds.put(Resource.Type.UpgradeItem, upgradeItemId.toString());
-      mapIds.put(Resource.Type.Stage, upgradeItemId.toString());
     }
 
     return createResource(Resource.Type.UpgradeItem, mapIds);

http://git-wip-us.apache.org/repos/asf/ambari/blob/95fe4b02/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
index 6286f08..ad6ae1f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
@@ -182,27 +182,27 @@ public class UpgradeItemResourceProvider extends ReadOnlyResourceProvider {
         resultMap.put(entity.getStageId(), r);
       }
 
-      if (null != clusterName) {
-        UpgradeHelper helper = new UpgradeHelper();
-
-        Set<Resource> stages = helper.getStageResources(clusterName, requestId,
-            new ArrayList<Long>(resultMap.keySet()));
-
-        for (Resource stage : stages) {
-          Long l = (Long) stage.getPropertyValue(StageResourceProvider.STAGE_STAGE_ID);
-
-          Resource r = resultMap.get(l);
-          if (null != r) {
-            for (String propertyId : StageResourceProvider.PROPERTY_IDS) {
-              setResourceProperty(r, STAGE_MAPPED_IDS.get(propertyId),
-                stage.getPropertyValue(propertyId), requestPropertyIds);
+      if (!resultMap.isEmpty()) {
+        if (null != clusterName) {
+          UpgradeHelper helper = new UpgradeHelper();
+
+          Set<Resource> stages = helper.getStageResources(clusterName, requestId,
+              new ArrayList<Long>(resultMap.keySet()));
+
+          for (Resource stage : stages) {
+            Long l = (Long) stage.getPropertyValue(StageResourceProvider.STAGE_STAGE_ID);
+
+            Resource r = resultMap.get(l);
+            if (null != r) {
+              for (String propertyId : StageResourceProvider.PROPERTY_IDS) {
+                setResourceProperty(r, STAGE_MAPPED_IDS.get(propertyId),
+                  stage.getPropertyValue(propertyId), requestPropertyIds);
+              }
             }
           }
         }
+        results.addAll(resultMap.values());
       }
-
-      results.addAll(resultMap.values());
-
     }
     return results;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/95fe4b02/ambari-server/src/test/java/org/apache/ambari/server/api/services/UpgradeItemServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/UpgradeItemServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UpgradeItemServiceTest.java
new file mode 100644
index 0000000..68fe87f
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/UpgradeItemServiceTest.java
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.api.services;
+
+import org.apache.ambari.server.api.resources.ResourceInstance;
+import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
+import org.apache.ambari.server.api.services.serializers.ResultSerializer;
+import org.junit.Assert;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.UriInfo;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * UpgradeItemService tests.
+ */
+public class UpgradeItemServiceTest extends BaseServiceTest {
+  public List<ServiceTestInvocation> getTestInvocations() throws Exception {
+    List<ServiceTestInvocation> listInvocations = new ArrayList<ServiceTestInvocation>();
+
+    //updateServices
+    UpgradeItemService service = new TestUpgradeItemService("clusterName", "upgradeId", "upgradeGroupId", 99L);
+    Method m = service.getClass().getMethod("updateUpgradeItem", String.class, HttpHeaders.class, UriInfo.class, Long.class);
+    Object[] args = new Object[] {"body", getHttpHeaders(), getUriInfo(), 99L};
+    listInvocations.add(new ServiceTestInvocation(Request.Type.PUT, service, m, args, "body"));
+
+    return listInvocations;
+  }
+
+  private class TestUpgradeItemService extends UpgradeItemService {
+    private Long m_upgradeItemId;
+
+    private TestUpgradeItemService(String clusterName, String upgradeId, String upgradeGroupId, Long upgradeItemId) {
+      super(clusterName, upgradeId, upgradeGroupId);
+
+      m_upgradeItemId = upgradeItemId;
+    }
+
+    @Override
+    ResourceInstance createResourceInstance(Long upgradeItemId) {
+      Assert.assertEquals(m_upgradeItemId, upgradeItemId);
+      return getTestResource();
+    }
+
+    @Override
+    RequestFactory getRequestFactory() {
+      return getTestRequestFactory();
+    }
+
+    @Override
+    protected RequestBodyParser getBodyParser() {
+      return getTestBodyParser();
+    }
+
+    @Override
+    protected ResultSerializer getResultSerializer() {
+      return getTestResultSerializer();
+    }
+  }
+}
\ No newline at end of file