)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"a852281939585bc991a8f53381dfbb58a698eb3f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[zm] Periodic Secondary zone refresh task"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia619153e63da27f4555fb9a719214e54dfb5a26a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a4dcd0f_02df5e0d","line":9,"updated":"2015-08-13 12:32:20.000000000","message":"This Closes-Bug: 1432850, we need to get better at that.. Every release I wast hours finding bugs / bps that are actually implemented, but didn\u0027t have the correct tags!","commit_id":"d68c6517b1549f25217eb1109499f100ace0ecc8"}],"designate/central/service.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c6d129f65142dd3c971a7f660fa7ec2ec29dcaf8","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"                context, domain, srv, 3, 1, 3, 0)"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"            # Perform XFR if serial\u0027s are not equal"},{"line_number":1060,"context_line":"            if serial !\u003d domain.serial:"},{"line_number":1061,"context_line":"                msg \u003d _LI("},{"line_number":1062,"context_line":"                    \"Serial %(srv_serial)d is not equal to zone\u0027s %(serial)d,\""},{"line_number":1063,"context_line":"                    \" performing AXFR\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_caec96bd","line":1060,"updated":"2015-08-11 15:52:07.000000000","message":"should this not be serial \u003c domain.serial ?","commit_id":"65ef377be8e90cabe999b9831b286d0bff72bf85"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"a852281939585bc991a8f53381dfbb58a698eb3f","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"        if domain.type \u003d\u003d \u0027SECONDARY\u0027:"},{"line_number":1052,"context_line":"            # Ensure the format of the servers are correct, then poll the"},{"line_number":1053,"context_line":"            # serial"},{"line_number":1054,"context_line":"            srv \u003d random.choice(dnsutils.expand_servers(domain.masters))"},{"line_number":1055,"context_line":"            srv \u003d objects.PoolNameserver(host\u003dsrv[\"ip\"], port\u003dsrv[\"port\"])"},{"line_number":1056,"context_line":"            status, serial, retries \u003d self.mdns_api.get_serial_number("},{"line_number":1057,"context_line":"                context, domain, srv, 3, 1, 3, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_22ee1a22","line":1054,"updated":"2015-08-13 12:32:20.000000000","message":"If Graham\u0027s change lands first, domain.masters will now be a normal object and you can likely swap the expand_servers(..) for domain.masters.to_list(), bearing in mind it\u0027s host and part rather than ip and port. This PoolNameserver creation etc can actually be skipped too - the DomainMaster object will work as is.","commit_id":"d68c6517b1549f25217eb1109499f100ace0ecc8"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"a5fb1907cc91769c9d6e6c7271f33e7a52382d73","unresolved":false,"context_lines":[{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"        if domain.type \u003d\u003d \u0027SECONDARY\u0027:"},{"line_number":1064,"context_line":"            self.mdns_api.perform_zone_xfr(context, domain)"},{"line_number":1065,"context_line":"        else:"},{"line_number":1066,"context_line":"            msg \u003d \"Can\u0027t XFR a non Secondary zone.\""},{"line_number":1067,"context_line":"            raise exceptions.BadRequest(msg)"},{"line_number":1068,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_7ba60eac","side":"PARENT","line":1065,"updated":"2015-09-07 18:04:56.000000000","message":"Maybe this check could be done at the top of the method and avoid nesting the XFR code in a big \"if\"","commit_id":"9350ea7ad0d2ea2085a0dbc05ee6a93d8b08c4c6"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"a5fb1907cc91769c9d6e6c7271f33e7a52382d73","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"            status, serial, retries \u003d self.mdns_api.get_serial_number("},{"line_number":1068,"context_line":"                context, domain, srv, 3, 1, 3, 0)"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"            # Perform XFR if serial\u0027s are not equal"},{"line_number":1071,"context_line":"            if serial \u003e domain.serial:"},{"line_number":1072,"context_line":"                msg \u003d _LI("},{"line_number":1073,"context_line":"                    \"Serial %(srv_serial)d is not equal to zone\u0027s %(serial)d,\""}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_fbb45ef1","line":1070,"updated":"2015-09-07 18:04:56.000000000","message":"The XFR is performed only if serial \u003e domain.serial\n\n(btw, \"serial\u0027s\" should be \"serials\"?)","commit_id":"6b1c8f9d5214de7921f884d08844f4a38dd8b8e1"}],"designate/tests/test_api/test_v2/test_zones.py":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"a5fb1907cc91769c9d6e6c7271f33e7a52382d73","unresolved":false,"context_lines":[{"line_number":565,"context_line":"                \u0027/zones/%s/tasks/xfr\u0027 % zone[\u0027id\u0027],"},{"line_number":566,"context_line":"                None, status\u003d202)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        self.assertTrue(mdns.perform_zone_xfr.called)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"        # Check the headers are what we expect"},{"line_number":571,"context_line":"        self.assertEqual(202, response.status_int)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_9b41a2ab","line":568,"updated":"2015-09-07 18:04:56.000000000","message":"Does it make sense to also check the parameters received by perform_zone_xfr?","commit_id":"6b1c8f9d5214de7921f884d08844f4a38dd8b8e1"}],"designate/tests/test_central/test_service.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"a852281939585bc991a8f53381dfbb58a698eb3f","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"            mdns.get_serial_number.return_value \u003d (\u0027SUCCESS\u0027, 1, 1, )"},{"line_number":1023,"context_line":"            self.central_service.xfr_domain(self.admin_context, secondary.id)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"        self.assertFalse(mdns.perform_zone_xfr.called)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"    def test_xfr_domain_invalid_type(self):"},{"line_number":1028,"context_line":"        domain \u003d self.create_domain()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_22637ab2","line":1025,"updated":"2015-08-13 12:32:20.000000000","message":"Can we add a `test_xfr_domain_lower_serial` test too please :)","commit_id":"d68c6517b1549f25217eb1109499f100ace0ecc8"}],"designate/tests/unit/test_zone_manager/test_tasks.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"a852281939585bc991a8f53381dfbb58a698eb3f","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        # Mock a ctxt..."},{"line_number":229,"context_line":"        self.ctxt \u003d mock.Mock()"},{"line_number":230,"context_line":"        get_admin_ctxt_patcher \u003d mock.patch.object(context.DesignateContext,"},{"line_number":231,"context_line":"                                            \u0027get_admin_context\u0027)"},{"line_number":232,"context_line":"        get_admin_context \u003d get_admin_ctxt_patcher.start()"},{"line_number":233,"context_line":"        get_admin_context.return_value \u003d self.ctxt"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_22d85a52","line":231,"updated":"2015-08-13 12:32:20.000000000","message":"I know pep8 doesn\u0027t require it, but can we make sure things are aligned? People keep fixing these is later reviews ;)\n\nEither \u0027get..\u0027 should be aligned with the \"context...\", or both args should be wrapped to a newline and indented 1 level.","commit_id":"d68c6517b1549f25217eb1109499f100ace0ecc8"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"a5fb1907cc91769c9d6e6c7271f33e7a52382d73","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            _iter.return_value \u003d [zone]"},{"line_number":275,"context_line":"            self.task()"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        self.assertEqual(False, self.central.xfr_domain.called)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_9b3761e2","line":277,"updated":"2015-09-07 18:04:56.000000000","message":"(you can use assertFalse - same for test_refresh_no_zone)","commit_id":"6b1c8f9d5214de7921f884d08844f4a38dd8b8e1"}],"designate/zone_manager/tasks.py":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"a5fb1907cc91769c9d6e6c7271f33e7a52382d73","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            transferred \u003d timeutils.parse_isotime(zone.transferred_at)"},{"line_number":154,"context_line":"            seconds \u003d timeutils.delta_seconds(transferred, now)"},{"line_number":155,"context_line":"            if seconds \u003e zone.refresh:"},{"line_number":156,"context_line":"                msg \u003d \"Zone %(id)s has %(seconds)d seconds since last transfer, \" \\"},{"line_number":157,"context_line":"                      \"executing AXFR\""},{"line_number":158,"context_line":"                LOG.debug(msg % {\"id\": zone.id, \"seconds\": seconds})"},{"line_number":159,"context_line":"                self.central_api.xfr_domain(ctxt, zone.id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_7b228d53","line":156,"updated":"2015-09-07 18:04:56.000000000","message":"Could the for loop take minutes? If so maybe \"now\" should be updated on each run.","commit_id":"6b1c8f9d5214de7921f884d08844f4a38dd8b8e1"}],"setup.cfg":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c6d129f65142dd3c971a7f660fa7ec2ec29dcaf8","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"designate.zone_manager_tasks \u003d"},{"line_number":114,"context_line":"    periodic_exists \u003d designate.zone_manager.tasks:PeriodicExistsTask"},{"line_number":115,"context_line":"\tperiodic_secondary_refresh \u003d designate.zone_manager.tasks:PeriodicSecondaryRefreshTask"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"[build_sphinx]"},{"line_number":118,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"1a4dcd0f_ca1a56c6","line":115,"updated":"2015-08-11 15:52:07.000000000","message":"tabs","commit_id":"65ef377be8e90cabe999b9831b286d0bff72bf85"}]}
