示例#1
0
    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])
        cluster.hadoop_version = '2.0.6'
        plugin = ap.AmbariPlugin()

        self.assertIsNotNone(
            plugin.get_edp_engine(cluster,
                                  edp.JOB_TYPE_PIG).get_oozie_server(cluster))

        node_group = base.TestNodeGroup('ng1', [test_host], [
            "AMBARI_SERVER", "NAMENODE", "DATANODE", "JOBTRACKER",
            "TASKTRACKER", "NOT_OOZIE"
        ])
        cluster = base.TestCluster([node_group])
        cluster.hadoop_version = '2.0.6'
        self.assertIsNone(
            plugin.get_edp_engine(cluster,
                                  edp.JOB_TYPE_PIG).get_oozie_server(cluster))
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 def test_get_node_processes(self):
     plugin = ap.AmbariPlugin()
     service_components = plugin.get_node_processes('2.0.6')
     self.assertEqual(
         {
             'YARN': ['RESOURCEMANAGER', 'YARN_CLIENT', 'NODEMANAGER'],
             'GANGLIA': ['GANGLIA_SERVER'],
             'HUE': ['HUE'],
             'HIVE': [
                 'HIVE_SERVER', 'HIVE_METASTORE', 'HIVE_CLIENT',
                 'MYSQL_SERVER'
             ],
             'OOZIE': ['OOZIE_SERVER', 'OOZIE_CLIENT'],
             'HDFS': [
                 'NAMENODE', 'DATANODE', 'SECONDARY_NAMENODE',
                 'HDFS_CLIENT', 'JOURNALNODE', 'ZKFC'
             ],
             'SQOOP': ['SQOOP'],
             'MAPREDUCE2': ['HISTORYSERVER', 'MAPREDUCE2_CLIENT'],
             'ZOOKEEPER': ['ZOOKEEPER_SERVER', 'ZOOKEEPER_CLIENT'],
             'HBASE':
             ['HBASE_MASTER', 'HBASE_REGIONSERVER', 'HBASE_CLIENT'],
             'HCATALOG': ['HCAT'],
             'NAGIOS': ['NAGIOS_SERVER'],
             'AMBARI': ['AMBARI_SERVER'],
             'WEBHCAT': ['WEBHCAT_SERVER'],
             'PIG': ['PIG']
         }, service_components)
示例#5
0
    def test_edp206_calls_hadoop2_create_dir(self, create_dir):
        cluster = base.TestCluster([])
        cluster.plugin_name = 'hdp'
        cluster.hadoop_version = '2.0.6'
        plugin = ap.AmbariPlugin()
        plugin.get_edp_engine(cluster, edp.JOB_TYPE_PIG).create_hdfs_dir(
            mock.Mock(), '/tmp')

        self.assertEqual(1, create_dir.call_count)
示例#6
0
    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)
示例#7
0
    def test_convert(self):
        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 = 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))
示例#8
0
    def test_update_ambari_info_credentials(self):
        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._update_ambari_info_credentials(cluster_spec, ambari_info)

        self.assertEqual('admin', ambari_info.user)
        self.assertEqual('admin', ambari_info.password)
示例#9
0
    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)
示例#10
0
    def test__set_ambari_credentials__new_user_no_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_2_0_6/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 = '******'

        ambari_info = ap.AmbariInfo(TestHost('111.11.1111'), '8080', 'admin',
                                    'old-pwd')
        plugin._set_ambari_credentials(cluster_spec, ambari_info, '2.0.6')
        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"'
            '} }', request.data)
        self.assertEqual(('admin', 'old-pwd'), 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.assertIsNone(request.data)
        self.assertEqual(('test', 'test_pw'), request.auth)
        self.assertEqual('test', ambari_info.user)
        self.assertEqual('test_pw', ambari_info.password)
示例#11
0
    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/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':
                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'))