示例#1
0
    def _getParsedRow(self, filename, lineno, line):
        groups = line.split()  # NOT line.split(' ') due to MPP-15675
        if len(groups) not in [1, 2]:
            msg = "line %d of file %s: expected 1 or 2 groups but found %d" % (lineno, filename, len(groups))
            raise ExceptionNoStackTraceNeeded(msg)
        parts = groups[0].split('|')
        if len(parts) != 3:
            msg = "line %d of file %s: expected 3 parts on failed segment group, obtained %d" % (
                lineno, filename, len(parts))
            raise ExceptionNoStackTraceNeeded(msg)
        address, port, datadir = parts
        check_values(lineno, address=address, port=port, datadir=datadir)
        row = {
            'failedAddress': address,
            'failedPort': port,
            'failedDataDirectory': datadir,
            'lineno': lineno
        }
        if len(groups) == 2:
            parts2 = groups[1].split('|')
            if len(parts2) != 3:
                msg = "line %d of file %s: expected 3 parts on new segment group, obtained %d" % (
                    lineno, filename, len(parts2))
                raise ExceptionNoStackTraceNeeded(msg)
            address2, port2, datadir2 = parts2
            check_values(lineno, address=address2, port=port2, datadir=datadir2)
            row.update({
                'newAddress': address2,
                'newPort': port2,
                'newDataDirectory': datadir2
            })

        return row
示例#2
0
    def _parseConfigFile(config_file):
        """
        Parse the config file
        :param config_file:
        :return: List of dictionaries with each dictionary containing the failed and failover information??
        """
        rows = []
        with open(config_file) as f:
            for lineno, line in line_reader(f):

                groups = line.split()  # NOT line.split(' ') due to MPP-15675
                if len(groups) not in [1, 2]:
                    msg = "line %d of file %s: expected 1 or 2 groups but found %d" % (
                        lineno, config_file, len(groups))
                    raise ExceptionNoStackTraceNeeded(msg)
                parts = groups[0].split('|')
                if len(parts) != 3:
                    msg = "line %d of file %s: expected 3 parts on failed segment group, obtained %d" % (
                        lineno, config_file, len(parts))
                    raise ExceptionNoStackTraceNeeded(msg)
                address, port, datadir = parts
                check_values(lineno,
                             address=address,
                             port=port,
                             datadir=datadir)
                datadir = normalizeAndValidateInputPath(
                    datadir, f.name, lineno)

                row = {
                    'failedAddress': address,
                    'failedPort': port,
                    'failedDataDirectory': datadir,
                    'lineno': lineno
                }
                if len(groups) == 2:
                    parts2 = groups[1].split('|')
                    if len(parts2) != 3:
                        msg = "line %d of file %s: expected 3 parts on new segment group, obtained %d" % (
                            lineno, config_file, len(parts2))
                        raise ExceptionNoStackTraceNeeded(msg)
                    address2, port2, datadir2 = parts2
                    check_values(lineno,
                                 address=address2,
                                 port=port2,
                                 datadir=datadir2)
                    datadir2 = normalizeAndValidateInputPath(
                        datadir2, f.name, lineno)

                    row.update({
                        'newAddress': address2,
                        'newPort': port2,
                        'newDataDirectory': datadir2
                    })

                rows.append(row)

        RecoveryTripletsUserConfigFile._validate(rows)

        return rows
示例#3
0
 def _getParsedRow(self, filename, lineno, line):
     parts = line.split('|')
     if len(parts) != 4:
         msg = "line %d of file %s: expected 4 parts, obtained %d" % (lineno, filename, len(parts))
         raise ExceptionNoStackTraceNeeded(msg)
     content, address, port, datadir = parts
     check_values(lineno, address=address, port=port, datadir=datadir, content=content)
     return {
         'address': address,
         'port': port,
         'dataDirectory': datadir,
         'contentId': content,
         'lineno': lineno
     }
示例#4
0
 def test_check_values_negative(self):
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, address='')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, port='not_a_port')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, datadir='')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, content='not_a_content_id')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, hostname='')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, dbid='not_a_dbid')
     with self.assertRaises(ExceptionNoStackTraceNeeded):
         check_values(1, role='x')