You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@ambari.apache.org by Swapan Shridhar <ss...@hortonworks.com> on 2017/12/07 08:11:28 UTC

Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/
-----------------------------------------------------------

Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.


Bugs: AMBARI-22602
    https://issues.apache.org/jira/browse/AMBARI-22602


Repository: ambari


Description
-------

AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.

This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.

- This enables these parameters to be passed in to the ambari-agent's **command*.json**.


Test cases are tracked in : AMBARI-22603


Diffs
-----

  ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
  ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
  ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
  ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
  ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 


Diff: https://reviews.apache.org/r/64397/diff/1/


Testing
-------

Tested on Live cluster doing following : 
(1). Start Service 
(2). Restart Service 
(3). Stop Service 
(4). Refreshing client configs
(5). Adding Client.


**Snippet from command*.json as part of testing:**
{
...
...
"clusterSettings": {
        "security_enabled": "false",
        "hide_yarn_memory_widget": "false",
        "enable_external_ranger": "false",
        "override_uid": "true",
        "kerberos_domain": "EXAMPLE.COM",
        "one_dir_per_partition": "false",
        "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
        "ignore_groupsusers_create": "false",
        "alerts_repeat_tolerance": "1",
        "namenode_rolling_restart_timeout": "4200",
        "fetch_nonlocal_groups": "true",
        "manage_dirs_on_root": "true",
        "recovery_lifetime_max_count": "1024",
        "agent_mounts_ignore_list": "",
        "ignore_bad_mounts": "false",
        "recovery_window_in_minutes": "60",
        "sysprep_skip_copy_tarballs_hdfs": "false",
        "recovery_type": "AUTO_START",
        "user_group": "hadoop",
        "namenode_rolling_restart_safemode_exit_timeout": "3600",
        "recovery_retry_interval": "5",
        "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
        "sysprep_skip_setup_jce": "false",
        "manage_hive_fsroot": "true",
        "service_check_type": "full",
        "recovery_enabled": "true",
        "recovery_max_count": "6",
        "sysprep_skip_create_users_and_groups": "false",
        "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
        "managed_hdfs_resource_property_names": "false",
        "smokeuser": "ambari-qa",
        "sysprep_skip_copy_fast_jar_hdfs": "false"
    },
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    "stackSettings": {
        "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters\"
 ,\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service support
 \",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\",
 \n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n       
  \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\",\
 n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive m
 etastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property de
 fined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_inst
 all_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\":
  \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\"\
 n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for stac
 k 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\"
 : \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\
 ": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
        "stack_name": "HDP",
        "stack_root": "{\"HDP\":\"/usr/hdp\"}",
        "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDARD
 \": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": [\
 n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n         
  ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"dr
 uid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"ST
 ANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [\n
             \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n        
   ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client\"
 \n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n       
    ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n         
    \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          \"
 STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n      
     ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n       
    \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"oozie
 -server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-tag
 sync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n  
         ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n          
 \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n          
 ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\"
 ,\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n          
 \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n   
        \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        },
 \n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf\"
 \n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \"{
 0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/cur
 rent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n          \
 "current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n          \
 "current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
        "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
    },
    
...
...

}


Thanks,

Swapan Shridhar


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Swapan Shridhar <ss...@hortonworks.com>.

> On Dec. 8, 2017, 11:41 p.m., Madhuvanthi Radhakrishnan wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java
> > Line 57 (original)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910171#file1910171line57>
> >
> >     Are we using this map anywhere?

Nope. Its part of the cleanup.


- Swapan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193284
-----------------------------------------------------------


On Dec. 7, 2017, 8:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 8:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Madhuvanthi Radhakrishnan <mr...@hortonworks.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193284
-----------------------------------------------------------


Fix it, then Ship it!





ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java
Line 57 (original)
<https://reviews.apache.org/r/64397/#comment271835>

    Are we using this map anywhere?


- Madhuvanthi Radhakrishnan


On Dec. 7, 2017, 8:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 8:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Swapan Shridhar <ss...@hortonworks.com>.

> On Dec. 8, 2017, 8:01 p.m., Attila Doroszlai wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
> > Lines 436 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910168#file1910168line436>
> >
> >     * no need for explicit type arg in Maps.newHashMap()
> >     * empty map should be created lazily in `else` below

Fixed.


> On Dec. 8, 2017, 8:01 p.m., Attila Doroszlai wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
> > Lines 438 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910168#file1910168line438>
> >
> >     According to IDEA there is no need to include the `clusterSettings.values() != null` check, as it is always true if `clusterSettings != null` is true.

Removed.


> On Dec. 8, 2017, 8:01 p.m., Attila Doroszlai wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
> > Lines 449-451 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910168#file1910168line449>
> >
> >     Please use `collect(toMap())` (as above) instead of `forEach` and `put`

Fixed.


> On Dec. 8, 2017, 8:01 p.m., Attila Doroszlai wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
> > Lines 2676-2695 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910169#file1910169line2676>
> >
> >     Can you please extract the logic to 2 utility methods to avoid code duplication among `AmbariCustomCommandExecutionHelper`, `AmbariManagementControllerImpl` and `ClientConfigResourceProvider`?

Refactored.


- Swapan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193274
-----------------------------------------------------------


On Dec. 7, 2017, 8:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 8:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Attila Doroszlai <ad...@hortonworks.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193274
-----------------------------------------------------------


Fix it, then Ship it!





ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
Lines 436 (patched)
<https://reviews.apache.org/r/64397/#comment271827>

    * no need for explicit type arg in Maps.newHashMap()
    * empty map should be created lazily in `else` below



ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
Lines 438 (patched)
<https://reviews.apache.org/r/64397/#comment271831>

    According to IDEA there is no need to include the `clusterSettings.values() != null` check, as it is always true if `clusterSettings != null` is true.



ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
Lines 449-451 (patched)
<https://reviews.apache.org/r/64397/#comment271828>

    Please use `collect(toMap())` (as above) instead of `forEach` and `put`



ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
Lines 2676-2695 (patched)
<https://reviews.apache.org/r/64397/#comment271829>

    Can you please extract the logic to 2 utility methods to avoid code duplication among `AmbariCustomCommandExecutionHelper`, `AmbariManagementControllerImpl` and `ClientConfigResourceProvider`?


- Attila Doroszlai


On Dec. 7, 2017, 9:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 9:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Swapan Shridhar <ss...@hortonworks.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/
-----------------------------------------------------------

(Updated Dec. 12, 2017, 4:07 a.m.)


Review request for Ambari, Attila Doroszlai, Jayush Luniya, and Madhuvanthi Radhakrishnan.


Changes
-------

Code updated as per review comments.


Bugs: AMBARI-22602
    https://issues.apache.org/jira/browse/AMBARI-22602


Repository: ambari


Description
-------

AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.

This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.

- This enables these parameters to be passed in to the ambari-agent's **command*.json**.


Test cases are tracked in : AMBARI-22603


Diffs (updated)
-----

  ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
  ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java fd43edf 
  ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
  ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
  ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
  ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
  ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java c8768dd 
  ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java 0b38b36 


Diff: https://reviews.apache.org/r/64397/diff/2/

Changes: https://reviews.apache.org/r/64397/diff/1-2/


Testing
-------

Tested on Live cluster doing following : 
(1). Start Service 
(2). Restart Service 
(3). Stop Service 
(4). Refreshing client configs
(5). Adding Client.


**Snippet from command*.json as part of testing:**
{
...
...
"clusterSettings": {
        "security_enabled": "false",
        "hide_yarn_memory_widget": "false",
        "enable_external_ranger": "false",
        "override_uid": "true",
        "kerberos_domain": "EXAMPLE.COM",
        "one_dir_per_partition": "false",
        "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
        "ignore_groupsusers_create": "false",
        "alerts_repeat_tolerance": "1",
        "namenode_rolling_restart_timeout": "4200",
        "fetch_nonlocal_groups": "true",
        "manage_dirs_on_root": "true",
        "recovery_lifetime_max_count": "1024",
        "agent_mounts_ignore_list": "",
        "ignore_bad_mounts": "false",
        "recovery_window_in_minutes": "60",
        "sysprep_skip_copy_tarballs_hdfs": "false",
        "recovery_type": "AUTO_START",
        "user_group": "hadoop",
        "namenode_rolling_restart_safemode_exit_timeout": "3600",
        "recovery_retry_interval": "5",
        "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
        "sysprep_skip_setup_jce": "false",
        "manage_hive_fsroot": "true",
        "service_check_type": "full",
        "recovery_enabled": "true",
        "recovery_max_count": "6",
        "sysprep_skip_create_users_and_groups": "false",
        "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
        "managed_hdfs_resource_property_names": "false",
        "smokeuser": "ambari-qa",
        "sysprep_skip_copy_fast_jar_hdfs": "false"
    },
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    "stackSettings": {
        "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters\"
 ,\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service support
 \",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\",
 \n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n       
  \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\",\
 n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive m
 etastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property de
 fined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_inst
 all_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\":
  \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\"\
 n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for stac
 k 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\"
 : \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\
 ": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
        "stack_name": "HDP",
        "stack_root": "{\"HDP\":\"/usr/hdp\"}",
        "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDARD
 \": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": [\
 n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n         
  ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"dr
 uid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"ST
 ANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [\n
             \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n        
   ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client\"
 \n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n       
    ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n         
    \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          \"
 STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n      
     ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n       
    \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"oozie
 -server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-tag
 sync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n  
         ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n          
 \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n          
 ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\"
 ,\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n          
 \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n   
        \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        },
 \n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf\"
 \n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \"{
 0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/cur
 rent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n          \
 "current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n          \
 "current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
        "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
    },
    
...
...

}


Thanks,

Swapan Shridhar


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Swapan Shridhar <ss...@hortonworks.com>.

> On Dec. 11, 2017, 5:44 p.m., Jayush Luniya wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
> > Lines 291 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910167#file1910167line291>
> >
> >     settings or clusterSettings instead of params?

Fixed.


> On Dec. 11, 2017, 5:44 p.m., Jayush Luniya wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
> > Lines 300 (patched)
> > <https://reviews.apache.org/r/64397/diff/1/?file=1910167#file1910167line300>
> >
> >     settings or stackSettings instead of params?

Fixed.


- Swapan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193406
-----------------------------------------------------------


On Dec. 7, 2017, 8:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 8:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>


Re: Review Request 64397: AMBARI-22602. Add 'clusterSettings' and 'stackSettings' parameters in Execution Command.

Posted by Jayush Luniya <jl...@hortonworks.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64397/#review193406
-----------------------------------------------------------




ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
Lines 291 (patched)
<https://reviews.apache.org/r/64397/#comment271960>

    settings or clusterSettings instead of params?



ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
Lines 300 (patched)
<https://reviews.apache.org/r/64397/#comment271961>

    settings or stackSettings instead of params?


- Jayush Luniya


On Dec. 7, 2017, 8:11 a.m., Swapan Shridhar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64397/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2017, 8:11 a.m.)
> 
> 
> Review request for Ambari, Jayush Luniya and Madhuvanthi Radhakrishnan.
> 
> 
> Bugs: AMBARI-22602
>     https://issues.apache.org/jira/browse/AMBARI-22602
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> AMBARI-22198 added "stack settings", and AMBARI-22196 introduced "cluster settings" in Ambari.
> 
> This review adds 2 new parameters to Execution Command : **(1).** clusterSettings and **(2).** stackSettings, and adds their respective set of key-values pairs.
> 
> - This enables these parameters to be passed in to the ambari-agent's **command*.json**.
> 
> 
> Test cases are tracked in : AMBARI-22603
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java 5ee4bf6 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java e7dea06 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java 59e6622 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java 9043297 
>   ambari-server/src/main/java/org/apache/ambari/server/resources/RootLevelSettingsManager.java 8bd24f2 
> 
> 
> Diff: https://reviews.apache.org/r/64397/diff/1/
> 
> 
> Testing
> -------
> 
> Tested on Live cluster doing following : 
> (1). Start Service 
> (2). Restart Service 
> (3). Stop Service 
> (4). Refreshing client configs
> (5). Adding Client.
> 
> 
> **Snippet from command*.json as part of testing:**
> {
> ...
> ...
> "clusterSettings": {
>         "security_enabled": "false",
>         "hide_yarn_memory_widget": "false",
>         "enable_external_ranger": "false",
>         "override_uid": "true",
>         "kerberos_domain": "EXAMPLE.COM",
>         "one_dir_per_partition": "false",
>         "repo_ubuntu_template": "{{package_type}} {{base_url}} {{components}}",
>         "ignore_groupsusers_create": "false",
>         "alerts_repeat_tolerance": "1",
>         "namenode_rolling_restart_timeout": "4200",
>         "fetch_nonlocal_groups": "true",
>         "manage_dirs_on_root": "true",
>         "recovery_lifetime_max_count": "1024",
>         "agent_mounts_ignore_list": "",
>         "ignore_bad_mounts": "false",
>         "recovery_window_in_minutes": "60",
>         "sysprep_skip_copy_tarballs_hdfs": "false",
>         "recovery_type": "AUTO_START",
>         "user_group": "hadoop",
>         "namenode_rolling_restart_safemode_exit_timeout": "3600",
>         "recovery_retry_interval": "5",
>         "sysprep_skip_copy_oozie_share_lib_to_hdfs": "false",
>         "sysprep_skip_setup_jce": "false",
>         "manage_hive_fsroot": "true",
>         "service_check_type": "full",
>         "recovery_enabled": "true",
>         "recovery_max_count": "6",
>         "sysprep_skip_create_users_and_groups": "false",
>         "smokeuser_keytab": "/etc/security/keytabs/smokeuser.headless.keytab",
>         "managed_hdfs_resource_property_names": "false",
>         "smokeuser": "ambari-qa",
>         "sysprep_skip_copy_fast_jar_hdfs": "false"
>     },
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     ...
>     "stackSettings": {
>         "stack_features": "{\n  \"HDP\": {\n    \"stack_features\": [\n      {\n        \"name\": \"snappy\",\n        \"description\": \"Snappy compressor/decompressor support\",\n        \"min_version\": \"2.0.0.0\",\n        \"max_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"lzo\",\n        \"description\": \"LZO libraries support\",\n        \"min_version\": \"2.2.1.0\"\n      },\n      {\n        \"name\": \"express_upgrade\",\n        \"description\": \"Express upgrade support\",\n        \"min_version\": \"2.1.0.0\"\n      },\n      {\n        \"name\": \"rolling_upgrade\",\n        \"description\": \"Rolling upgrade support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_acl_migration_support\",\n        \"description\": \"ACL migration support\",\n        \"min_version\": \"2.3.4.0\"\n      },\n      {\n        \"name\": \"secure_zookeeper\",\n        \"description\": \"Protect ZNodes with SASL acl in secure clusters
 \",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"config_versioning\",\n        \"description\": \"Configurable versions support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"datanode_non_root\",\n        \"description\": \"DataNode running as non-root support (AMBARI-7615)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"remove_ranger_hdfs_plugin_env\",\n        \"description\": \"HDFS removes Ranger env files (AMBARI-14299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger\",\n        \"description\": \"Ranger Service support\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_tagsync_component\",\n        \"description\": \"Ranger Tagsync component support (AMBARI-14383)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix\",\n        \"description\": \"Phoenix Service suppo
 rt\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"nfs\",\n        \"description\": \"NFS support\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"tez_for_spark\",\n        \"description\": \"Tez dependency for Spark\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"timeline_state_store\",\n        \"description\": \"Yarn application timeline-service supports state store property (AMBARI-11442)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"copy_tarball_to_hdfs\",\n        \"description\": \"Copy tarball to HDFS support (AMBARI-12113)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"spark_16plus\",\n        \"description\": \"Spark 1.6+\",\n        \"min_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"spark_thriftserver\",\n        \"description\": \"Spark Thrift Server\
 ",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"storm_kerberos\",\n        \"description\": \"Storm Kerberos support (AMBARI-7570)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"storm_ams\",\n        \"description\": \"Storm AMS integration (AMBARI-10710)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"kafka_listeners\",\n        \"description\": \"Kafka listeners (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_kerberos\",\n        \"description\": \"Kafka Kerberos support (AMBARI-10984)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"pig_on_tez\",\n        \"description\": \"Pig on Tez support (AMBARI-7863)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_non_root\",\n        \"description\": \"Ranger Usersync as non-root user (AMBARI-10416)\",\n     
    \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_audit_db_support\",\n        \"description\": \"Ranger Audit to DB support\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"accumulo_kerberos_user_auth\",\n        \"description\": \"Accumulo Kerberos User Auth (AMBARI-10163)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"knox_versioned_data_dir\",\n        \"description\": \"Use versioned data dir for Knox (AMBARI-13164)\",\n        \"min_version\": \"2.3.2.0\"\n      },\n      {\n        \"name\": \"knox_sso_topology\",\n        \"description\": \"Knox SSO Topology support (AMBARI-13975)\",\n        \"min_version\": \"2.3.8.0\"\n      },\n      {\n        \"name\": \"atlas_rolling_upgrade\",\n        \"description\": \"Rolling upgrade support for Atlas\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"oozie_admin_user\"
 ,\n        \"description\": \"Oozie install user as an Oozie admin user (AMBARI-7976)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_create_hive_tez_configs\",\n        \"description\": \"Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_setup_shared_lib\",\n        \"description\": \"Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"oozie_host_kerberos\",\n        \"description\": \"Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)\",\n        \"min_version\": \"2.0.0.0\"\n      },\n      {\n        \"name\": \"falcon_extensions\",\n        \"description\": \"Falcon Extension\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_upgrade_schema\",\n        \"description\": \"Hive
  metastore upgrade schema support (AMBARI-11176)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server_interactive\",\n        \"description\": \"Hive server interactive support (AMBARI-15573)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_webhcat_specific_configs\",\n        \"description\": \"Hive webhcat specific configurations support (AMBARI-12364)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_purge_table\",\n        \"description\": \"Hive purge table support (AMBARI-12260)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"hive_server2_kerberized_env\",\n        \"description\": \"Hive server2 working on kerberized environment (AMBARI-13749)\",\n        \"min_version\": \"2.2.3.0\",\n        \"max_version\": \"2.2.5.0\"\n      },\n      {\n        \"name\": \"hive_env_heapsize\",\n        \"description\": \"Hive heapsize property 
 defined in hive-env (AMBARI-12801)\",\n        \"min_version\": \"2.2.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_hsm_support\",\n        \"description\": \"Ranger KMS HSM support (AMBARI-15752)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_log4j_support\",\n        \"description\": \"Ranger supporting log-4j properties (AMBARI-15681)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kerberos_support\",\n        \"description\": \"Ranger Kerberos support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hive_metastore_site_support\",\n        \"description\": \"Hive Metastore site support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_usersync_password_jceks\",\n        \"description\": \"Saving Ranger Usersync credentials in jceks\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_in
 stall_infra_client\",\n        \"description\": \"Ambari Infra Service support\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support_2_3\",\n        \"description\": \"Falcon Atlas integration support for 2.3 stack\",\n        \"min_version\": \"2.3.99.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"falcon_atlas_support\",\n        \"description\": \"Falcon Atlas integration\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"hbase_home_directory\",\n        \"description\": \"Hbase home directory in HDFS needed for HBASE backup\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_livy\",\n        \"description\": \"Livy as slave component of spark\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_ranger_plugin_support\",\n        \"description\": \"Atlas Ranger plugin support\",\n        \"min_version\
 ": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_conf_dir_in_path\",\n        \"description\": \"Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon\",\n        \"min_version\": \"2.3.0.0\",\n        \"max_version\": \"2.4.99.99\"\n      },\n      {\n        \"name\": \"atlas_upgrade_support\",\n        \"description\": \"Atlas supports express and rolling upgrades\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"atlas_hook_support\",\n        \"description\": \"Atlas support for hooks in Hive, Storm, Falcon, and Sqoop\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_pid_support\",\n        \"description\": \"Ranger Service support pid generation AMBARI-16756\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_pid_support\",\n        \"description\": \"Ranger KMS Service support pid generation\",\n        \"min_version\": \"2.5.0.0\
 "\n      },\n      {\n        \"name\": \"ranger_admin_password_change\",\n        \"description\": \"Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"storm_metrics_apache_classes\",\n        \"description\": \"Metrics sink for Storm that uses Apache class names\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"spark_java_opts_support\",\n        \"description\": \"Allow Spark to generate java-opts file\",\n        \"min_version\": \"2.2.0.0\",\n        \"max_version\": \"2.4.0.0\"\n      },\n      {\n        \"name\": \"atlas_hbase_setup\",\n        \"description\": \"Use script to create Atlas tables in Hbase and set permissions for Atlas user.\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"ranger_hive_plugin_jdbc_url\",\n        \"description\": \"Handle Ranger hive repo config jdbc url change for st
 ack 2.5 (AMBARI-18386)\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"zkfc_version_advertised\",\n        \"description\": \"ZKFC advertise version\",\n        \"min_version\": \"2.5.0.0\"\n      },\n      {\n        \"name\": \"phoenix_core_hdfs_site_required\",\n        \"description\": \"HDFS and CORE site required for Phoenix\",\n        \"max_version\": \"2.5.9.9\"\n      },\n      {\n        \"name\": \"ranger_tagsync_ssl_xml_support\",\n        \"description\": \"Ranger Tagsync ssl xml support.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_xml_configuration\",\n        \"description\": \"Ranger code base support xml configurations\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"kafka_ranger_plugin_support\",\n        \"description\": \"Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name
 \": \"yarn_ranger_plugin_support\",\n        \"description\": \"Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)\",\n        \"min_version\": \"2.3.0.0\"\n      },\n      {\n        \"name\": \"ranger_solr_config_support\",\n        \"description\": \"Showing Ranger solrconfig.xml on UI\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"core_site_for_ranger_plugins\",\n        \"description\": \"Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"secure_ranger_ssl_password\",\n        \"description\": \"Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"name\": \"ranger_kms_ssl\",\n        \"description\": \"Ranger KMS SSL properties in ambari stack\",\n        \"min_version\": \"2.6.0.0\"\n      },\n      {\n        \"nam
 e\": \"atlas_hdfs_site_on_namenode_ha\",\n        \"description\": \"Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.\",\n        \"min_version\": \"2.6.0.0\"\n      }\n    ]\n  }\n}\n",
>         "stack_name": "HDP",
>         "stack_root": "{\"HDP\":\"/usr/hdp\"}",
>         "stack_packages": "{\n  \"HDP\": {\n    \"stack-select\": {\n      \"ACCUMULO\": {\n        \"ACCUMULO_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-client\",\n          \"INSTALL\": [\n            \"accumulo-client\"\n          ],\n          \"PATCH\": [\n            \"accumulo-client\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_GC\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-gc\",\n          \"INSTALL\": [\n            \"accumulo-gc\"\n          ],\n          \"PATCH\": [\n            \"accumulo-gc\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-gc\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-master\",\n          \"INSTALL\": [\n            \"accumulo-master\"\n          ],\n          \"PATCH\": [\n            \"accumulo-master\"\n          ],\n          \"STANDA
 RD\": [\n            \"accumulo-master\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_MONITOR\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-monitor\",\n          \"INSTALL\": [\n            \"accumulo-monitor\"\n          ],\n          \"PATCH\": [\n            \"accumulo-monitor\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-monitor\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TRACER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tracer\",\n          \"INSTALL\": [\n            \"accumulo-tracer\"\n          ],\n          \"PATCH\": [\n            \"accumulo-tracer\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tracer\",\n            \"accumulo-client\"\n          ]\n        },\n        \"ACCUMULO_TSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"accumulo-tablet\",\n          \"INSTALL\": [\n            \"accumulo-tablet\"\n          ],\n          \"PATCH\": 
 [\n            \"accumulo-tablet\"\n          ],\n          \"STANDARD\": [\n            \"accumulo-tablet\",\n            \"accumulo-client\"\n          ]\n        }\n      },\n      \"ATLAS\": {\n        \"ATLAS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-client\",\n          \"INSTALL\": [\n            \"atlas-client\"\n          ],\n          \"PATCH\": [\n            \"atlas-client\"\n          ],\n          \"STANDARD\": [\n            \"atlas-client\"\n          ]\n        },\n        \"ATLAS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"atlas-server\",\n          \"INSTALL\": [\n            \"atlas-server\"\n          ],\n          \"PATCH\": [\n            \"atlas-server\"\n          ],\n          \"STANDARD\": [\n            \"atlas-server\"\n          ]\n        }\n      },\n      \"DRUID\": {\n        \"DRUID_COORDINATOR\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-coordinator\",\n          \"INSTALL\": [\n            \"druid-coordinator\"\n       
    ],\n          \"PATCH\": [\n            \"druid-coordinator\"\n          ],\n          \"STANDARD\": [\n            \"druid-coordinator\"\n          ]\n        },\n        \"DRUID_OVERLORD\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-overlord\",\n          \"INSTALL\": [\n            \"druid-overlord\"\n          ],\n          \"PATCH\": [\n            \"druid-overlord\"\n          ],\n          \"STANDARD\": [\n            \"druid-overlord\"\n          ]\n        },\n        \"DRUID_HISTORICAL\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-historical\",\n          \"INSTALL\": [\n            \"druid-historical\"\n          ],\n          \"PATCH\": [\n            \"druid-historical\"\n          ],\n          \"STANDARD\": [\n            \"druid-historical\"\n          ]\n        },\n        \"DRUID_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-broker\",\n          \"INSTALL\": [\n            \"druid-broker\"\n          ],\n          \"PATCH\": [\n            \"
 druid-broker\"\n          ],\n          \"STANDARD\": [\n            \"druid-broker\"\n          ]\n        },\n        \"DRUID_MIDDLEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-middlemanager\",\n          \"INSTALL\": [\n            \"druid-middlemanager\"\n          ],\n          \"PATCH\": [\n            \"druid-middlemanager\"\n          ],\n          \"STANDARD\": [\n            \"druid-middlemanager\"\n          ]\n        },\n        \"DRUID_ROUTER\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-router\",\n          \"INSTALL\": [\n            \"druid-router\"\n          ],\n          \"PATCH\": [\n            \"druid-router\"\n          ],\n          \"STANDARD\": [\n            \"druid-router\"\n          ]\n        },\n        \"DRUID_SUPERSET\": {\n          \"STACK-SELECT-PACKAGE\": \"druid-superset\",\n          \"INSTALL\": [\n            \"druid-superset\"\n          ],\n          \"PATCH\": [\n            \"druid-superset\"\n          ],\n          \"
 STANDARD\": [\n            \"druid-superset\"\n          ]\n        }\n      },\n      \"FALCON\": {\n        \"FALCON_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-client\",\n          \"INSTALL\": [\n            \"falcon-client\"\n          ],\n          \"PATCH\": [\n            \"falcon-client\"\n          ],\n          \"STANDARD\": [\n            \"falcon-client\"\n          ]\n        },\n        \"FALCON_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"falcon-server\",\n          \"INSTALL\": [\n            \"falcon-server\"\n          ],\n          \"PATCH\": [\n            \"falcon-server\"\n          ],\n          \"STANDARD\": [\n            \"falcon-server\"\n          ]\n        }\n      },\n      \"FLUME\": {\n        \"FLUME_HANDLER\": {\n          \"STACK-SELECT-PACKAGE\": \"flume-server\",\n          \"INSTALL\": [\n            \"flume-server\"\n          ],\n          \"PATCH\": [\n            \"flume-server\"\n          ],\n          \"STANDARD\": [
 \n            \"flume-server\"\n          ]\n        }\n      },\n      \"HBASE\": {\n        \"HBASE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-client\",\n          \"INSTALL\": [\n            \"hbase-client\"\n          ],\n          \"PATCH\": [\n            \"hbase-client\"\n          ],\n          \"STANDARD\": [\n            \"hbase-client\",\n            \"phoenix-client\",\n            \"hadoop-client\"\n          ]\n        },\n        \"HBASE_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-master\",\n          \"INSTALL\": [\n            \"hbase-master\"\n          ],\n          \"PATCH\": [\n            \"hbase-master\"\n          ],\n          \"STANDARD\": [\n            \"hbase-master\"\n          ]\n        },\n        \"HBASE_REGIONSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hbase-regionserver\",\n          \"INSTALL\": [\n            \"hbase-regionserver\"\n          ],\n          \"PATCH\": [\n            \"hbase-regionserver\"\n      
     ],\n          \"STANDARD\": [\n            \"hbase-regionserver\"\n          ]\n        },\n        \"PHOENIX_QUERY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"phoenix-server\",\n          \"INSTALL\": [\n            \"phoenix-server\"\n          ],\n          \"PATCH\": [\n            \"phoenix-server\"\n          ],\n          \"STANDARD\": [\n            \"phoenix-server\"\n          ]\n        }\n      },\n      \"HDFS\": {\n        \"DATANODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-datanode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-datanode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-datanode\"\n          ]\n        },\n        \"HDFS_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-client\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-client
 \"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-namenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-namenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-namenode\"\n          ]\n        },\n        \"NFS_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-nfs3\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-nfs3\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-nfs3\"\n          ]\n        },\n        \"JOURNALNODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-journalnode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-journalnode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-journalnode\"\n     
      ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-journalnode\"\n          ]\n        },\n        \"SECONDARY_NAMENODE\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-secondarynamenode\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-secondarynamenode\"\n          ]\n        },\n        \"ZKFC\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-hdfs-zkfc\",\n          \"INSTALL\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"PATCH\": [\n            \"hadoop-hdfs-zkfc\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-hdfs-zkfc\"\n          ]\n        }\n      },\n      \"HIVE\": {\n        \"HCAT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n       
      \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        },\n        \"HIVE_METASTORE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-metastore\",\n          \"INSTALL\": [\n            \"hive-metastore\"\n          ],\n          \"PATCH\": [\n            \"hive-metastore\"\n          ],\n          \"STANDARD\": [\n            \"hive-metastore\"\n          ]\n        },\n        \"HIVE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2\",\n          \"INSTALL\": [\n            \"hive-server2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2\"\n          ],\n          \"STANDARD\": [\n            \"hive-server2\"\n          ]\n        },\n        \"HIVE_SERVER_INTERACTIVE\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-server2-hive2\",\n          \"INSTALL\": [\n            \"hive-server2-hive2\"\n          ],\n          \"PATCH\": [\n            \"hive-server2-hive2\"\n          ],\n          
 \"STANDARD\": [\n            \"hive-server2-hive2\"\n          ]\n        },\n        \"HIVE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-client\",\n          \"INSTALL\": [\n            \"hive-client\"\n          ],\n          \"PATCH\": [\n            \"hive-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        },\n        \"WEBHCAT_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hive-webhcat\",\n          \"INSTALL\": [\n            \"hive-webhcat\"\n          ],\n          \"PATCH\": [\n            \"hive-webhcat\"\n          ],\n          \"STANDARD\": [\n            \"hive-webhcat\"\n          ]\n        }\n      },\n      \"KAFKA\": {\n        \"KAFKA_BROKER\": {\n          \"STACK-SELECT-PACKAGE\": \"kafka-broker\",\n          \"INSTALL\": [\n            \"kafka-broker\"\n          ],\n          \"PATCH\": [\n            \"kafka-broker\"\n          ],\n          \"STANDARD\": [\n            \"kafka-broker\"\n    
       ]\n        }\n      },\n      \"KNOX\": {\n        \"KNOX_GATEWAY\": {\n          \"STACK-SELECT-PACKAGE\": \"knox-server\",\n          \"INSTALL\": [\n            \"knox-server\"\n          ],\n          \"PATCH\": [\n            \"knox-server\"\n          ],\n          \"STANDARD\": [\n            \"knox-server\"\n          ]\n        }\n      },\n      \"MAHOUT\": {\n        \"MAHOUT\": {\n          \"STACK-SELECT-PACKAGE\": \"mahout-client\",\n          \"INSTALL\": [\n            \"mahout-client\"\n          ],\n          \"PATCH\": [\n            \"mahout-client\"\n          ],\n          \"STANDARD\": [\n            \"mahout-client\"\n          ]\n        }\n      },\n      \"MAPREDUCE2\": {\n        \"HISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-historyserver\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-historyserver\"\n          ],\n     
      \"STANDARD\": [\n            \"hadoop-mapreduce-historyserver\"\n          ]\n        },\n        \"MAPREDUCE2_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-mapreduce-client\",\n          \"INSTALL\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-mapreduce-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"OOZIE\": {\n        \"OOZIE_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-client\",\n          \"INSTALL\": [\n            \"oozie-client\"\n          ],\n          \"PATCH\": [\n            \"oozie-client\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\"\n          ]\n        },\n        \"OOZIE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"oozie-server\",\n          \"INSTALL\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ],\n          \"PATCH\": [\n            \"ooz
 ie-server\"\n          ],\n          \"STANDARD\": [\n            \"oozie-client\",\n            \"oozie-server\"\n          ]\n        }\n      },\n      \"PIG\": {\n        \"PIG\": {\n          \"STACK-SELECT-PACKAGE\": \"pig-client\",\n          \"INSTALL\": [\n            \"pig-client\"\n          ],\n          \"PATCH\": [\n            \"pig-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"RANGER\": {\n        \"RANGER_ADMIN\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-admin\",\n          \"INSTALL\": [\n            \"ranger-admin\"\n          ],\n          \"PATCH\": [\n            \"ranger-admin\"\n          ],\n          \"STANDARD\": [\n            \"ranger-admin\"\n          ]\n        },\n        \"RANGER_TAGSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-tagsync\",\n          \"INSTALL\": [\n            \"ranger-tagsync\"\n          ],\n          \"PATCH\": [\n            \"ranger-t
 agsync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-tagsync\"\n          ]\n        },\n        \"RANGER_USERSYNC\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-usersync\",\n          \"INSTALL\": [\n            \"ranger-usersync\"\n          ],\n          \"PATCH\": [\n            \"ranger-usersync\"\n          ],\n          \"STANDARD\": [\n            \"ranger-usersync\"\n          ]\n        }\n      },\n      \"RANGER_KMS\": {\n        \"RANGER_KMS_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"ranger-kms\",\n          \"INSTALL\": [\n            \"ranger-kms\"\n          ],\n          \"PATCH\": [\n            \"ranger-kms\"\n          ],\n          \"STANDARD\": [\n            \"ranger-kms\"\n          ]\n        }\n      },\n      \"SLIDER\": {\n        \"SLIDER\": {\n          \"STACK-SELECT-PACKAGE\": \"slider-client\",\n          \"INSTALL\": [\n            \"slider-client\"\n          ],\n          \"PATCH\": [\n            \"slider-client\"\n
           ],\n          \"STANDARD\": [\n            \"slider-client\",\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"SPARK\": {\n        \"LIVY_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-client\",\n          \"INSTALL\": [\n            \"livy2-client\"\n          ],\n          \"PATCH\": [\n            \"livy2-client\"\n          ],\n          \"STANDARD\": [\n            \"livy2-client\"\n          ]\n        },\n        \"LIVY_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"livy2-server\",\n          \"INSTALL\": [\n            \"livy2-server\"\n          ],\n          \"PATCH\": [\n            \"livy2-server\"\n          ],\n          \"STANDARD\": [\n            \"livy2-server\"\n          ]\n        },\n        \"SPARK_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-client\",\n          \"INSTALL\": [\n            \"spark2-client\"\n          ],\n          \"PATCH\": [\n            \"spark2-client\"\n          ],\n        
   \"STANDARD\": [\n            \"spark2-client\"\n          ]\n        },\n        \"SPARK_JOBHISTORYSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-historyserver\",\n          \"INSTALL\": [\n            \"spark2-historyserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-historyserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-historyserver\"\n          ]\n        },\n        \"SPARK_THRIFTSERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"spark2-thriftserver\",\n          \"INSTALL\": [\n            \"spark2-thriftserver\"\n          ],\n          \"PATCH\": [\n            \"spark2-thriftserver\"\n          ],\n          \"STANDARD\": [\n            \"spark2-thriftserver\"\n          ]\n        }\n      },\n      \"SQOOP\": {\n        \"SQOOP\": {\n          \"STACK-SELECT-PACKAGE\": \"sqoop-client\",\n          \"INSTALL\": [\n            \"sqoop-client\"\n          ],\n          \"PATCH\": [\n            \"sqoop-client\"\n        
   ],\n          \"STANDARD\": [\n            \"sqoop-client\"\n          ]\n        }\n      },\n      \"STORM\": {\n        \"NIMBUS\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-nimbus\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-nimbus\"\n          ]\n        },\n        \"SUPERVISOR\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-supervisor\",\n          \"INSTALL\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"PATCH\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\",\n            \"storm-supervisor\"\n          ]\n        },\n        \"DRPC_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client
 \",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        },\n        \"STORM_UI_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"storm-client\",\n          \"INSTALL\": [\n            \"storm-client\"\n          ],\n          \"PATCH\": [\n            \"storm-client\"\n          ],\n          \"STANDARD\": [\n            \"storm-client\"\n          ]\n        }\n      },\n      \"TEZ\": {\n        \"TEZ_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"tez-client\",\n          \"INSTALL\": [\n            \"tez-client\"\n          ],\n          \"PATCH\": [\n            \"tez-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"YARN\": {\n        \"APP_TIMELINE_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-timelineserver\",\n        
   \"INSTALL\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-timelineserver\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-timelineserver\"\n          ]\n        },\n        \"NODEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-nodemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-nodemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-nodemanager\"\n          ]\n        },\n        \"RESOURCEMANAGER\": {\n          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-resourcemanager\",\n          \"INSTALL\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-resourcemanager\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-yarn-resourcemanager\"\n          ]\n        },\n        \"YARN_CLIENT\": {\n 
          \"STACK-SELECT-PACKAGE\": \"hadoop-yarn-client\",\n          \"INSTALL\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"PATCH\": [\n            \"hadoop-yarn-client\"\n          ],\n          \"STANDARD\": [\n            \"hadoop-client\"\n          ]\n        }\n      },\n      \"ZEPPELIN\": {\n        \"ZEPPELIN_MASTER\": {\n          \"STACK-SELECT-PACKAGE\": \"zeppelin-server\",\n          \"INSTALL\": [\n            \"zeppelin-server\"\n          ],\n          \"PATCH\": [\n            \"zeppelin-server\"\n          ],\n          \"STANDARD\": [\n            \"zeppelin-server\"\n          ]\n        }\n      },\n      \"ZOOKEEPER\": {\n        \"ZOOKEEPER_CLIENT\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-client\",\n          \"INSTALL\": [\n            \"zookeeper-client\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-client\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-client\"\n          ]\n        
 },\n        \"ZOOKEEPER_SERVER\": {\n          \"STACK-SELECT-PACKAGE\": \"zookeeper-server\",\n          \"INSTALL\": [\n            \"zookeeper-server\"\n          ],\n          \"PATCH\": [\n            \"zookeeper-server\"\n          ],\n          \"STANDARD\": [\n            \"zookeeper-server\"\n          ]\n        }\n      }\n    },\n    \"conf-select\": {\n      \"accumulo\": [\n        {\n          \"conf_dir\": \"/etc/accumulo/conf\",\n          \"current_dir\": \"{0}/current/accumulo-client/conf\"\n        }\n      ],\n      \"atlas\": [\n        {\n          \"conf_dir\": \"/etc/atlas/conf\",\n          \"current_dir\": \"{0}/current/atlas-client/conf\"\n        }\n      ],\n      \"druid\": [\n        {\n          \"conf_dir\": \"/etc/druid/conf\",\n          \"current_dir\": \"{0}/current/druid-overlord/conf\"\n        }\n      ],\n      \"falcon\": [\n        {\n          \"conf_dir\": \"/etc/falcon/conf\",\n          \"current_dir\": \"{0}/current/falcon-client/conf
 \"\n        }\n      ],\n      \"flume\": [\n        {\n          \"conf_dir\": \"/etc/flume/conf\",\n          \"current_dir\": \"{0}/current/flume-server/conf\"\n        }\n      ],\n      \"hadoop\": [\n        {\n          \"conf_dir\": \"/etc/hadoop/conf\",\n          \"current_dir\": \"{0}/current/hadoop-client/conf\"\n        }\n      ],\n      \"hbase\": [\n        {\n          \"conf_dir\": \"/etc/hbase/conf\",\n          \"current_dir\": \"{0}/current/hbase-client/conf\"\n        }\n      ],\n      \"hive\": [\n        {\n          \"conf_dir\": \"/etc/hive/conf\",\n          \"current_dir\": \"{0}/current/hive-client/conf\"\n        }\n      ],\n      \"hive2\": [\n        {\n          \"conf_dir\": \"/etc/hive2/conf\",\n          \"current_dir\": \"{0}/current/hive-server2-hive2/conf\"\n        }\n      ],\n      \"hive-hcatalog\": [\n        {\n          \"conf_dir\": \"/etc/hive-webhcat/conf\",\n          \"prefix\": \"/etc/hive-webhcat\",\n          \"current_dir\": \
 "{0}/current/hive-webhcat/etc/webhcat\"\n        },\n        {\n          \"conf_dir\": \"/etc/hive-hcatalog/conf\",\n          \"prefix\": \"/etc/hive-hcatalog\",\n          \"current_dir\": \"{0}/current/hive-webhcat/etc/hcatalog\"\n        }\n      ],\n      \"kafka\": [\n        {\n          \"conf_dir\": \"/etc/kafka/conf\",\n          \"current_dir\": \"{0}/current/kafka-broker/conf\"\n        }\n      ],\n      \"knox\": [\n        {\n          \"conf_dir\": \"/etc/knox/conf\",\n          \"current_dir\": \"{0}/current/knox-server/conf\"\n        }\n      ],\n      \"mahout\": [\n        {\n          \"conf_dir\": \"/etc/mahout/conf\",\n          \"current_dir\": \"{0}/current/mahout-client/conf\"\n        }\n      ],\n      \"nifi\": [\n        {\n          \"conf_dir\": \"/etc/nifi/conf\",\n          \"current_dir\": \"{0}/current/nifi/conf\"\n        }\n      ],\n      \"oozie\": [\n        {\n          \"conf_dir\": \"/etc/oozie/conf\",\n          \"current_dir\": \"{0}/c
 urrent/oozie-client/conf\"\n        }\n      ],\n      \"phoenix\": [\n        {\n          \"conf_dir\": \"/etc/phoenix/conf\",\n          \"current_dir\": \"{0}/current/phoenix-client/conf\"\n        }\n      ],\n      \"pig\": [\n        {\n          \"conf_dir\": \"/etc/pig/conf\",\n          \"current_dir\": \"{0}/current/pig-client/conf\"\n        }\n      ],\n      \"ranger-admin\": [\n        {\n          \"conf_dir\": \"/etc/ranger/admin/conf\",\n          \"current_dir\": \"{0}/current/ranger-admin/conf\"\n        }\n      ],\n      \"ranger-kms\": [\n        {\n          \"conf_dir\": \"/etc/ranger/kms/conf\",\n          \"current_dir\": \"{0}/current/ranger-kms/conf\"\n        }\n      ],\n      \"ranger-tagsync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/tagsync/conf\",\n          \"current_dir\": \"{0}/current/ranger-tagsync/conf\"\n        }\n      ],\n      \"ranger-usersync\": [\n        {\n          \"conf_dir\": \"/etc/ranger/usersync/conf\",\n         
  \"current_dir\": \"{0}/current/ranger-usersync/conf\"\n        }\n      ],\n      \"slider\": [\n        {\n          \"conf_dir\": \"/etc/slider/conf\",\n          \"current_dir\": \"{0}/current/slider-client/conf\"\n        }\n      ],\n      \"spark\": [\n        {\n          \"conf_dir\": \"/etc/spark/conf\",\n          \"current_dir\": \"{0}/current/spark-client/conf\"\n        }\n      ],\n      \"spark2\": [\n        {\n          \"conf_dir\": \"/etc/spark2/conf\",\n          \"current_dir\": \"{0}/current/spark2-client/conf\"\n        }\n      ],\n      \"sqoop\": [\n        {\n          \"conf_dir\": \"/etc/sqoop/conf\",\n          \"current_dir\": \"{0}/current/sqoop-client/conf\"\n        }\n      ],\n      \"storm\": [\n        {\n          \"conf_dir\": \"/etc/storm/conf\",\n          \"current_dir\": \"{0}/current/storm-client/conf\"\n        }\n      ],\n      \"storm-slider-client\": [\n        {\n          \"conf_dir\": \"/etc/storm-slider-client/conf\",\n         
  \"current_dir\": \"{0}/current/storm-slider-client/conf\"\n        }\n      ],\n      \"superset\": [\n        {\n          \"conf_dir\": \"/etc/druid-superset/conf\",\n          \"current_dir\": \"{0}/current/druid-superset/conf\"\n        }\n      ],\n      \"tez\": [\n        {\n          \"conf_dir\": \"/etc/tez/conf\",\n          \"current_dir\": \"{0}/current/tez-client/conf\"\n        }\n      ],\n      \"zeppelin\": [\n        {\n          \"conf_dir\": \"/etc/zeppelin/conf\",\n          \"current_dir\": \"{0}/current/zeppelin-server/conf\"\n        }\n      ],\n      \"zookeeper\": [\n        {\n          \"conf_dir\": \"/etc/zookeeper/conf\",\n          \"current_dir\": \"{0}/current/zookeeper-client/conf\"\n        }\n      ]\n    }\n  }\n}\n",
>         "stack_tools": "{\n  \"HDP\": {\n    \"stack_selector\": [\n      \"hdp-select\",\n      \"/usr/bin/hdp-select\",\n      \"hdp-select\"\n    ],\n    \"conf_selector\": [\n      \"conf-select\",\n      \"/usr/bin/conf-select\",\n      \"conf-select\"\n    ]\n  }\n}"
>     },
>     
> ...
> ...
> 
> }
> 
> 
> Thanks,
> 
> Swapan Shridhar
> 
>