Repository: ambari
Updated Branches:
  refs/heads/trunk 55e5a785f -> 88984efde


http://git-wip-us.apache.org/repos/asf/ambari/blob/88984efd/ambari-server/src/test/python/stacks/2.5/common/services-normal-his-valid.json
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.5/common/services-normal-his-valid.json
 
b/ambari-server/src/test/python/stacks/2.5/common/services-normal-his-valid.json
new file mode 100644
index 0000000..69c7e55
--- /dev/null
+++ 
b/ambari-server/src/test/python/stacks/2.5/common/services-normal-his-valid.json
@@ -0,0 +1,1131 @@
+{
+  "href" : 
"/api/v1/stacks/HDP/versions/2.5/?fields=Versions/stack_name,Versions/stack_version,Versions/parent_stack_version,services/StackServices/service_name,services/StackServices/service_version,services/components/StackServiceComponents,services/components/dependencies,services/components/auto_deploy,services/configurations/StackConfigurations/property_depends_on,services/configurations/dependencies/StackConfigurationDependency/dependency_name,services/configurations/dependencies/StackConfigurationDependency/dependency_type,services/configurations/StackConfigurations/type&services/StackServices/service_name.in(HDFS,YARN,MAPREDUCE2,TEZ,HIVE,PIG,ZOOKEEPER,SLIDER)",
+  "Versions" : {
+    "parent_stack_version" : "2.4",
+    "stack_name" : "HDP",
+    "stack_version" : "2.5",
+    "stack_hierarchy" : {
+      "stack_name" : "HDP",
+      "stack_versions" : [ "2.4", "2.3", "2.2", "2.1", "2.0.6" ]
+    }
+  },
+  "services" : [ {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/HDFS",
+    "StackServices" : {
+      "service_name" : "HDFS",
+      "service_version" : "2.7.1.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/DATANODE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "DataNodes",
+        "bulk_commands_master_component_name" : "NAMENODE",
+        "cardinality" : "1+",
+        "component_category" : "SLAVE",
+        "component_name" : "DATANODE",
+        "custom_commands" : [ ],
+        "decommission_allowed" : true,
+        "display_name" : "DataNode",
+        "has_bulk_commands_definition" : true,
+        "is_client" : false,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/HDFS_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "CLIENT",
+        "component_name" : "HDFS_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "HDFS Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/JOURNALNODE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "SLAVE",
+        "component_name" : "JOURNALNODE",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "JournalNode",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/JOURNALNODE/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "JOURNALNODE",
+          "dependent_service_name" : "HDFS",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/NAMENODE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1-2",
+        "component_category" : "MASTER",
+        "component_name" : "NAMENODE",
+        "custom_commands" : [ "DECOMMISSION", "REBALANCEHDFS" ],
+        "decommission_allowed" : false,
+        "display_name" : "NameNode",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/NFS_GATEWAY",
+      "StackServiceComponents" : {
+        "advertise_version" : false,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "SLAVE",
+        "component_name" : "NFS_GATEWAY",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "NFSGateway",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/NFS_GATEWAY/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "NFS_GATEWAY",
+          "dependent_service_name" : "HDFS",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/SECONDARY_NAMENODE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1",
+        "component_category" : "MASTER",
+        "component_name" : "SECONDARY_NAMENODE",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "SNameNode",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : "/api/v1/stacks/HDP/versions/2.5/services/HDFS/components/ZKFC",
+      "StackServiceComponents" : {
+        "advertise_version" : false,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "SLAVE",
+        "component_name" : "ZKFC",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "ZKFailoverController",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HDFS/configurations/REPOSITORY_CONFIG_PASSWORD",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "REPOSITORY_CONFIG_PASSWORD",
+        "service_name" : "HDFS",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "ranger-hdfs-plugin-properties.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/HIVE",
+    "StackServices" : {
+      "service_name" : "HIVE",
+      "service_version" : "1.2.1.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : "/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HCAT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "CLIENT",
+        "component_name" : "HCAT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "HCat Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "CLIENT",
+        "component_name" : "HIVE_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "Hive Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_METASTORE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "MASTER",
+        "component_name" : "HIVE_METASTORE",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "Hive Metastore",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "auto_deploy" : {
+        "enabled" : true,
+        "location" : "HIVE/HIVE_SERVER"
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "MASTER",
+        "component_name" : "HIVE_SERVER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "HiveServer2",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER/dependencies/MAPREDUCE2_CLIENT",
+        "Dependencies" : {
+          "component_name" : "MAPREDUCE2_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER/dependencies/TEZ_CLIENT",
+        "Dependencies" : {
+          "component_name" : "TEZ_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER/dependencies/YARN_CLIENT",
+        "Dependencies" : {
+          "component_name" : "YARN_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER/dependencies/ZOOKEEPER_SERVER",
+        "Dependencies" : {
+          "component_name" : "ZOOKEEPER_SERVER",
+          "dependent_component_name" : "HIVE_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0-1",
+        "component_category" : "MASTER",
+        "component_name" : "HIVE_SERVER_INTERACTIVE",
+        "custom_commands" : [ "RESTART_LLAP" ],
+        "decommission_allowed" : false,
+        "display_name" : "HiveServer2 Interactive",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6401.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/MAPREDUCE2_CLIENT",
+        "Dependencies" : {
+          "component_name" : "MAPREDUCE2_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/PIG",
+        "Dependencies" : {
+          "component_name" : "PIG",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/SLIDER",
+        "Dependencies" : {
+          "component_name" : "SLIDER",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/TEZ_CLIENT",
+        "Dependencies" : {
+          "component_name" : "TEZ_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/YARN_CLIENT",
+        "Dependencies" : {
+          "component_name" : "YARN_CLIENT",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/HIVE_SERVER_INTERACTIVE/dependencies/ZOOKEEPER_SERVER",
+        "Dependencies" : {
+          "component_name" : "ZOOKEEPER_SERVER",
+          "dependent_component_name" : "HIVE_SERVER_INTERACTIVE",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/MYSQL_SERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : false,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0-1",
+        "component_category" : "MASTER",
+        "component_name" : "MYSQL_SERVER",
+        "custom_commands" : [ "CLEAN" ],
+        "decommission_allowed" : false,
+        "display_name" : "MySQL Server",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "MASTER",
+        "component_name" : "WEBHCAT_SERVER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "WebHCat Server",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/HIVE_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HIVE_CLIENT",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/MAPREDUCE2_CLIENT",
+        "Dependencies" : {
+          "component_name" : "MAPREDUCE2_CLIENT",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/PIG",
+        "Dependencies" : {
+          "component_name" : "PIG",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/YARN_CLIENT",
+        "Dependencies" : {
+          "component_name" : "YARN_CLIENT",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/ZOOKEEPER_CLIENT",
+        "Dependencies" : {
+          "component_name" : "ZOOKEEPER_CLIENT",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/components/WEBHCAT_SERVER/dependencies/ZOOKEEPER_SERVER",
+        "Dependencies" : {
+          "component_name" : "ZOOKEEPER_SERVER",
+          "dependent_component_name" : "WEBHCAT_SERVER",
+          "dependent_service_name" : "HIVE",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/HIVE/configurations/REPOSITORY_CONFIG_PASSWORD",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "REPOSITORY_CONFIG_PASSWORD",
+        "service_name" : "HIVE",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "ranger-hive-plugin-properties.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2",
+    "StackServices" : {
+      "service_name" : "MAPREDUCE2",
+      "service_version" : "2.7.1.2.4",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2/components/HISTORYSERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1",
+        "component_category" : "MASTER",
+        "component_name" : "HISTORYSERVER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "History Server",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "MAPREDUCE2",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "auto_deploy" : {
+        "enabled" : true,
+        "location" : "YARN/RESOURCEMANAGER"
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2/components/HISTORYSERVER/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "HISTORYSERVER",
+          "dependent_service_name" : "MAPREDUCE2",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2/components/HISTORYSERVER/dependencies/TEZ_CLIENT",
+        "Dependencies" : {
+          "component_name" : "TEZ_CLIENT",
+          "dependent_component_name" : "HISTORYSERVER",
+          "dependent_service_name" : "MAPREDUCE2",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2/components/MAPREDUCE2_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "CLIENT",
+        "component_name" : "MAPREDUCE2_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "MapReduce2 Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "MAPREDUCE2",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/MAPREDUCE2/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "MAPREDUCE2",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "mapred-env.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/PIG",
+    "StackServices" : {
+      "service_name" : "PIG",
+      "service_version" : "0.15.0.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : "/api/v1/stacks/HDP/versions/2.5/services/PIG/components/PIG",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "CLIENT",
+        "component_name" : "PIG",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "Pig Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "PIG",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/PIG/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "PIG",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "pig-env.xml"
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/PIG/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "PIG",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "pig-log4j.xml"
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/PIG/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "PIG",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "pig-properties.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/SLIDER",
+    "StackServices" : {
+      "service_name" : "SLIDER",
+      "service_version" : "0.80.0.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/SLIDER/components/SLIDER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "0+",
+        "component_category" : "CLIENT",
+        "component_name" : "SLIDER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "Slider Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "SLIDER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/SLIDER/components/SLIDER/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "SLIDER",
+          "dependent_service_name" : "SLIDER",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/SLIDER/components/SLIDER/dependencies/YARN_CLIENT",
+        "Dependencies" : {
+          "component_name" : "YARN_CLIENT",
+          "dependent_component_name" : "SLIDER",
+          "dependent_service_name" : "SLIDER",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/SLIDER/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "SLIDER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "slider-env.xml"
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/SLIDER/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "SLIDER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "slider-log4j.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/TEZ",
+    "StackServices" : {
+      "service_name" : "TEZ",
+      "service_version" : "0.7.0.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/TEZ/components/TEZ_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "CLIENT",
+        "component_name" : "TEZ_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "Tez Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "TEZ",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/TEZ/components/TEZ_CLIENT/dependencies/HDFS_CLIENT",
+        "Dependencies" : {
+          "component_name" : "HDFS_CLIENT",
+          "dependent_component_name" : "TEZ_CLIENT",
+          "dependent_service_name" : "TEZ",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/TEZ/components/TEZ_CLIENT/dependencies/MAPREDUCE2_CLIENT",
+        "Dependencies" : {
+          "component_name" : "MAPREDUCE2_CLIENT",
+          "dependent_component_name" : "TEZ_CLIENT",
+          "dependent_service_name" : "TEZ",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      }, {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/TEZ/components/TEZ_CLIENT/dependencies/YARN_CLIENT",
+        "Dependencies" : {
+          "component_name" : "YARN_CLIENT",
+          "dependent_component_name" : "TEZ_CLIENT",
+          "dependent_service_name" : "TEZ",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/TEZ/configurations/content",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "content",
+        "service_name" : "TEZ",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "tez-env.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/YARN",
+    "StackServices" : {
+      "service_name" : "YARN",
+      "service_version" : "2.7.1.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/components/APP_TIMELINE_SERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : false,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1",
+        "component_category" : "MASTER",
+        "component_name" : "APP_TIMELINE_SERVER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "App Timeline Server",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "YARN",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/components/NODEMANAGER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "NodeManagers",
+        "bulk_commands_master_component_name" : "RESOURCEMANAGER",
+        "cardinality" : "1+",
+        "component_category" : "SLAVE",
+        "component_name" : "NODEMANAGER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : true,
+        "display_name" : "NodeManager",
+        "has_bulk_commands_definition" : true,
+        "is_client" : false,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "YARN",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/components/RESOURCEMANAGER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1-2",
+        "component_category" : "MASTER",
+        "component_name" : "RESOURCEMANAGER",
+        "custom_commands" : [ "DECOMMISSION", "REFRESHQUEUES" ],
+        "decommission_allowed" : false,
+        "display_name" : "ResourceManager",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : true,
+        "recovery_enabled" : false,
+        "service_name" : "YARN",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ {
+        "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/components/RESOURCEMANAGER/dependencies/TEZ_CLIENT",
+        "Dependencies" : {
+          "component_name" : "TEZ_CLIENT",
+          "dependent_component_name" : "RESOURCEMANAGER",
+          "dependent_service_name" : "YARN",
+          "stack_name" : "HDP",
+          "stack_version" : "2.5"
+        }
+      } ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/components/YARN_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "CLIENT",
+        "component_name" : "YARN_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "YARN Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "YARN",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/YARN/configurations/REPOSITORY_CONFIG_PASSWORD",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "REPOSITORY_CONFIG_PASSWORD",
+        "service_name" : "YARN",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "ranger-yarn-plugin-properties.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  }, {
+    "href" : "/api/v1/stacks/HDP/versions/2.5/services/ZOOKEEPER",
+    "StackServices" : {
+      "service_name" : "ZOOKEEPER",
+      "service_version" : "3.4.6.2.5",
+      "stack_name" : "HDP",
+      "stack_version" : "2.5"
+    },
+    "components" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/ZOOKEEPER/components/ZOOKEEPER_CLIENT",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "CLIENT",
+        "component_name" : "ZOOKEEPER_CLIENT",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "ZooKeeper Client",
+        "has_bulk_commands_definition" : false,
+        "is_client" : true,
+        "is_master" : false,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "ZOOKEEPER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    }, {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/ZOOKEEPER/components/ZOOKEEPER_SERVER",
+      "StackServiceComponents" : {
+        "advertise_version" : true,
+        "bulk_commands_display_name" : "",
+        "bulk_commands_master_component_name" : "",
+        "cardinality" : "1+",
+        "component_category" : "MASTER",
+        "component_name" : "ZOOKEEPER_SERVER",
+        "custom_commands" : [ ],
+        "decommission_allowed" : false,
+        "display_name" : "ZooKeeper Server",
+        "has_bulk_commands_definition" : false,
+        "is_client" : false,
+        "is_master" : true,
+        "reassign_allowed" : false,
+        "recovery_enabled" : false,
+        "service_name" : "ZOOKEEPER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "hostnames" : [ "c6402.ambari.apache.org" ]
+      },
+      "dependencies" : [ ]
+    } ],
+    "configurations" : [ {
+      "href" : 
"/api/v1/stacks/HDP/versions/2.5/services/ZOOKEEPER/configurations/autopurge.purgeInterval",
+      "StackConfigurations" : {
+        "property_depends_on" : [ ],
+        "property_name" : "autopurge.purgeInterval",
+        "service_name" : "ZOOKEEPER",
+        "stack_name" : "HDP",
+        "stack_version" : "2.5",
+        "type" : "zoo.cfg.xml"
+      },
+      "dependencies" : [ ]
+    } ]
+  } ],
+  "configurations" : { },
+  "changed-configurations" : [ ],
+  "ambari-server-properties" : {
+    "http.x-frame-options" : "DENY",
+    "server.stages.parallel" : "true",
+    "client.threadpool.size.max" : "25",
+    "mpacks.staging.path" : "/var/lib/ambari-server/resources/mpacks",
+    "server.os_family" : "redhat6",
+    "jdk1.7.home" : "/usr/jdk64/",
+    "views.request.read.timeout.millis" : "10000",
+    "ulimit.open.files" : "10000",
+    "common.services.path" : 
"/var/lib/ambari-server/resources/common-services",
+    "kerberos.keytab.cache.dir" : "/var/lib/ambari-server/data/cache",
+    "jdk.name" : "jdk-8u60-linux-x64.tar.gz",
+    "server.execution.scheduler.isClustered" : "false",
+    "bootstrap.script" : 
"/usr/lib/python2.6/site-packages/ambari_server/bootstrap.py",
+    "resources.dir" : "/var/lib/ambari-server/resources",
+    "server.version.file" : "/var/lib/ambari-server/resources/version",
+    "server.jdbc.user.passwd" : "/etc/ambari-server/conf/password.dat",
+    "user.inactivity.timeout.role.readonly.default" : "0",
+    "ambari.python.wrap" : "ambari-python-wrap",
+    "webapp.dir" : "/usr/lib/ambari-server/web",
+    "jdk1.8.home" : "/usr/jdk64/",
+    "agent.task.timeout" : "900",
+    "jdk1.8.dest-file" : "jdk-8u60-linux-x64.tar.gz",
+    "server.execution.scheduler.maxDbConnections" : "5",
+    "java.releases" : "jdk1.8,jdk1.7",
+    "jdk1.7.jcpol-url" : 
"http://public-repo-1.hortonworks.com/ARTIFACTS/UnlimitedJCEPolicyJDK7.zip";,
+    "server.jdbc.connection-pool" : "internal",
+    "server.execution.scheduler.misfire.toleration.minutes" : "480",
+    "shared.resources.dir" : 
"/usr/lib/ambari-server/lib/ambari_commons/resources",
+    "agent.threadpool.size.max" : "25",
+    "agent.stack.retry.tries" : "5",
+    "server.jdbc.database_name" : "ambari",
+    "java.home" : "/usr/jdk64/jdk1.8.0_40",
+    "bootstrap.setup_agent.script" : 
"/usr/lib/python2.6/site-packages/ambari_server/setupAgent.py",
+    "jdk1.7.desc" : "Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy 
Files 7",
+    "jdk1.8.re" : "(jdk.*)/jre",
+    "views.http.strict-transport-security" : "max-age=31536000",
+    "server.execution.scheduler.maxThreads" : "5",
+    "jce.name" : "jce_policy-8.zip",
+    "security.server.keys_dir" : "/var/lib/ambari-server/keys",
+    "views.http.x-frame-options" : "SAMEORIGIN",
+    "server.http.session.inactive_timeout" : "1800",
+    "bootstrap.dir" : "/var/run/ambari-server/bootstrap",
+    "jdk.download.supported" : "true",
+    "agent.package.install.task.timeout" : "1800",
+    "rolling.upgrade.skip.packages.prefixes" : "",
+    "user.inactivity.timeout.default" : "0",
+    "recommendations.dir" : "/var/run/ambari-server/stack-recommendations",
+    "jdk1.7.url" : 
"http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-7u67-linux-x64.tar.gz";,
+    "views.ambari.request.read.timeout.millis" : "10000",
+    "agent.stack.retry.on_repo_unavailability" : "false",
+    "jdk1.8.jcpol-url" : 
"http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip";,
+    "ambari-server.user" : "root",
+    "custom.action.definitions" : 
"/var/lib/ambari-server/resources/custom_action_definitions",
+    "server.os_type" : "centos6",
+    "server.persistence.type" : "local",
+    "server.connection.max.idle.millis" : "900000",
+    "http.x-xss-protection" : "1; mode=block",
+    "pid.dir" : "/var/run/ambari-server",
+    "jdk1.8.url" : 
"http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u60-linux-x64.tar.gz";,
+    "http.strict-transport-security" : "max-age=31536000",
+    "jdk1.8.jcpol-file" : "jce_policy-8.zip",
+    "server.tmp.dir" : "/var/lib/ambari-server/data/tmp",
+    "jdk1.7.re" : "(jdk.*)/jre",
+    "server.jdbc.user.name" : "ambari",
+    "jdk1.7.jcpol-file" : "UnlimitedJCEPolicyJDK7.zip",
+    "jce.download.supported" : "true",
+    "jdk1.8.desc" : "Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy 
Files 8",
+    "server.fqdn.service.url" : 
"http://169.254.169.254/latest/meta-data/public-hostname";,
+    "metadata.path" : "/var/lib/ambari-server/resources/stacks",
+    "views.ambari.request.connect.timeout.millis" : "5000",
+    "skip.service.checks" : "false",
+    "views.request.connect.timeout.millis" : "5000",
+    "stackadvisor.script" : 
"/var/lib/ambari-server/resources/scripts/stack_advisor.py",
+    "server.jdbc.database" : "postgres",
+    "views.http.x-xss-protection" : "1; mode=block",
+    "jdk1.7.dest-file" : "jdk-7u67-linux-x64.tar.gz",
+    "server.jdbc.postgres.schema" : "ambari",
+    "server.task.timeout" : "1200"
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/88984efd/ambari-server/src/test/python/stacks/2.5/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.5/common/test_stack_advisor.py 
b/ambari-server/src/test/python/stacks/2.5/common/test_stack_advisor.py
new file mode 100644
index 0000000..c21bad7
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/2.5/common/test_stack_advisor.py
@@ -0,0 +1,168 @@
+'''
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+import json
+import os
+import socket
+from unittest import TestCase
+from mock.mock import patch, MagicMock
+
+
+class TestHDP25StackAdvisor(TestCase):
+
+  def setUp(self):
+    import imp
+    self.maxDiff = None
+    self.testDirectory = os.path.dirname(os.path.abspath(__file__))
+    stackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/stack_advisor.py')
+    hdp206StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.0.6/services/stack_advisor.py')
+    hdp21StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.1/services/stack_advisor.py')
+    hdp22StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.2/services/stack_advisor.py')
+    hdp23StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.3/services/stack_advisor.py')
+    hdp24StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.4/services/stack_advisor.py')
+    hdp25StackAdvisorPath = os.path.join(self.testDirectory, 
'../../../../../main/resources/stacks/HDP/2.5/services/stack_advisor.py')
+    hdp25StackAdvisorClassName = 'HDP25StackAdvisor'
+
+    with open(stackAdvisorPath, 'rb') as fp:
+      imp.load_module('stack_advisor', fp, stackAdvisorPath, ('.py', 'rb', 
imp.PY_SOURCE))
+    with open(hdp206StackAdvisorPath, 'rb') as fp:
+      imp.load_module('stack_advisor_impl', fp, hdp206StackAdvisorPath, 
('.py', 'rb', imp.PY_SOURCE))
+    with open(hdp21StackAdvisorPath, 'rb') as fp:
+      imp.load_module('stack_advisor_impl', fp, hdp21StackAdvisorPath, ('.py', 
'rb', imp.PY_SOURCE))
+    with open(hdp22StackAdvisorPath, 'rb') as fp:
+      imp.load_module('stack_advisor_impl', fp, hdp22StackAdvisorPath, ('.py', 
'rb', imp.PY_SOURCE))
+    with open(hdp23StackAdvisorPath, 'rb') as fp:
+      stack_advisor_impl = imp.load_module('stack_advisor_impl', fp, 
hdp23StackAdvisorPath, ('.py', 'rb', imp.PY_SOURCE))
+    with open(hdp24StackAdvisorPath, 'rb') as fp:
+      stack_advisor_impl = imp.load_module('stack_advisor_impl', fp, 
hdp24StackAdvisorPath, ('.py', 'rb', imp.PY_SOURCE))
+    with open(hdp25StackAdvisorPath, 'rb') as fp:
+      stack_advisor_impl = imp.load_module('stack_advisor_impl', fp, 
hdp25StackAdvisorPath, ('.py', 'rb', imp.PY_SOURCE))
+    clazz = getattr(stack_advisor_impl, hdp25StackAdvisorClassName)
+    self.stackAdvisor = clazz()
+
+    # substitute method in the instance
+    self.get_system_min_uid_real = self.stackAdvisor.get_system_min_uid
+    self.stackAdvisor.get_system_min_uid = self.get_system_min_uid_magic
+
+  def load_json(self, filename):
+    file = os.path.join(self.testDirectory, filename)
+    with open(file, 'rb') as f:
+      data = json.load(f)
+    return data
+
+  def prepareHosts(self, hostsNames):
+    hosts = { "items": [] }
+    for hostName in hostsNames:
+      nextHost = {"Hosts":{"host_name" : hostName}}
+      hosts["items"].append(nextHost)
+    return hosts
+
+  @patch('__builtin__.open')
+  @patch('os.path.exists')
+  def get_system_min_uid_magic(self, exists_mock, open_mock):
+    class MagicFile(object):
+      def read(self):
+        return """
+        #test line UID_MIN 200
+        UID_MIN 500
+        """
+
+      def __exit__(self, exc_type, exc_val, exc_tb):
+        pass
+
+      def __enter__(self):
+        return self
+
+    exists_mock.return_value = True
+    open_mock.return_value = MagicFile()
+    return self.get_system_min_uid_real()
+
+
+  def __getHosts(self, componentsList, componentName):
+    return [component["StackServiceComponents"] for component in 
componentsList if component["StackServiceComponents"]["component_name"] == 
componentName][0]
+
+
+  def test_getComponentLayoutValidations_one_hsi_host(self):
+
+    hosts = self.load_json("host-3-hosts.json")
+    services = self.load_json("services-normal-his-2-hosts.json")
+
+    validations = self.stackAdvisor.getComponentLayoutValidations(services, 
hosts)
+    expected = {'component-name': 'HIVE_SERVER_INTERACTIVE', 'message': 
'Between 0 and 1 HiveServer2 Interactive components should be installed in 
cluster.', 'type': 'host-component', 'level': 'ERROR'}
+    self.assertEquals(validations[0], expected)
+
+
+  def test_validateHiveConfigurations(self):
+    properties = {'enable_hive_interactive': 'true',
+                  'hive_server_interactive_host': 'c6401.ambari.apache.org',
+                  'hive.tez.container.size': '2048'}
+    recommendedDefaults = {'enable_hive_interactive': 'true',
+                           "hive_server_interactive_host": 
"c6401.ambari.apache.org"}
+    configurations = {
+      "hive-interactive-env": {
+        "properties": {'enable_hive_interactive': 'true', 
'hive_server_interactive_host': 'c6401.ambari.apache.org'}
+      },
+      "hive-site": {
+        "properties": {"hive.security.authorization.enabled": "true", 
'hive.tez.java.opts': '-server -Djava.net.preferIPv4Stack=true'}
+      },
+      "hive-env": {
+        "properties": {"hive_security_authorization": "None"}
+      }
+    }
+    configurations2 = {
+      "hive-interactive-env": {
+        "properties": {'enable_hive_interactive': 'false'}
+      },
+      "hive-site": {
+        "properties": {"hive.security.authorization.enabled": "true", 
'hive.tez.java.opts': '-server -Djava.net.preferIPv4Stack=true'}
+      },
+      "hive-env": {
+        "properties": {"hive_security_authorization": "None"}
+      }
+    }
+    configurations3 = {
+      "hive-interactive-env": {
+        "properties": {'enable_hive_interactive': 'true', 
"hive_server_interactive_host": "c6402.ambari.apache.org"}
+      },
+      "hive-site": {
+        "properties": {"hive.security.authorization.enabled": "true", 
'hive.tez.java.opts': '-server -Djava.net.preferIPv4Stack=true'}
+      },
+      "hive-env": {
+        "properties": {"hive_security_authorization": "None"}
+      }
+    }
+    services = self.load_json("services-normal-his-valid.json")
+
+    res_expected = [
+    ]
+    # the above error is not what we are checking for - just to keep test 
happy without having to test
+    res = 
self.stackAdvisor.validateHiveInteractiveEnvConfigurations(properties, 
recommendedDefaults, configurations, services, {})
+    self.assertEquals(res, res_expected)
+
+    res_expected = [
+      {'config-type': 'hdfs-site', 'message': 'HIVE_SERVER_INTERACTIVE 
requires enable_hive_interactive in hive-interactive-env set to true.', 'type': 
'configuration', 'config-name': 'enable_hive_interactive', 'level': 'WARN'},
+      {'config-type': 'hdfs-site', 'message': 'HIVE_SERVER_INTERACTIVE 
requires hive_server_interactive_host in hive-interactive-env set to its host 
name.', 'type': 'configuration', 'config-name': 'hive_server_interactive_host', 
'level': 'WARN'}
+    ]
+    res = 
self.stackAdvisor.validateHiveInteractiveEnvConfigurations(properties, 
recommendedDefaults, configurations2, services, {})
+    self.assertEquals(res, res_expected)
+
+    res_expected = [
+      {'config-type': 'hdfs-site', 'message': 'HIVE_SERVER_INTERACTIVE 
requires hive_server_interactive_host in hive-interactive-env set to its host 
name.', 'type': 'configuration', 'config-name': 'hive_server_interactive_host', 
'level': 'WARN'}
+    ]
+    res = 
self.stackAdvisor.validateHiveInteractiveEnvConfigurations(properties, 
recommendedDefaults, configurations3, services, {})
+    self.assertEquals(res, res_expected)
\ No newline at end of file

Reply via email to