You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2014/08/26 07:53:05 UTC

[1/3] git commit: AMBARI-7008. Configuration validations for STORM service should be removed

Repository: ambari
Updated Branches:
  refs/heads/trunk fb1e0ca52 -> a80066ae0


AMBARI-7008. Configuration validations for STORM service should be removed


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

Branch: refs/heads/trunk
Commit: 98660b9e3ee43ce3b2083f010ed55c556980527b
Parents: fb1e0ca
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:08:48 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:08:48 2014 -0700

----------------------------------------------------------------------
 .../main/resources/stacks/HDP/2.1/services/stack_advisor.py   | 7 -------
 1 file changed, 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/98660b9e/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
index 5d7a3bc..e4168d7 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
@@ -82,7 +82,6 @@ class HDP21StackAdvisor(HDP206StackAdvisor):
     validator = super(HDP21StackAdvisor, self).validateServiceConfigurations(serviceName)
     if validator is None:
       return {
-        "STORM": ["storm-site", self.validateStormConfigurations],
         "HIVE": ["hive-site", self.validateHiveConfigurations],
         "TEZ": ["tez-site", self.validateTezConfigurations]
       }.get(serviceName, None)
@@ -95,12 +94,6 @@ class HDP21StackAdvisor(HDP206StackAdvisor):
                         {"config-name": 'hive.auto.convert.join.noconditionaltask.size', "message": self.validatorLessThenDefaultValue(properties, recommendedDefaults, 'hive.auto.convert.join.noconditionaltask.size')} ]
     return self.toConfigurationValidationErrors(validationItems, "hive-site")
 
