def test__get_ambari_info(self, patched): cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/version_1_3_2/resources/' 'default-cluster.template') test_host = base.TestServer('host1', 'test-master', '11111', 3, '111.11.1111', '222.11.1111') node_group = base.TestNodeGroup('ng1', [test_host], [ "AMBARI_SERVER", "NAMENODE", "DATANODE", "JOBTRACKER", "TASKTRACKER" ]) cluster = base.TestCluster([node_group]) cluster_config = cs.ClusterSpec(cluster_config_file) cluster_config.create_operational_config(cluster, []) plugin = ap.AmbariPlugin() #change port cluster_config.configurations['ambari']['server.port'] = '9000' ambari_info = plugin.get_ambari_info(cluster_config) self.assertEqual('9000', ambari_info.port) #remove port del cluster_config.configurations['ambari']['server.port'] ambari_info = plugin.get_ambari_info(cluster_config) self.assertEqual('8080', ambari_info.port)
def test__set_ambari_credentials__admin_only(self, client): client.side_effect = self._get_test_request self.requests = [] plugin = ap.AmbariPlugin() cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/version_1_3_2/resources/' 'default-cluster.template') cluster_spec = cs.ClusterSpec(cluster_config_file) ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') plugin._set_ambari_credentials(cluster_spec, ambari_info, '1.3.2') self.assertEqual(1, len(self.requests)) request = self.requests[0] self.assertEqual('put', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/admin', request.url) self.assertEqual( '{"Users":{"roles":"admin","password":"******",' '"old_password":"******"} }', request.data) self.assertEqual(('admin', 'old-pwd'), request.auth) self.assertEqual('admin', ambari_info.user) self.assertEqual('admin', ambari_info.password)
def test__set_ambari_credentials__admin_only(self): self.requests = [] plugin = ap.AmbariPlugin() plugin._get_rest_request = self._get_test_request with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: cluster_spec = cs.ClusterSpec(f.read()) ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') plugin._set_ambari_credentials(cluster_spec, ambari_info) self.assertEqual(1, len(self.requests)) request = self.requests[0] self.assertEqual('put', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/admin', request.url) self.assertEqual( '{"Users":{"roles":"admin,user","password":"******",' '"old_password":"******"} }', request.data) self.assertEqual(('admin', 'old-pwd'), request.auth) self.assertEqual('admin', ambari_info.user) self.assertEqual('admin', ambari_info.password)
def test_get_node_processes(self): plugin = ap.AmbariPlugin() #TODO(jspeidel): provide meaningful input service_components = plugin.get_node_processes(1) self.assertEqual(5, len(service_components)) components = service_components['HDFS'] self.assertIn('NAMENODE', components) self.assertIn('DATANODE', components) self.assertIn('SECONDARY_NAMENODE', components) self.assertIn('HDFS_CLIENT', components) components = service_components['MAPREDUCE'] self.assertIn('JOBTRACKER', components) self.assertIn('TASKTRACKER', components) self.assertIn('MAPREDUCE_CLIENT', components) components = service_components['GANGLIA'] self.assertIn('GANGLIA_SERVER', components) self.assertIn('GANGLIA_MONITOR', components) components = service_components['NAGIOS'] self.assertIn('NAGIOS_SERVER', components) components = service_components['AMBARI'] self.assertIn('AMBARI_SERVER', components) self.assertIn('AMBARI_AGENT', components)
def test_update_infra(self): plugin = ap.AmbariPlugin() cluster = TestCluster() plugin.update_infra(cluster) for node_group in cluster.node_groups: self.assertEqual(cluster.default_image_id, node_group.image)
def test_get_node_processes(self): plugin = ap.AmbariPlugin() service_components = plugin.get_node_processes('1.3.2') self.assertEqual(13, len(service_components)) components = service_components['HDFS'] self.assertIn('NAMENODE', components) self.assertIn('DATANODE', components) self.assertIn('SECONDARY_NAMENODE', components) self.assertIn('HDFS_CLIENT', components) components = service_components['MAPREDUCE'] self.assertIn('JOBTRACKER', components) self.assertIn('TASKTRACKER', components) self.assertIn('MAPREDUCE_CLIENT', components) components = service_components['GANGLIA'] self.assertIn('GANGLIA_SERVER', components) components = service_components['NAGIOS'] self.assertIn('NAGIOS_SERVER', components) components = service_components['AMBARI'] self.assertIn('AMBARI_SERVER', components) components = service_components['HCATALOG'] self.assertIn('HCAT', components) components = service_components['ZOOKEEPER'] self.assertIn('ZOOKEEPER_SERVER', components) self.assertIn('ZOOKEEPER_CLIENT', components) components = service_components['HIVE'] self.assertIn('HIVE_SERVER', components) self.assertIn('HIVE_METASTORE', components) self.assertIn('HIVE_CLIENT', components) self.assertIn('MYSQL_SERVER', components) components = service_components['PIG'] self.assertIn('PIG', components) components = service_components['WEBHCAT'] self.assertIn('WEBHCAT_SERVER', components) components = service_components['OOZIE'] self.assertIn('OOZIE_SERVER', components) self.assertIn('OOZIE_CLIENT', components) self.assertIn('SQOOP', service_components['SQOOP']) components = service_components['HBASE'] self.assertIn('HBASE_MASTER', components) self.assertIn('HBASE_REGIONSERVER', components) self.assertIn('HBASE_CLIENT', components)
def test_convert(self, ctx_func): plugin = ap.AmbariPlugin() cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/1_3_2/resources/default-cluster.template') cluster = plugin.convert(cluster_config_file, 'ambari', '1.3.2', 'test-plugin', create_cluster_template) normalized_config = cs.ClusterSpec(cluster_config_file).normalize() self.assertEqual(normalized_config.hadoop_version, cluster.hadoop_version) self.assertEqual(len(normalized_config.node_groups), len(cluster.node_groups))
def test_update_ambari_info_credentials(self): plugin = ap.AmbariPlugin() cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/1_3_2/resources/default-cluster.template') cluster_spec = cs.ClusterSpec(cluster_config_file) ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') plugin._update_ambari_info_credentials(cluster_spec, ambari_info) self.assertEqual('admin', ambari_info.user) self.assertEqual('admin', ambari_info.password)
def test_convert(self, ctx_func): plugin = ap.AmbariPlugin() with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: cluster = plugin.convert(f.read(), 'ambari', '1.3.0', create_cluster_template) with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: normalized_config = cs.ClusterSpec(f.read()).normalize() self.assertEqual(normalized_config.hadoop_version, cluster.hadoop_version) self.assertEqual(len(normalized_config.node_groups), len(cluster.node_groups))
def test_get_oozie_server(self): test_host = base.TestServer('host1', 'test-master', '11111', 3, '111.11.1111', '222.11.1111') node_group = base.TestNodeGroup('ng1', [test_host], [ "AMBARI_SERVER", "NAMENODE", "DATANODE", "JOBTRACKER", "TASKTRACKER", "OOZIE_SERVER" ]) cluster = base.TestCluster([node_group]) plugin = ap.AmbariPlugin() self.assertIsNotNone(plugin.get_oozie_server(cluster)) node_group = base.TestNodeGroup('ng1', [test_host], [ "AMBARI_SERVER", "NAMENODE", "DATANODE", "JOBTRACKER", "TASKTRACKER", "NOT_OOZIE" ]) cluster = base.TestCluster([node_group]) self.assertIsNone(plugin.get_oozie_server(cluster))
def test__get_ambari_info(self): cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/resources/default-cluster.template') cluster_config = cs.ClusterSpec(cluster_config_file) plugin = ap.AmbariPlugin() #change port cluster_config.configurations['ambari']['server.port'] = '9000' ambari_info = plugin.get_ambari_info( cluster_config, [TestHost('111.11.1111', 'master')]) self.assertEqual('9000', ambari_info.port) #remove port del cluster_config.configurations['ambari']['server.port'] ambari_info = plugin.get_ambari_info( cluster_config, [TestHost('111.11.1111', 'master')]) self.assertEqual('8080', ambari_info.port)
def test__set_ambari_credentials__no_admin_user(self): self.requests = [] plugin = ap.AmbariPlugin() plugin._get_rest_request = self._get_test_request with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: cluster_spec = cs.ClusterSpec(f.read()) for service in cluster_spec.services: if service.name == 'AMBARI': user = service.users[0] user.name = 'test' user.password = '******' user.groups = ['user'] self.assertRaises( ex.HadoopProvisionError, plugin._set_ambari_credentials(cluster_spec, '111.11.1111'))
def test__set_ambari_credentials__new_user_with_admin(self, client): self.requests = [] plugin = ap.AmbariPlugin() client.side_effect = self._get_test_request cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/version_1_3_2/resources/' 'default-cluster.template') cluster_spec = cs.ClusterSpec(cluster_config_file) for service in cluster_spec.services: if service.name == 'AMBARI': new_user = cs.User('test', 'test_pw', ['user']) service.users.append(new_user) ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') plugin._set_ambari_credentials(cluster_spec, ambari_info, '1.3.2') self.assertEqual(2, len(self.requests)) request = self.requests[0] self.assertEqual('put', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/admin', request.url) self.assertEqual( '{"Users":{"roles":"admin","password":"******",' '"old_password":"******"} }', request.data) self.assertEqual(('admin', 'old-pwd'), request.auth) request = self.requests[1] self.assertEqual('post', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/test', request.url) self.assertEqual('{"Users":{"password":"******","roles":"user"} }', request.data) self.assertEqual(('admin', 'admin'), request.auth) self.assertEqual('admin', ambari_info.user) self.assertEqual('admin', ambari_info.password)
def test__set_ambari_credentials__new_user_with_admin(self): self.requests = [] plugin = ap.AmbariPlugin() plugin._get_rest_request = self._get_test_request with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: cluster_spec = cs.ClusterSpec(f.read()) for service in cluster_spec.services: if service.name == 'AMBARI': new_user = cs.User('test', 'test_pw', ['user']) service.users.append(new_user) ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') plugin._set_ambari_credentials(cluster_spec, ambari_info) self.assertEqual(2, len(self.requests)) request = self.requests[0] self.assertEqual('put', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/admin', request.url) self.assertEqual( '{"Users":{"roles":"admin,user","password":"******",' '"old_password":"******"} }', request.data) self.assertEqual(('admin', 'old-pwd'), request.auth) request = self.requests[1] self.assertEqual('post', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/test', request.url) self.assertEqual('{"Users":{"password":"******","roles":"user"} }', request.data) self.assertEqual(('admin', 'admin'), request.auth) self.assertEqual('admin', ambari_info.user) self.assertEqual('admin', ambari_info.password)
def test__set_ambari_credentials__no_admin_user(self, client): self.requests = [] plugin = ap.AmbariPlugin() client.side_effect = self._get_test_request cluster_config_file = pkg.resource_string( version.version_info.package, 'plugins/hdp/versions/1_3_2/resources/default-cluster.template') cluster_spec = cs.ClusterSpec(cluster_config_file) for service in cluster_spec.services: if service.name == 'AMBARI': user = service.users[0] user.name = 'test' user.password = '******' user.groups = ['user'] ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin', 'old-pwd') self.assertRaises( ex.HadoopProvisionError, plugin._set_ambari_credentials(cluster_spec, ambari_info, '1.3.2'))
def test__set_ambari_credentials__new_user_no_admin(self): self.requests = [] plugin = ap.AmbariPlugin() plugin._get_rest_request = self._get_test_request with open( os.path.join(os.path.realpath('../plugins'), 'hdp', 'resources', 'default-cluster.template'), 'r') as f: cluster_spec = cs.ClusterSpec(f.read()) for service in cluster_spec.services: if service.name == 'AMBARI': user = service.users[0] user.name = 'test' user.password = '******' plugin._set_ambari_credentials(cluster_spec, '111.11.1111') self.assertEqual(2, len(self.requests)) request = self.requests[0] self.assertEqual('post', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/test', request.url) self.assertEqual( '{"Users":{"password":"******","roles":"admin,user"' '} }', request.data) self.assertEqual(('admin', 'admin'), request.auth) request = self.requests[1] self.assertEqual('delete', request.method) self.assertEqual('http://111.11.1111:8080/api/v1/users/admin', request.url) self.assertEqual(None, request.data) self.assertEqual(('test', 'test_pw'), request.auth) self.assertEqual('test', plugin.ambari_user) self.assertEqual('test_pw', plugin.ambari_password)