Merge remote-tracking branch 'origin/trunk' into branch-feature-AMBARI-14714
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/045d9bfe Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/045d9bfe Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/045d9bfe Branch: refs/heads/branch-feature-AMBARI-14714 Commit: 045d9bfe3e62fc68c3879ea2b874fabe11bf1622 Parents: eb6b21c 03273bd Author: Jayush Luniya <jlun...@hortonworks.com> Authored: Tue Oct 10 22:24:45 2017 -0700 Committer: Jayush Luniya <jlun...@hortonworks.com> Committed: Tue Oct 10 22:24:45 2017 -0700 ---------------------------------------------------------------------- .../libraries/script/script.py | 68 ++- ambari-logsearch/ambari-logsearch-web/pom.xml | 11 +- .../flume/FlumeTimelineMetricsSinkTest.java | 27 +- .../AmbariCustomCommandExecutionHelper.java | 10 + .../AmbariManagementControllerImpl.java | 6 +- .../controller/AmbariManagementHelper.java | 2 +- .../server/controller/KerberosHelper.java | 9 +- .../server/controller/KerberosHelperImpl.java | 244 ++++++---- .../ServiceComponentHostResponse.java | 15 + .../BlueprintConfigurationProcessor.java | 81 +++- .../internal/HostComponentResourceProvider.java | 2 + .../utilities/RemovableIdentities.java | 2 +- .../upgrade/HostVersionOutOfSyncListener.java | 11 + .../ambari/server/metadata/ActionMetadata.java | 1 + .../kerberos/CreateKeytabFilesServerAction.java | 2 +- .../kerberos/CreatePrincipalsServerAction.java | 2 +- .../kerberos/KerberosServerAction.java | 71 ++- .../PrepareDisableKerberosServerAction.java | 3 +- .../PrepareEnableKerberosServerAction.java | 6 +- .../PrepareKerberosIdentitiesServerAction.java | 142 ++++-- .../ambari/server/stack/ExtensionHelper.java | 57 ++- .../apache/ambari/server/stack/StackModule.java | 33 +- .../ambari/server/state/ConfigHelper.java | 164 ++++++- .../ambari/server/state/PropertyInfo.java | 29 ++ .../ambari/server/state/RefreshCommand.java | 52 +++ .../state/RefreshCommandConfiguration.java | 71 +++ .../apache/ambari/server/state/StackInfo.java | 10 + .../ambari/server/state/UpgradeContext.java | 24 +- .../kerberos/AbstractKerberosDescriptor.java | 25 + .../AbstractKerberosDescriptorContainer.java | 18 +- .../kerberos/KerberosIdentityDescriptor.java | 160 +++++++ .../svccomphost/ServiceComponentHostImpl.java | 10 + .../HDFS/2.1.0.2.0/configuration/core-site.xml | 12 + .../HDFS/2.1.0.2.0/configuration/hdfs-site.xml | 3 + .../HDFS/2.1.0.2.0/package/scripts/datanode.py | 13 +- .../HDFS/2.1.0.2.0/package/scripts/hdfs.py | 62 ++- .../2.1.0.2.0/package/scripts/hdfs_client.py | 5 + .../2.1.0.2.0/package/scripts/hdfs_namenode.py | 21 + .../2.1.0.2.0/package/scripts/install_params.py | 6 - .../HDFS/2.1.0.2.0/package/scripts/namenode.py | 21 +- .../2.1.0.2.0/package/scripts/params_linux.py | 2 - .../HDFS/2.1.0.2.0/package/scripts/snamenode.py | 10 + .../HDFS/3.0.0.3.0/configuration/hdfs-site.xml | 6 + .../HDFS/3.0.0.3.0/package/scripts/datanode.py | 13 +- .../HDFS/3.0.0.3.0/package/scripts/hdfs.py | 62 ++- .../3.0.0.3.0/package/scripts/hdfs_client.py | 5 + .../3.0.0.3.0/package/scripts/hdfs_namenode.py | 20 + .../3.0.0.3.0/package/scripts/install_params.py | 6 - .../HDFS/3.0.0.3.0/package/scripts/namenode.py | 21 +- .../3.0.0.3.0/package/scripts/params_linux.py | 2 - .../HDFS/3.0.0.3.0/package/scripts/snamenode.py | 10 + .../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 6 +- .../4.0.0.2.0/package/scripts/params_linux.py | 3 - .../OOZIE/4.2.0.3.0/package/scripts/oozie.py | 5 +- .../4.2.0.3.0/package/scripts/params_linux.py | 3 - .../ZEPPELIN/0.7.0/package/scripts/master.py | 33 +- .../src/main/resources/configuration-schema.xsd | 12 + .../src/main/resources/properties.json | 1 + .../services/HDFS/configuration/hdfs-site.xml | 3 + .../stacks/HDP/2.6/services/DRUID/kerberos.json | 30 -- .../server/controller/KerberosHelperTest.java | 5 - .../BlueprintConfigurationProcessorTest.java | 32 ++ .../utilities/KerberosIdentityCleanerTest.java | 8 +- .../HostVersionOutOfSyncListenerTest.java | 14 +- .../server/stack/StackManagerExtensionTest.java | 31 +- .../ambari/server/state/ConfigHelperTest.java | 76 ++- .../ambari/server/state/PropertyInfoTest.java | 20 + .../ambari/server/state/UpgradeContextTest.java | 60 ++- .../state/kerberos/KerberosDescriptorTest.java | 150 +++++- .../stacks/2.0.6/HBASE/test_hbase_master.py | 2 + .../python/stacks/2.0.6/HDFS/test_datanode.py | 17 + .../python/stacks/2.0.6/HDFS/test_namenode.py | 33 ++ .../stacks/2.6/ZEPPELIN/test_zeppelin_070.py | 101 +--- .../src/test/python/stacks/utils/RMFTestCase.py | 4 +- .../resources/extensions/EXT/0.2/metainfo.xml | 2 +- .../resources/extensions/EXT/0.3/metainfo.xml | 2 +- .../services/HDFS/configuration/hdfs-site.xml | 8 + .../stacks_with_extensions/HDP/0.4/metainfo.xml | 22 + .../HDP/0.4/repos/repoinfo.xml | 63 +++ .../HDP/0.4/services/HBASE/metainfo.xml | 26 ++ .../0.4/services/HDFS/configuration/global.xml | 145 ++++++ .../services/HDFS/configuration/hadoop-env.xml | 223 +++++++++ .../services/HDFS/configuration/hbase-site.xml | 137 ++++++ .../services/HDFS/configuration/hdfs-log4j.xml | 199 ++++++++ .../services/HDFS/configuration/hdfs-site.xml | 396 ++++++++++++++++ .../HDP/0.4/services/HDFS/metainfo.xml | 30 ++ .../0.4/services/HDFS/package/dummy-script.py | 20 + .../HDP/0.4/services/HIVE/metainfo.xml | 26 ++ .../HDP/0.4/services/MAPREDUCE/metainfo.xml | 23 + .../HDP/0.4/services/ZOOKEEPER/metainfo.xml | 26 ++ ambari-web/app/assets/test/tests.js | 2 + ambari-web/app/controllers.js | 1 + .../app/controllers/main/service/info/metric.js | 468 +++++++++++++++++++ .../controllers/main/service/info/summary.js | 449 +----------------- .../service/widgets/create/wizard_controller.js | 2 +- ambari-web/app/messages.js | 1 + ambari-web/app/styles/common.less | 1 + .../app/styles/enhanced_service_dashboard.less | 26 +- .../app/styles/theme/bootstrap-ambari.css | 64 ++- ambari-web/app/styles/top-nav.less | 22 + ambari-web/app/templates/application.hbs | 39 +- .../app/templates/main/service/info/metrics.hbs | 104 +++++ .../app/templates/main/service/info/summary.hbs | 84 ---- ambari-web/app/templates/main/service/item.hbs | 7 +- ambari-web/app/views.js | 1 + ambari-web/app/views/main/service/info/menu.js | 7 + .../app/views/main/service/info/metrics_view.js | 290 ++++++++++++ .../app/views/main/service/info/summary.js | 315 ++----------- ambari-web/app/views/main/service/item.js | 6 + .../main/service/info/metric_test.js | 110 +++++ .../main/service/info/summary_test.js | 76 --- .../main/service/info/metrics_view_test.js | 334 +++++++++++++ .../views/main/service/info/summary_test.js | 281 +---------- .../savedQueries/SavedQueryService.java | 46 +- .../resources/ui/app/routes/queries/query.js | 95 ++-- .../resources/ui/app/services/saved-queries.js | 21 + 116 files changed, 4817 insertions(+), 1700 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentHostResponse.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java ---------------------------------------------------------------------- diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java index 8f1dc7c,6708560..696d395 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java @@@ -83,28 -80,39 +83,29 @@@ public class HostComponentResourceProvi // ----- Property ID constants --------------------------------------------- // Host Components - public static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "cluster_name"); - public static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "service_name"); - public static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "component_name"); - public static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "display_name"); - public static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "host_name"); - public static final String HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "public_host_name"); - public static final String HOST_COMPONENT_STATE_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "state"); - public static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "desired_state"); - public static final String HOST_COMPONENT_VERSION_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "version"); - public static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "desired_stack_id"); - public static final String HOST_COMPONENT_DESIRED_REPOSITORY_VERSION - = PropertyHelper.getPropertyId("HostRoles", "desired_repository_version"); - public static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "actual_configs"); - public static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "stale_configs"); - public static final String HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "reload_configs"); - public static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID - = PropertyHelper.getPropertyId("HostRoles", "desired_admin_state"); - public static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID - = "HostRoles/maintenance_state"; - public static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = "HostRoles/upgrade_state"; + public static final String HOST_COMPONENT_CLUSTER_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_id"; + public static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_name"; + public static final String HOST_COMPONENT_SERVICE_GROUP_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_id"; + public static final String HOST_COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_name"; + public static final String HOST_COMPONENT_SERVICE_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_id"; + public static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_name"; + public static final String HOST_COMPONENT_SERVICE_TYPE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_type"; + public static final String HOST_COMPONENT_HOST_COMPONENT_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "id"; + public static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "component_name"; + public static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "display_name"; + public static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "host_name"; + public static final String HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "public_host_name"; + public static final String HOST_COMPONENT_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "state"; + public static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_state"; + public static final String HOST_COMPONENT_VERSION_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "version"; + public static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_stack_id"; + public static final String HOST_COMPONENT_DESIRED_REPOSITORY_VERSION = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_repository_version"; + public static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "actual_configs"; + public static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stale_configs"; ++ public static final String HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "reload_configs"); + public static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_admin_state"; + public static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "maintenance_state"; + public static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "upgrade_state"; //Parameters from the predicate private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID = "params/run_smoke_test"; @@@ -246,26 -222,36 +247,27 @@@ for (ServiceComponentHostResponse response : responses) { Resource resource = new ResourceImpl(Resource.Type.HostComponent); - setResourceProperty(resource, HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, - response.getClusterName(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID, - response.getServiceName(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, - response.getComponentName(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID, - response.getDisplayName(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_HOST_NAME_PROPERTY_ID, - response.getHostname(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID, - response.getPublicHostname(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_STATE_PROPERTY_ID, - response.getLiveState(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, - response.getDesiredState(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_VERSION_PROPERTY_ID, response.getVersion(), - requestedIds); - setResourceProperty(resource, HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID, - response.getDesiredStackVersion(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID, - response.getActualConfigs(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID, - response.isStaleConfig(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID, - response.isReloadConfig(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID, - response.getUpgradeState(), requestedIds); - setResourceProperty(resource, HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, - response.getDesiredRepositoryVersion(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, response.getClusterName(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_CLUSTER_ID_PROPERTY_ID, response.getClusterId(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_SERVICE_GROUP_ID_PROPERTY_ID, response.getServiceGroupId(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID, response.getServiceGroupName(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_SERVICE_ID_PROPERTY_ID, response.getServiceId(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID, response.getServiceName(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_SERVICE_TYPE_PROPERTY_ID, response.getServiceType(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_HOST_COMPONENT_ID_PROPERTY_ID, response.getHostComponentId(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, response.getComponentName(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID, response.getDisplayName(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_HOST_NAME_PROPERTY_ID, response.getHostname(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID, response.getPublicHostname(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_STATE_PROPERTY_ID, response.getLiveState(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, response.getDesiredState(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_VERSION_PROPERTY_ID, response.getVersion(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID, response.getDesiredStackVersion(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID, response.getActualConfigs(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID, response.isStaleConfig(), requestedIds); ++ setResourceProperty(resource, HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID, response.isReloadConfig(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID, response.getUpgradeState(), requestedIds); + setResourceProperty(resource, HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, response.getDesiredRepositoryVersion(), requestedIds); if (response.getAdminState() != null) { setResourceProperty(resource, HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID, http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListener.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/main/resources/properties.json ---------------------------------------------------------------------- diff --cc ambari-server/src/main/resources/properties.json index 3e73217,1d12f83..a995049 --- a/ambari-server/src/main/resources/properties.json +++ b/ambari-server/src/main/resources/properties.json @@@ -57,11 -53,10 +57,12 @@@ "HostRoles/actual_configs", "params/run_smoke_test", "HostRoles/stale_configs", + "HostRoles/reload_configs", "HostRoles/desired_admin_state", "HostRoles/maintenance_state", + "HostRoles/service_id", "HostRoles/service_name", + "HostRoles/service_type", "HostRoles/upgrade_state", "_" ], http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerExtensionTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/045d9bfe/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java ----------------------------------------------------------------------