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
