AMBARI-7269. StackAdvisorResourceProvider ignores configurations with array type values
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/59765552 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/59765552 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/59765552 Branch: refs/heads/branch-alerts-dev Commit: 59765552c48ec83ad2a54077dc00e69aecd85e8b Parents: 10dd42e Author: Srimanth Gunturi <sgunt...@hortonworks.com> Authored: Thu Sep 11 17:07:47 2014 -0700 Committer: Srimanth Gunturi <sgunt...@hortonworks.com> Committed: Thu Sep 11 18:19:13 2014 -0700 ---------------------------------------------------------------------- .../internal/StackAdvisorResourceProvider.java | 6 +- .../StackAdvisorResourceProviderTest.java | 76 ++++++++++++++++++++ .../resources/ui/app/styles/application.less | 8 +++ 3 files changed, 87 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/59765552/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java index 40b423e..6ae557d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java @@ -176,9 +176,9 @@ public abstract class StackAdvisorResourceProvider extends ReadOnlyResourceProvi return map; } - private static final String CONFIGURATIONS_PROPERTY_ID = "recommendations/blueprint/configurations/"; + protected static final String CONFIGURATIONS_PROPERTY_ID = "recommendations/blueprint/configurations/"; - private Map<String, Map<String, Map<String, String>>> calculateConfigurations(Request request) { + protected Map<String, Map<String, Map<String, String>>> calculateConfigurations(Request request) { Map<String, Map<String, Map<String, String>>> configurations = new HashMap<String, Map<String, Map<String, String>>>(); Map<String, Object> properties = request.getProperties().iterator().next(); for (String property : properties.keySet()) { @@ -202,7 +202,7 @@ public abstract class StackAdvisorResourceProvider extends ReadOnlyResourceProvi siteMap.put(propertiesProperty, propertiesMap); } - String value = (String) properties.get(property); + String value = properties.get(property).toString(); propertiesMap.put(propertyName, value); } catch (Exception e) { LOG.debug(String.format("Error handling configuration property, name = %s", property), e); http://git-wip-us.apache.org/repos/asf/ambari/blob/59765552/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java new file mode 100644 index 0000000..8c5337b --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java @@ -0,0 +1,76 @@ +/** + * 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.controller.AmbariManagementController; +import org.apache.ambari.server.controller.spi.Request; +import org.apache.ambari.server.controller.spi.Resource; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.apache.ambari.server.controller.internal.StackAdvisorResourceProvider.CONFIGURATIONS_PROPERTY_ID; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + +public class StackAdvisorResourceProviderTest { + + @Test + public void testCalculateConfigurations() throws Exception { + + Map<Resource.Type, String> keyPropertyIds = Collections.emptyMap(); + Set<String> propertyIds = Collections.emptySet(); + AmbariManagementController ambariManagementController = mock(AmbariManagementController.class); + RecommendationResourceProvider provider = new RecommendationResourceProvider(propertyIds, + keyPropertyIds, ambariManagementController); + + Request request = mock(Request.class); + Set<Map<String, Object>> propertiesSet = new HashSet<Map<String, Object>>(); + Map<String, Object> propertiesMap = new HashMap<String, Object>(); + propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/string_prop", "string"); + List<Object> array = new ArrayList<Object>(); + array.add("array1"); + array.add("array2"); + propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/array_prop", array); + propertiesSet.add(propertiesMap); + + doReturn(propertiesSet).when(request).getProperties(); + + Map<String, Map<String, Map<String, String>>> calculatedConfigurations = provider.calculateConfigurations(request); + + assertNotNull(calculatedConfigurations); + assertEquals(1, calculatedConfigurations.size()); + Map<String, Map<String, String>> site = calculatedConfigurations.get("site"); + assertNotNull(site); + assertEquals(1, site.size()); + Map<String, String> properties = site.get("properties"); + assertNotNull(properties); + assertEquals(2, properties.size()); + assertEquals("string", properties.get("string_prop")); + assertEquals("[array1, array2]", properties.get("array_prop")); + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/59765552/contrib/views/slider/src/main/resources/ui/app/styles/application.less ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/styles/application.less b/contrib/views/slider/src/main/resources/ui/app/styles/application.less index f3c4df9..f2d6260 100644 --- a/contrib/views/slider/src/main/resources/ui/app/styles/application.less +++ b/contrib/views/slider/src/main/resources/ui/app/styles/application.less @@ -636,6 +636,14 @@ a { padding-right: 5px; resize: none; } + textarea[disabled] { + cursor: not-allowed; + background-color: #eeeeee; + } + input[disabled] { + cursor: not-allowed; + background-color: #eeeeee; + } } }