Beispiel #1
0
 def parse_file(self, request_file):
     """
     Args:
         request_file: instance of open()
     Returns:
         list(ibis.inventory.request_inventory.Request)
     """
     requests, msg, log_msg = parse_file_by_sections(
         request_file, '[Request]', REQUIRED_FIELDS, OPTIONAL_FIELDS)
     self.logger.warning(log_msg)
     self.log_msg = log_msg
     temp_reqs = []
     if not msg:
         temp_reqs = [Request(req, self.cfg_mgr) for req in requests]
     return temp_reqs, msg
Beispiel #2
0
 def test_parse_kite_request(self):
     required_fields = ['source_database_name', 'source_table_name',
                        'hdfs_loc']
     optional_fields = []
     expected_request = [{'source_database_name': 'database_one',
                          'hdfs_loc': '/test/hdfs/loc',
                          'source_table_name': 'table_one'},
                         {'source_database_name': 'database_one',
                          'hdfs_loc': '/test/hdfs/loc',
                          'source_table_name': 'table_two'}]
     file_h = open(os.path.join(BASE_DIR,
                                'test_resources/kite_request.txt'), 'r')
     requests, msg, _ = parse_file_by_sections(file_h, '[Request]',
                                               required_fields,
                                               optional_fields)
     self.assertEquals(expected_request, requests)
Beispiel #3
0
def create(tables_fh, cfg_mgr, timeout):
    """Start it table generation."""
    auto = ''
    manual = ''
    auto_fh = None

    if not timeout:
        timeout = 1800
    requests, msg, _ = parse_file_by_sections(tables_fh, '[Request]', REQ_KEYS,
                                              OPTIONAL_FIELDS)

    if msg:
        return auto_fh

    for request in requests:
        inv = ITInventory(cfg_mgr)
        db_table_dict = inv.get_table_mapping(
            request['source_database_name'].lower(),
            request['source_table_name'].lower(), request['db_env'].lower())
        if db_table_dict:
            it_table_obj = ItTable(db_table_dict, cfg_mgr)
        else:
            it_table_obj = ItTable(request, cfg_mgr)

        src_obj = get_src_obj(cfg_mgr, it_table_obj)
        status, it_table_str = src_obj.generate_it_table(timeout)

        if status == 'auto':
            auto += it_table_str + '\n'
        elif status == 'manual':
            manual += it_table_str + '\n'

    parent_dir = os.path.dirname(os.path.abspath(tables_fh.name))
    auto_file_path = parent_dir + '/AUTO_it-tables.txt'
    manual_file_path = parent_dir + '/MANUAL_it-tables.txt'
    src_obj.write_it_table_files(auto_file_path, auto)
    src_obj.write_it_table_files(manual_file_path, manual)

    if auto:
        auto_fh = open(auto_file_path, 'r')
    return auto_fh