-  def validateStormConfigurations(self, properties, recommendedDefaults):
-    validationItems = [ {"config-name": 'drpc.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'drpc.childopts')},
-                        {"config-name": 'ui.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'ui.childopts')},
-                        {"config-name": 'logviewer.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'logviewer.childopts')} ]
-    return self.toConfigurationValidationErrors(validationItems, "storm-site")
-
   def validateTezConfigurations(self, properties, recommendedDefaults):
     validationItems = [ {"config-name": 'tez.am.resource.memory.mb', "message": self.validatorLessThenDefaultValue(properties, recommendedDefaults, 'tez.am.resource.memory.mb')},
                         {"config-name": 'tez.am.java.opts', "message": self.validateXmxValue(properties, recommendedDefaults, 'tez.am.java.opts')} ]


[3/3] git commit: AMBARI-7010. Recommendation and validation hrefs contain null resource number

Posted by sr...@apache.org.
AMBARI-7010. Recommendation and validation hrefs contain null resource number


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

Branch: refs/heads/trunk
Commit: a80066ae09dc3ccda574b014028a87136573a4c2
Parents: 336a63d
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:25:15 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:41:30 2014 -0700

----------------------------------------------------------------------
 .../stackadvisor/StackAdvisorResponse.java      | 73 ++++++++++++++++++++
 .../commands/StackAdvisorCommand.java           | 10 ++-
 .../recommendations/RecommendationResponse.java | 38 +---------
 .../validations/ValidationResponse.java         | 15 +---
 .../RecommendationResourceProvider.java         |  4 +-
 .../internal/ValidationResourceProvider.java    |  4 +-
 .../commands/StackAdvisorCommandTest.java       |  6 +-
 .../RecommendationResourceProviderTest.java     | 31 +++++++++
 .../ValidationResourceProviderTest.java         | 70 +++++++++++++++++++
 9 files changed, 194 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
new file mode 100644
index 0000000..b6d7de7
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
@@ -0,0 +1,73 @@
+/**
+ * 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.stackadvisor;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * Abstract stack advisor response POJO.
+ */
+public abstract class StackAdvisorResponse {
+
+  private int id;
+
+  @JsonProperty("Versions")
+  private Version version;
+
+  public int getId() {
+    return id;
+  }
+
+  public void setId(int id) {
+    this.id = id;
+  }
+
+  public Version getVersion() {
+    return version;
+  }
+
+  public void setVersion(Version version) {
+    this.version = version;
+  }
+
+  public static class Version {
+    @JsonProperty("stack_name")
+    private String stackName;
+
+    @JsonProperty("stack_version")
+    private String stackVersion;
+
+    public String getStackName() {
+      return stackName;
+    }
+
+    public void setStackName(String stackName) {
+      this.stackName = stackName;
+    }
+
+    public String getStackVersion() {
+      return stackVersion;
+    }
+
+    public void setStackVersion(String stackVersion) {
+      this.stackVersion = stackVersion;
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
index 81d4605..bc98c4c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
@@ -42,6 +42,7 @@ import org.apache.ambari.server.api.services.Request;
 import org.apache.ambari.server.api.services.StacksService.StackUriInfo;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.commons.collections.CollectionUtils;
@@ -58,7 +59,7 @@ import org.codehaus.jackson.node.TextNode;
 /**
  * Parent for all commands.
  */
-public abstract class StackAdvisorCommand<T> extends BaseService {
+public abstract class StackAdvisorCommand<T extends StackAdvisorResponse> extends BaseService {
 
   /**
    * Type of response object provided by extending classes when
@@ -233,7 +234,7 @@ public abstract class StackAdvisorCommand<T> extends BaseService {
       String result = FileUtils.readFileToString(new File(requestDirectory, getResultFileName()));
 
       T response = this.mapper.readValue(result, this.type);
-      return updateResponse(request, response);
+      return updateResponse(request, setRequestId(response));
     } catch (Exception e) {
       String message = "Error occured during stack advisor command invocation";
       LOG.warn(message, e);
@@ -243,6 +244,11 @@ public abstract class StackAdvisorCommand<T> extends BaseService {
 
   protected abstract T updateResponse(StackAdvisorRequest request, T response);
 
+  private T setRequestId(T response) {
+    response.setId(requestId);
+    return response;
+  }
+
   /**
    * Create request id directory for each call
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
index a34291c..1796f9a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
@@ -21,15 +21,13 @@ package org.apache.ambari.server.api.services.stackadvisor.recommendations;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
 import org.codehaus.jackson.annotate.JsonProperty;
 
 /**
  * Recommendation response POJO.
  */
-public class RecommendationResponse {
-
-  @JsonProperty("Versions")
-  private Version version;
+public class RecommendationResponse extends StackAdvisorResponse {
 
   @JsonProperty
   private Set<String> hosts;
@@ -40,14 +38,6 @@ public class RecommendationResponse {
   @JsonProperty
   private Recommendation recommendations;
 
-  public Version getVersion() {
-    return version;
-  }
-
-  public void setVersion(Version version) {
-    this.version = version;
-  }
-
   public Set<String> getHosts() {
     return hosts;
   }
@@ -72,30 +62,6 @@ public class RecommendationResponse {
     this.recommendations = recommendations;
   }
 
-  public static class Version {
-    @JsonProperty("stack_name")
-    private String stackName;
-
-    @JsonProperty("stack_version")
-    private String stackVersion;
-
-    public String getStackName() {
-      return stackName;
-    }
-
-    public void setStackName(String stackName) {
-      this.stackName = stackName;
-    }
-
-    public String getStackVersion() {
-      return stackVersion;
-    }
-
-    public void setStackVersion(String stackVersion) {
-      this.stackVersion = stackVersion;
-    }
-  }
-
   public static class Recommendation {
     @JsonProperty
     private Blueprint blueprint;

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
index 145bcd9..d6be483 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
@@ -20,28 +20,17 @@ package org.apache.ambari.server.api.services.stackadvisor.validations;
 
 import java.util.Set;
 
-import org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse.Version;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
 import org.codehaus.jackson.annotate.JsonProperty;
 
 /**
  * Validation response POJO.
  */
-public class ValidationResponse {
-
-  @JsonProperty("Versions")
-  private Version version;
+public class ValidationResponse extends StackAdvisorResponse {
 
   @JsonProperty
   private Set<ValidationItem> items;
 
-  public Version getVersion() {
-    return version;
-  }
-
-  public void setVersion(Version version) {
-    this.version = version;
-  }
-
   public Set<ValidationItem> getItems() {
     return items;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
index 3e5aef4..0463076 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
@@ -50,7 +50,7 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
 public class RecommendationResourceProvider extends StackAdvisorResourceProvider {
 
   protected static final String RECOMMENDATION_ID_PROPERTY_ID = PropertyHelper.getPropertyId(
-      "Recommendations", "id");
+      "Recommendation", "id");
 
   protected static final String HOSTS_PROPERTY_ID = "hosts";
   protected static final String SERVICES_PROPERTY_ID = "services";
@@ -101,7 +101,7 @@ public class RecommendationResourceProvider extends StackAdvisorResourceProvider
       public Resource invoke() throws AmbariException {
 
         Resource resource = new ResourceImpl(Resource.Type.Recommendation);
-        setResourceProperty(resource, RECOMMENDATION_ID_PROPERTY_ID, "1", getPropertyIds());
+        setResourceProperty(resource, RECOMMENDATION_ID_PROPERTY_ID, response.getId(), getPropertyIds());
         setResourceProperty(resource, STACK_NAME_PROPERTY_ID, response.getVersion().getStackName(),
             getPropertyIds());
         setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, response.getVersion()

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
index bab1473..017abae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
@@ -49,7 +49,7 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
 public class ValidationResourceProvider extends StackAdvisorResourceProvider {
 
   protected static final String VALIDATION_ID_PROPERTY_ID = PropertyHelper.getPropertyId(
-      "Validations", "id");
+      "Validation", "id");
   protected static final String VALIDATE_PROPERTY_ID = "validate";
 
   protected static final String ITEMS_PROPERTY_ID = "items";
@@ -93,7 +93,7 @@ public class ValidationResourceProvider extends StackAdvisorResourceProvider {
       public Resource invoke() throws AmbariException {
 
         Resource resource = new ResourceImpl(Resource.Type.Validation);
-        setResourceProperty(resource, VALIDATION_ID_PROPERTY_ID, "1", getPropertyIds());
+        setResourceProperty(resource, VALIDATION_ID_PROPERTY_ID, response.getId(), getPropertyIds());
         setResourceProperty(resource, STACK_NAME_PROPERTY_ID, response.getVersion().getStackName(), getPropertyIds());
         setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, response.getVersion().getStackVersion(), getPropertyIds());
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
index cf792ff..1a19c46 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
@@ -41,6 +41,7 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest.StackAdvisorRequestBuilder;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
 import org.apache.ambari.server.api.services.stackadvisor.commands.StackAdvisorCommand.StackAdvisorData;
 import org.apache.commons.io.FileUtils;
@@ -150,7 +151,7 @@ public class StackAdvisorCommandTest {
     final String testResourceString = String.format("{\"type\": \"%s\"}", expected);
     final File recommendationsDir = temp.newFolder("recommendationDir");
     String stackAdvisorScript = "echo";
-    final int requestId = 0;
+    final int requestId = 2;
     StackAdvisorRunner saRunner = mock(StackAdvisorRunner.class);
     AmbariMetaInfo metaInfo = mock(AmbariMetaInfo.class);
     doReturn(Collections.emptyList()).when(metaInfo).getStackParentVersions(anyString(), anyString());
@@ -180,6 +181,7 @@ public class StackAdvisorCommandTest {
     TestResource result = command.invoke(request);
 
     assertEquals(expected, result.getType());
+    assertEquals(requestId, result.getId());
   }
 
   @Test
@@ -260,7 +262,7 @@ public class StackAdvisorCommandTest {
     }
   }
 
-  public static class TestResource {
+  public static class TestResource extends StackAdvisorResponse {
     @JsonProperty
     private String type;
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
new file mode 100644
index 0000000..1810efa
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
@@ -0,0 +1,31 @@
+/**
+ * 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.controller.internal;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class RecommendationResourceProviderTest {
+
+  @Test
+  public void testCreateResources() throws Exception {
+
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
new file mode 100644
index 0000000..cdbf2d7
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
@@ -0,0 +1,70 @@
+/**
+ * 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.controller.internal;
+
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.validations.ValidationResponse;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+import static org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse.Version;
+import static org.mockito.Mockito.*;
+import static org.junit.Assert.*;
+
+public class ValidationResourceProviderTest {
+
+  @Test
+  public void testCreateResources_checkRequestId() throws Exception {
+    Map<Resource.Type, String> keyPropertyIds = Collections.emptyMap();
+    Set<String> propertyIds = Collections.singleton(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
+    AmbariManagementController ambariManagementController = mock(AmbariManagementController.class);
+    ValidationResourceProvider provider = spy(new ValidationResourceProvider(propertyIds,
+        keyPropertyIds, ambariManagementController));
+    StackAdvisorRequest stackAdvisorRequest = mock(StackAdvisorRequest.class);
+    Request request = mock(Request.class);
+    doReturn(stackAdvisorRequest).when(provider).prepareStackAdvisorRequest(request);
+
+    StackAdvisorHelper saHelper = mock(StackAdvisorHelper.class);
+
+    ValidationResponse response = mock(ValidationResponse.class);
+    Version version = mock(Version.class);
+    doReturn(3).when(response).getId();
+    doReturn(version).when(response).getVersion();
+    doReturn(response).when(saHelper).validate(any(StackAdvisorRequest.class));
+    ValidationResourceProvider.init(saHelper);
+
+    RequestStatus status = provider.createResources(request);
+
+    Set<Resource> associatedResources = status.getAssociatedResources();
+    assertNotNull(associatedResources);
+    assertEquals(1, associatedResources.size());
+    Resource resource = associatedResources.iterator().next();
+    Object requestId = resource.getPropertyValue(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
+    assertNotNull(requestId);
+    assertEquals(3, requestId);
+  }
+}
\ No newline at end of file


[2/3] git commit: AMBARI-7009. BE: Configs recommendation API generates incorrect host-groups

Posted by sr...@apache.org.
AMBARI-7009. BE: Configs recommendation API generates incorrect host-groups


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

Branch: refs/heads/trunk
Commit: 336a63dac9436d35532135e1e719fa3f8b6ac12f
Parents: 98660b9
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:18:01 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:41:24 2014 -0700

----------------------------------------------------------------------
 .../GetConfigurationRecommnedationCommand.java  |   5 +-
 ...tConfigurationRecommnedationCommandTest.java | 103 +++++++++++++++++++
 2 files changed, 105 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/336a63da/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
index 52df3d0..b20c966 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
@@ -63,10 +63,9 @@ public class GetConfigurationRecommnedationCommand extends
     return response;
   }
 
-  private Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
-
+  protected Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
     Set<HostGroup> resultSet = new HashSet<HostGroup>();
-    for (Map.Entry<String, Set<String>> componentHost : request.getComponentHostsMap().entrySet()) {
+    for (Map.Entry<String, Set<String>> componentHost : request.getHostComponents().entrySet()) {
       String hostGroupName = componentHost.getKey();
       Set<String> components = componentHost.getValue();
       if (hostGroupName != null && components != null) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/336a63da/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
new file mode 100644
index 0000000..1bd66a4
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
@@ -0,0 +1,103 @@
+/**
+ * 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.stackadvisor.commands;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
+import org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse;
+import org.junit.Test;
+
+public class GetConfigurationRecommnedationCommandTest {
+
+  @Test
+  public void testProcessHostGroups() throws Exception {
+    StackAdvisorRunner saRunner = mock(StackAdvisorRunner.class);
+    File file = mock(File.class);
+    AmbariMetaInfo metaInfo = mock(AmbariMetaInfo.class);
+    GetConfigurationRecommnedationCommand command = new GetConfigurationRecommnedationCommand(file, "script", 1, saRunner, metaInfo);
+
+    StackAdvisorRequest request = mock(StackAdvisorRequest.class);
+    Map<String, Set<String>> componentHostGroupMap = new HashMap<String, Set<String>>();
+    Set<String> components1 = new HashSet<String>();
+    components1.add("component1");
+    components1.add("component4");
+    components1.add("component5");
+    componentHostGroupMap.put("group1", components1);
+    Set<String> components2 = new HashSet<String>();
+    components2.add("component2");
+    components2.add("component3");
+    componentHostGroupMap.put("group2", components2);
+    doReturn(componentHostGroupMap).when(request).getHostComponents();
+    Set<RecommendationResponse.HostGroup> hostGroups = command.processHostGroups(request);
+
+    assertNotNull(hostGroups);
+    assertEquals(2, hostGroups.size());
+    Map<String, RecommendationResponse.HostGroup> hostGroupMap =
+        new HashMap<String, RecommendationResponse.HostGroup>();
+    for (RecommendationResponse.HostGroup hostGroup : hostGroups) {
+      hostGroupMap.put(hostGroup.getName(), hostGroup);
+    }
+    RecommendationResponse.HostGroup hostGroup1 = hostGroupMap.get("group1");
+    assertNotNull(hostGroup1);
+    Set<Map<String, String>> host1Components = hostGroup1.getComponents();
+    assertNotNull(host1Components);
+    assertEquals(3, host1Components.size());
+    Set<String> componentNames1 = new HashSet<String>();
+    for (Map<String, String> host1Component : host1Components) {
+      assertNotNull(host1Component);
+      assertEquals(1, host1Component.size());
+      String componentName = host1Component.get("name");
+      assertNotNull(componentName);
+      componentNames1.add(componentName);
+    }
+    assertEquals(3, componentNames1.size());
+    assertTrue(componentNames1.contains("component1"));
+    assertTrue(componentNames1.contains("component4"));
+    assertTrue(componentNames1.contains("component5"));
+    RecommendationResponse.HostGroup hostGroup2 = hostGroupMap.get("group2");
+    assertNotNull(hostGroup2);
+    Set<Map<String, String>> host2Components = hostGroup2.getComponents();
+    assertNotNull(host2Components);
+    assertEquals(2, host2Components.size());
+    Set<String> componentNames2 = new HashSet<String>();
+    for (Map<String, String> host2Component : host2Components) {
+      assertNotNull(host2Component);
+      assertEquals(1, host2Component.size());
+      String componentName = host2Component.get("name");
+      assertNotNull(componentName);
+      componentNames2.add(componentName);
+    }
+    assertEquals(2, componentNames2.size());
+    assertTrue(componentNames2.contains("component2"));
+    assertTrue(componentNames2.contains("component3"));
+  }
+}
\ No newline at end of file