فهرست منبع

AMBARI-8868. API call used by Install Wizard to retry installation does not work (dlysnichenko)

Lisnichenko Dmitro 10 سال پیش
والد
کامیت
9842b40d2b

+ 10 - 10
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java

@@ -192,6 +192,8 @@ public class HostComponentResourceProvider extends AbstractControllerResourcePro
 
     Set<Resource> resources = new HashSet<Resource>();
     Set<String> requestedIds = getRequestPropertyIds(request, predicate);
+    // We always need host_name for sch
+    requestedIds.add(HOST_COMPONENT_HOST_NAME_PROPERTY_ID);
 
     Set<ServiceComponentHostResponse> responses = getResources(new Command<Set<ServiceComponentHostResponse>>() {
       @Override
@@ -598,19 +600,17 @@ public class HostComponentResourceProvider extends AbstractControllerResourcePro
     Set<Resource> matchingResources = getResources(queryRequest, predicate);
 
     for (Resource queryResource : matchingResources) {
-      if (predicate.evaluate(queryResource)) {
-        Map<String, Object> updateRequestProperties = new HashMap<String, Object>();
+      Map<String, Object> updateRequestProperties = new HashMap<String, Object>();
 
-        // add props from query resource
-        updateRequestProperties.putAll(PropertyHelper.getProperties(queryResource));
+      // add props from query resource
+      updateRequestProperties.putAll(PropertyHelper.getProperties(queryResource));
 
-        // add properties from update request
-        //todo: should we flag value size > 1?
-        if (request.getProperties() != null && request.getProperties().size() != 0) {
-          updateRequestProperties.putAll(request.getProperties().iterator().next());
-        }
-        requests.add(getRequest(updateRequestProperties));
+      // add properties from update request
+      //todo: should we flag value size > 1?
+      if (request.getProperties() != null && request.getProperties().size() != 0) {
+        updateRequestProperties.putAll(request.getProperties().iterator().next());
       }
+      requests.add(getRequest(updateRequestProperties));
     }
 
     RequestStageContainer requestStages = modifyResources(new Command<RequestStageContainer>() {

+ 2 - 2
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java

@@ -268,7 +268,7 @@ public class HostComponentResourceProviderTest {
 
     Set<ServiceComponentHostResponse> nameResponse = new HashSet<ServiceComponentHostResponse>();
     nameResponse.add(new ServiceComponentHostResponse(
-        "Cluster102", "Service100", "Component100", "Host100", "STARTED", "", "", "", null));
+        "Cluster102", "Service100", "Component100", "Host100", "INSTALLED", "", "", "", null));
 
     // set expectations
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
@@ -323,7 +323,7 @@ public class HostComponentResourceProviderTest {
     // update the cluster named Cluster102
     Predicate predicate = new PredicateBuilder().property(
         HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").and().
-        property(HostComponentResourceProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID).equals("Host100").and().
+        property(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID).equals("INSTALLED").and().
         property(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("Component100").toPredicate();
     RequestStatus requestStatus = provider.updateResources(request, predicate);
     Resource responseResource = requestStatus.getRequestResource();