)]}'
{"freezer/backup.py":[{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    uploaded. A sql_server.conf_file is required for this operation."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    with open(backup_opt_dict.sql_server_conf, \u0027r\u0027) as sql_conf_file_fd:"},{"line_number":40,"context_line":"        parsed_config \u003d config.ini_parse(sql_conf_file_fd)"},{"line_number":41,"context_line":"    sql_server_instance \u003d parsed_config[\"instance\"]"},{"line_number":42,"context_line":"    # Dirty hack - please remove any modification of backup_opt_dict"},{"line_number":43,"context_line":"    backup_opt_dict.sql_server_instance \u003d sql_server_instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_78705b40","line":40,"updated":"2016-02-08 18:06:45.000000000","message":"We can leave .read() here","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    uploaded. A sql_server.conf_file is required for this operation."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    with open(backup_opt_dict.sql_server_conf, \u0027r\u0027) as sql_conf_file_fd:"},{"line_number":40,"context_line":"        parsed_config \u003d config.ini_parse(sql_conf_file_fd)"},{"line_number":41,"context_line":"    sql_server_instance \u003d parsed_config[\"instance\"]"},{"line_number":42,"context_line":"    # Dirty hack - please remove any modification of backup_opt_dict"},{"line_number":43,"context_line":"    backup_opt_dict.sql_server_instance \u003d sql_server_instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_1ea10ff8","line":40,"in_reply_to":"5a5ae5dd_78705b40","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    if not backup_opt_dict.mysql_conf:"},{"line_number":71,"context_line":"        raise ValueError(\u0027MySQL: please provide a valid config file\u0027)"},{"line_number":72,"context_line":"    with open(backup_opt_dict.mysql_conf, \u0027r\u0027) as mysql_file_fd:"},{"line_number":73,"context_line":"        parsed_config \u003d config.ini_parse(mysql_file_fd)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    # Initialize the DB object and connect to the db according to"},{"line_number":76,"context_line":"    # the db mysql backup file config"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_1892874c","line":73,"updated":"2016-02-08 18:06:45.000000000","message":"We can leave .read() here","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    if not backup_opt_dict.mysql_conf:"},{"line_number":71,"context_line":"        raise ValueError(\u0027MySQL: please provide a valid config file\u0027)"},{"line_number":72,"context_line":"    with open(backup_opt_dict.mysql_conf, \u0027r\u0027) as mysql_file_fd:"},{"line_number":73,"context_line":"        parsed_config \u003d config.ini_parse(mysql_file_fd)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    # Initialize the DB object and connect to the db according to"},{"line_number":76,"context_line":"    # the db mysql backup file config"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_dea6170e","line":73,"in_reply_to":"5a5ae5dd_1892874c","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"}],"freezer/config.py":[{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"INI \u003d re.compile(r\"^\\s*([^\u003d#\\s]+)\\s*\u003d[\\t]*([^#\\n]*)\\s*$\", re.MULTILINE)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def osrc_parse(fd):"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    :param fd:"},{"line_number":73,"context_line":"    :type fd: file descriptor"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_78c29b54","line":70,"updated":"2016-02-08 18:06:45.000000000","message":"And we can leave string here","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"INI \u003d re.compile(r\"^\\s*([^\u003d#\\s]+)\\s*\u003d[\\t]*([^#\\n]*)\\s*$\", re.MULTILINE)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def osrc_parse(fd):"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    :param fd:"},{"line_number":73,"context_line":"    :type fd: file descriptor"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_7e44c348","line":70,"in_reply_to":"5a5ae5dd_78c29b54","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    lines \u003d fd.read()"},{"line_number":77,"context_line":"    return find_all(EXPORT, lines)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def ini_parse(fd):"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    :param fd:"},{"line_number":82,"context_line":"    :type fd: file descriptor"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_d8562fcd","line":79,"updated":"2016-02-08 18:06:45.000000000","message":"Probably it is better to leave string here.","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    lines \u003d fd.read()"},{"line_number":77,"context_line":"    return find_all(EXPORT, lines)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def ini_parse(fd):"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    :param fd:"},{"line_number":82,"context_line":"    :type fd: file descriptor"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_3e4acb55","line":79,"in_reply_to":"5a5ae5dd_d8562fcd","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":"    try:"},{"line_number":86,"context_line":"        parser \u003d configparser.ConfigParser()"},{"line_number":87,"context_line":"        parser.readfp(fd)"},{"line_number":88,"context_line":"        return dict(parser.items(\u0027default\u0027))"},{"line_number":89,"context_line":"    except Exception as e:"},{"line_number":90,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_18bda7d7","line":87,"updated":"2016-02-08 18:06:45.000000000","message":"Probably it is better to create StringIO here from string\n\nhttp://stackoverflow.com/questions/21766451/how-to-read-config-from-string-or-list","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":"    try:"},{"line_number":86,"context_line":"        parser \u003d configparser.ConfigParser()"},{"line_number":87,"context_line":"        parser.readfp(fd)"},{"line_number":88,"context_line":"        return dict(parser.items(\u0027default\u0027))"},{"line_number":89,"context_line":"    except Exception as e:"},{"line_number":90,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_5e454740","line":87,"in_reply_to":"5a5ae5dd_18bda7d7","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    except Exception as e:"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            # TODO: Remove the parsing of ini-like file via regex"},{"line_number":92,"context_line":"            lines \u003d fd.seek(0) # ConfigParse moved the cursor"},{"line_number":93,"context_line":"            lines \u003d fd.read()"},{"line_number":94,"context_line":"            conf \u003d find_all(INI, lines)"},{"line_number":95,"context_line":"            logging.warning(\"Using non-INI files for database configuration\""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_380bc3d7","line":92,"updated":"2016-02-08 18:06:45.000000000","message":"If we have string here, we don\u0027t need to do seek and reread file","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    except Exception as e:"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            # TODO: Remove the parsing of ini-like file via regex"},{"line_number":92,"context_line":"            lines \u003d fd.seek(0) # ConfigParse moved the cursor"},{"line_number":93,"context_line":"            lines \u003d fd.read()"},{"line_number":94,"context_line":"            conf \u003d find_all(INI, lines)"},{"line_number":95,"context_line":"            logging.warning(\"Using non-INI files for database configuration\""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_de6ff7c1","line":92,"in_reply_to":"5a5ae5dd_380bc3d7","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"}],"freezer/main.py":[{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"def parse_osrc(file_name):"},{"line_number":186,"context_line":"    with open(file_name, \u0027r\u0027) as osrc_file_fd:"},{"line_number":187,"context_line":"        return config.osrc_parse(osrc_file_fd)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def storage_from_dict(backup_args, work_dir, max_segment_size,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_f8ac4ba0","line":187,"updated":"2016-02-08 18:06:45.000000000","message":"We can leave string here","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"def parse_osrc(file_name):"},{"line_number":186,"context_line":"    with open(file_name, \u0027r\u0027) as osrc_file_fd:"},{"line_number":187,"context_line":"        return config.osrc_parse(osrc_file_fd)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def storage_from_dict(backup_args, work_dir, max_segment_size,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_3e616bd3","line":187,"in_reply_to":"5a5ae5dd_f8ac4ba0","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"}],"tests/test_config.py":[{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        export OS_AUTH_VERSION\u003d3"},{"line_number":32,"context_line":"        export OS_CACERT\u003d/etc/ssl/certs/ca-certificates.crt"},{"line_number":33,"context_line":"        export OS_ENDPOINT_TYPE\u003dinternalURL\"\"\""},{"line_number":34,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":35,"context_line":"        res \u003d config.osrc_parse(fd)"},{"line_number":36,"context_line":"        self.assertEqual(\"http://abracadabra/v3\", res[\"OS_AUTH_URL\"])"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_78993b78","line":34,"updated":"2016-02-08 18:06:45.000000000","message":"So we can work with string here as well","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        export OS_AUTH_VERSION\u003d3"},{"line_number":32,"context_line":"        export OS_CACERT\u003d/etc/ssl/certs/ca-certificates.crt"},{"line_number":33,"context_line":"        export OS_ENDPOINT_TYPE\u003dinternalURL\"\"\""},{"line_number":34,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":35,"context_line":"        res \u003d config.osrc_parse(fd)"},{"line_number":36,"context_line":"        self.assertEqual(\"http://abracadabra/v3\", res[\"OS_AUTH_URL\"])"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_3e33abf7","line":34,"in_reply_to":"5a5ae5dd_78993b78","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":46,"context_line":"         spaced \u003d   value\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":49,"context_line":"        res \u003d config.ini_parse(fd)"},{"line_number":50,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, res[\u0027host\u0027])"},{"line_number":51,"context_line":"        self.assertEqual(\u0027openstack\u0027, res[\u0027user\u0027])"},{"line_number":52,"context_line":"        self.assertEqual(\u00273306\u0027, res[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_188b6720","line":49,"updated":"2016-02-08 18:06:45.000000000","message":"So we can work with string here as well","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":46,"context_line":"         spaced \u003d   value\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":49,"context_line":"        res \u003d config.ini_parse(fd)"},{"line_number":50,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, res[\u0027host\u0027])"},{"line_number":51,"context_line":"        self.assertEqual(\u0027openstack\u0027, res[\u0027user\u0027])"},{"line_number":52,"context_line":"        self.assertEqual(\u00273306\u0027, res[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_5e2ea78c","line":49,"in_reply_to":"5a5ae5dd_188b6720","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":15358,"name":"Eldar Nugaev","email":"eldar.nugaev@hp.com","username":"eldar"},"change_message_id":"e9d2becf88d43253397190a092e441dd3c385f40","unresolved":false,"context_lines":[{"line_number":66,"context_line":"         spaced \u003d   value\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":69,"context_line":"        res \u003d config.ini_parse(fd)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, res[\u0027host\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(\u0027openstack\u0027, res[\u0027user\u0027])"},{"line_number":72,"context_line":"        self.assertEqual(\u00273306\u0027, res[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_388e632e","line":69,"updated":"2016-02-08 18:06:45.000000000","message":"So we can work with string here as well","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"},{"author":{"_account_id":14509,"name":"Pierre Mathieu","email":"pierre-arthur.mathieu@hpe.com","username":"slashme"},"change_message_id":"dadd299c16468db4866ea97caa3cdef28b997e51","unresolved":false,"context_lines":[{"line_number":66,"context_line":"         spaced \u003d   value\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        fd \u003d StringIO.StringIO(string)"},{"line_number":69,"context_line":"        res \u003d config.ini_parse(fd)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, res[\u0027host\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(\u0027openstack\u0027, res[\u0027user\u0027])"},{"line_number":72,"context_line":"        self.assertEqual(\u00273306\u0027, res[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_1e534f18","line":69,"in_reply_to":"5a5ae5dd_388e632e","updated":"2016-02-08 18:40:53.000000000","message":"Done","commit_id":"f816e62c053651f45ce174e43509850c14d6c123"}]}
