)]}'
{"designate/central/rpcapi.py":[{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"d0473455074d26e993614d10abd7acb19f353962","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003d\u00274.3\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_instance(cls):"},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        The rpc.get_client() which is called upon the API object initialization"},{"line_number":64,"context_line":"        will cause a assertion error if the designate.rpc.TRANSPORT isn\u0027t setup"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_6b10b04e","line":61,"updated":"2014-12-02 19:42:07.000000000","message":"Maybe there\u0027s a reason why not, but isn\u0027t the pattern we\u0027ve been using to do this in MiniDNS\u0027 __init__.py if that\u0027s where it\u0027s being used? \n\nLike: \nhttps://github.com/openstack/designate/blob/master/designate/central/__init__.py#L53\n\nand\n\nhttps://github.com/openstack/designate/blob/master/designate/mdns/__init__.py#L58","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"4f0bcdcca9d3aee4efcd5feb17e636f89d1cb813","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003d\u00274.3\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_instance(cls):"},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        The rpc.get_client() which is called upon the API object initialization"},{"line_number":64,"context_line":"        will cause a assertion error if the designate.rpc.TRANSPORT isn\u0027t setup"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_4dd19956","line":61,"in_reply_to":"5a890539_6b10b04e","updated":"2014-12-09 12:09:18.000000000","message":"I actually prefer this way, as we don\u0027t duplicate the get_X_api() methods in each service, that said, we should probably update them all at once!\n\nIMO - Either let\u0027s switch this to match the others, or add another patchset under this one that updates them all to use the same pattern","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"4e1c222e38c1a527d7985366229f968f47a02367","unresolved":false,"context_lines":[{"line_number":26,"context_line":"CENTRAL_API \u003d None"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CENTRAL_API \u003d None"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class CentralAPI(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_a04f43bc","line":29,"updated":"2015-02-03 21:31:06.000000000","message":"Looks like this is already there on L26","commit_id":"4c10daf7261d6872e33b77d73ec8fdd69ca54b53"}],"designate/central/service.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"bf12c072ea78ab326801661dee6ada8649a932cd","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            if domain.type \u003d\u003d \u0027SECONDARY\u0027:"},{"line_number":1035,"context_line":"                # Purge anything that shouldn\u0027t be there :P"},{"line_number":1036,"context_line":"                for i in set([i.id for i in data.values()]) - keep:"},{"line_number":1037,"context_line":"                    self.delete_recordset(context, domain.id, i,"},{"line_number":1038,"context_line":"                                          increment_serial\u003dFalse)"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"        domain \u003d self.storage.update_domain(context, domain)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_0700a0a9","line":1037,"updated":"2014-12-04 20:04:27.000000000","message":"The above lines would always throw an exception. In your other change (https://review.openstack.org/#/c/133682/10/designate/central/service.py) you have\n\n if domain.type \u003d\u003d \u0027SECONDARY\u0027:\n\tmsg \u003d \u0027Not allowed to delete RecordSet in a SECONDARY zone\u0027\n\traise exceptions.BadRequest(msg)","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"225ba6b16ff46597a2be4a559a7c0863369d3f11","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            if domain.type \u003d\u003d \u0027SECONDARY\u0027:"},{"line_number":1035,"context_line":"                # Purge anything that shouldn\u0027t be there :P"},{"line_number":1036,"context_line":"                for i in set([i.id for i in data.values()]) - keep:"},{"line_number":1037,"context_line":"                    self.delete_recordset(context, domain.id, i,"},{"line_number":1038,"context_line":"                                          increment_serial\u003dFalse)"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"        domain \u003d self.storage.update_domain(context, domain)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_b3489a88","line":1037,"in_reply_to":"5a890539_0700a0a9","updated":"2014-12-09 14:00:42.000000000","message":"Done","commit_id":"38675d57cc735426a98823b87f841b30594cf525"}],"designate/dnsutils.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"c67b1d4f32dec227ab5dfe7c4b616ea0bcb091c8","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    return raw_zone"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"def sync_zone(context, domain, master_addr\u003dNone):"},{"line_number":284,"context_line":"    \"\"\""},{"line_number":285,"context_line":"    Synchronizes a domain using a passed master_addr or one of the domain\u0027s"},{"line_number":286,"context_line":"    master\u0027s to the state of the master."}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_bf994270","line":283,"updated":"2015-02-09 23:13:10.000000000","message":"The function above - do_axfr and this function sync_zone, do nearly the same things - can we consolidate these 2 functions into 1?","commit_id":"2d99922f5ce56cf31e860ec6944e9fd9bfef718b"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f93a117e3476d562b7f0d5b5dd2245b37ad9812c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    values \u003d {"},{"line_number":125,"context_line":"        \u0027name\u0027: dnspython_zone.origin.to_text(),"},{"line_number":126,"context_line":"        \u0027email\u0027: email,"},{"line_number":127,"context_line":"        \u0027ttl\u0027: soa.ttl,"},{"line_number":128,"context_line":"        \u0027serial\u0027: soa[0].serial,"},{"line_number":129,"context_line":"        \u0027retry\u0027: soa[0].retry,"},{"line_number":130,"context_line":"        \u0027expire\u0027: soa[0].expire"}],"source_content_type":"text/x-python","patch_set":42,"id":"9a80dd14_d6cb9c50","line":127,"updated":"2015-03-16 14:25:24.000000000","message":"should this be:\n\n  soa[0].ttl ?","commit_id":"fa7e1397b769b80c01ec586317e7f6086070ef35"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f93a117e3476d562b7f0d5b5dd2245b37ad9812c","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                continue"},{"line_number":238,"context_line":"        except Exception:"},{"line_number":239,"context_line":"            msg \u003d _LE(\"There was a problem with AXFR. Trying next server.\")"},{"line_number":240,"context_line":"            LOG.exception(msg)"},{"line_number":241,"context_line":"            continue"},{"line_number":242,"context_line":"        finally:"},{"line_number":243,"context_line":"            timeout.cancel()"}],"source_content_type":"text/x-python","patch_set":42,"id":"9a80dd14_36bdd8b1","line":240,"updated":"2015-03-16 14:25:24.000000000","message":"this shouldn\u0027t be an exception - this should be logged as an error\n\nwe should also be intelligent about what error is happening:\n\neg \n\nthis: (no route to host)\n\n  2015-03-16 14:07:32.905 1464 ERROR designate.dnsutils [-] There was a problem with AXFR. Trying next server.\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils Traceback (most recent call last):\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/designate/dnsutils.py\", line 231, in do_axfr \n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils     raw_zone \u003d dns.zone.from_xfr(xfr, relativize\u003dFalse)\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/dns/zone.py\", line 1026, in from_xfr \n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils     for r in xfr:\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/dns/query.py\", line 412, in xfr\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils     _net_write(s, tcpmsg, expiration)\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/dns/query.py\", line 260, in _net_write\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils     current +\u003d sock.send(data[current:])\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/eventlet/greenio.py\", line 351, in send\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils     return fd.send(data, flags)\n  2015-03-16 14:07:32.905 1464 TRACE designate.dnsutils error: [Errno 113] No route to host\n\nshould be logged differently to\n\nthis (Specified master doesn\u0027t have the domain)\n\n  2015-03-16 14:17:03.092 1464 INFO designate.dnsutils [-] Doing AXFR for foo5.bar.com. from {\u0027ip\u0027: u\u002710.0.3.126\u0027, \u0027port\u0027: 53}\n  2015-03-16 14:17:03.093 1464 ERROR designate.dnsutils [-] There was a problem with AXFR. Trying next server.\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils Traceback (most recent call last):\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/designate/dnsutils.py\", line 231, in do_axfr\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils     raw_zone \u003d dns.zone.from_xfr(xfr, relativize\u003dFalse)\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/dns/zone.py\", line 1026, in from_xfr\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils     for r in xfr:\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils   File \"/home/graham/repos/github/openstack/designate/.venv/local/lib/python2.7/site-packages/dns/query.py\", line 446, in xfr\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils     raise dns.exception.FormError(\"No answer or RRset not for qname\")\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils FormError: No answer or RRset not for qname\n  2015-03-16 14:17:03.093 1464 TRACE designate.dnsutils \n\nwe should catch the 90% use cases (these 2), and then log the exception - logging exceptions makes life really difficult when reading logs","commit_id":"fa7e1397b769b80c01ec586317e7f6086070ef35"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f93a117e3476d562b7f0d5b5dd2245b37ad9812c","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        finally:"},{"line_number":243,"context_line":"            timeout.cancel()"},{"line_number":244,"context_line":"    else:"},{"line_number":245,"context_line":"        msg \u003d _LE(\"XFR failed for %s. No servers was reached.\") % zone_name"},{"line_number":246,"context_line":"        raise exceptions.XFRFailure(msg)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    LOG.debug(\"AXFR Successful for %s\" % raw_zone.origin.to_text())"}],"source_content_type":"text/x-python","patch_set":42,"id":"9a80dd14_fce23f9e","line":245,"updated":"2015-03-16 14:25:24.000000000","message":"small nit - s/was/were/\n\nWe should also log the addresses / names of the servers.","commit_id":"fa7e1397b769b80c01ec586317e7f6086070ef35"}],"designate/mdns/handler.py":[{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"71e9c75cbf86f6ac5d7ed58a2a10f7f90aa1c1f4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        # We check if the src_master which is the assumed master for the zone"},{"line_number":95,"context_line":"        # that is sending this NOTIFY OP is actually the master. If it\u0027s not"},{"line_number":96,"context_line":"        # We\u0027ll reply but don\u0027t do anything with the NOTIFY."},{"line_number":97,"context_line":"        if notify_addr not in domain_masters:"},{"line_number":98,"context_line":"            msg \u003d \"NOTIFY for %s from non-master server %s, ignoring.\""},{"line_number":99,"context_line":"            LOG.warn(msg, domain.name, notify_addr)"},{"line_number":100,"context_line":"            return response"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_285df279","line":97,"updated":"2014-12-01 22:50:07.000000000","message":"There may be an issue with where the notify comes from here:\nhttp://paste.openstack.org/show/142970/","commit_id":"fd68df1ff12f1752353fa2d70d991d690b9fae5f"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"71e9c75cbf86f6ac5d7ed58a2a10f7f90aa1c1f4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        # We\u0027ll reply but don\u0027t do anything with the NOTIFY."},{"line_number":97,"context_line":"        if notify_addr not in domain_masters:"},{"line_number":98,"context_line":"            msg \u003d \"NOTIFY for %s from non-master server %s, ignoring.\""},{"line_number":99,"context_line":"            LOG.warn(msg, domain.name, notify_addr)"},{"line_number":100,"context_line":"            return response"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        resolver \u003d dns.resolver.Resolver()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_2801726a","line":99,"updated":"2014-12-01 22:50:07.000000000","message":"Does this log statement need the internationalization thingy?","commit_id":"fd68df1ff12f1752353fa2d70d991d690b9fae5f"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"bf12c072ea78ab326801661dee6ada8649a932cd","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from designate import exceptions"},{"line_number":21,"context_line":"from designate.mdns import xfr"},{"line_number":22,"context_line":"from designate.central import rpcapi as central_api"},{"line_number":23,"context_line":"from designate import storage"},{"line_number":24,"context_line":"from designate.openstack.common import log as logging"},{"line_number":25,"context_line":"from designate.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_cd41573a","line":22,"updated":"2014-12-04 20:04:27.000000000","message":"Can this import be moved to xfr.py?","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"225ba6b16ff46597a2be4a559a7c0863369d3f11","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from designate import exceptions"},{"line_number":21,"context_line":"from designate.mdns import xfr"},{"line_number":22,"context_line":"from designate.central import rpcapi as central_api"},{"line_number":23,"context_line":"from designate import storage"},{"line_number":24,"context_line":"from designate.openstack.common import log as logging"},{"line_number":25,"context_line":"from designate.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_3e5e3113","line":22,"in_reply_to":"5a890539_cd41573a","updated":"2014-12-09 14:00:42.000000000","message":"I think the placement of this is totally valid since if there are other non-xfr methods in the future that needs a central api it would be needed to be added anyways ?","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"bf12c072ea78ab326801661dee6ada8649a932cd","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        soa_answer \u003d resolver.query(domain.name, \u0027SOA\u0027)"},{"line_number":108,"context_line":"        soa_serial \u003d soa_answer[0].serial"},{"line_number":109,"context_line":"        if soa_serial \u003d\u003d domain.serial:"},{"line_number":110,"context_line":"            _LI(\"Serial is the same for master and us for %s\")"},{"line_number":111,"context_line":"            LOG.info(msg, domain.id)"},{"line_number":112,"context_line":"            return response"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_879c900f","line":110,"updated":"2014-12-04 20:04:27.000000000","message":"Assignment to msg is missing. Also could you add the serial number to the message?","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"225ba6b16ff46597a2be4a559a7c0863369d3f11","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        soa_answer \u003d resolver.query(domain.name, \u0027SOA\u0027)"},{"line_number":108,"context_line":"        soa_serial \u003d soa_answer[0].serial"},{"line_number":109,"context_line":"        if soa_serial \u003d\u003d domain.serial:"},{"line_number":110,"context_line":"            _LI(\"Serial is the same for master and us for %s\")"},{"line_number":111,"context_line":"            LOG.info(msg, domain.id)"},{"line_number":112,"context_line":"            return response"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_3302ea0b","line":110,"in_reply_to":"5a890539_879c900f","updated":"2014-12-09 14:00:42.000000000","message":"Done","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"4e1c222e38c1a527d7985366229f968f47a02367","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            \u0027type\u0027: \u0027SECONDARY\u0027,"},{"line_number":92,"context_line":"            \u0027deleted\u0027: False"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":"        domain \u003d self.storage.find_domain(context, criterion)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        domain_masters \u003d domain.get_masters()"},{"line_number":97,"context_line":"        notify_addr \u003d request.environ[\u0027addr\u0027][0]"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_f5a01645","line":94,"updated":"2015-02-03 21:31:06.000000000","message":"This should probably be wrapped in a try-except to catch when zones that don\u0027t exist are NOTIFY\u0027d. I thought at some point the idea was to add all those that were notified, but didn\u0027t exist, but maybe that changed.","commit_id":"4c10daf7261d6872e33b77d73ec8fdd69ca54b53"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"c67b1d4f32dec227ab5dfe7c4b616ea0bcb091c8","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            return response"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.tg.add_thread(self.domain_sync, context, domain, notify_addr)"},{"line_number":125,"context_line":"        return response"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _handle_query_error(self, request, rcode):"},{"line_number":128,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_9f8b9e1d","line":125,"updated":"2015-02-09 23:13:10.000000000","message":"agent/handler.py also has a _handle_notify. It would good to see if we can abstract the common functionality in both to dnsutils.py","commit_id":"2d99922f5ce56cf31e860ec6944e9fd9bfef718b"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"f45c3fc681f7fbf91080f8601ddc4cc86c4c4a37","unresolved":false,"context_lines":[{"line_number":87,"context_line":"          if not it is ignored."},{"line_number":88,"context_line":"        * Checks if SOA query response serial !\u003d local serial."},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        response \u003d dns.message.make_response(request)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        question \u003d request.question[0]"},{"line_number":93,"context_line":"        criterion \u003d {"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a80dd14_661710ef","line":90,"updated":"2015-03-12 20:28:16.000000000","message":"We\u0027ll need to add a \"question\" here to be valid per the RFC.. Something like:\n\n    response.question.extend(request.question)","commit_id":"803e98a0bea7fbb18fe95a9fdfe92fe903c820e1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"f45c3fc681f7fbf91080f8601ddc4cc86c4c4a37","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        response \u003d dns.message.make_response(request)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        question \u003d request.question[0]"},{"line_number":93,"context_line":"        criterion \u003d {"},{"line_number":94,"context_line":"            \u0027name\u0027: question.name.to_text(),"},{"line_number":95,"context_line":"            \u0027type\u0027: \u0027SECONDARY\u0027,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a80dd14_26e8b8e1","line":92,"updated":"2015-03-12 20:28:16.000000000","message":"This will throw an exception if the incoming packet it malformed and doesn\u0027t contain a question.. We should check that `len(request.question) \u003d\u003d 1`, if not, set the rcode to `dns.flags.FORMERR`","commit_id":"803e98a0bea7fbb18fe95a9fdfe92fe903c820e1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"f45c3fc681f7fbf91080f8601ddc4cc86c4c4a37","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            domain \u003d self.storage.find_domain(context, criterion)"},{"line_number":101,"context_line":"        except exceptions.DomainNotFound:"},{"line_number":102,"context_line":"            return response"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        notify_addr \u003d request.environ[\u0027addr\u0027][0]"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"9a80dd14_66e4703c","line":102,"updated":"2015-03-12 20:28:16.000000000","message":"We should set the rcode here to dns.rcode.NOTAUTH","commit_id":"803e98a0bea7fbb18fe95a9fdfe92fe903c820e1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"f45c3fc681f7fbf91080f8601ddc4cc86c4c4a37","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            msg \u003d _LW(\"NOTIFY for %(name)s from non-master server \""},{"line_number":112,"context_line":"                      \"%(addr)s, ignoring.\")"},{"line_number":113,"context_line":"            LOG.warn(msg % {\"name\": domain.name, \"addr\": notify_addr})"},{"line_number":114,"context_line":"            return response"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        resolver \u003d dns.resolver.Resolver()"},{"line_number":117,"context_line":"        # According to RFC we should query the server that sent the NOTIFY"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a80dd14_86e1642c","line":114,"updated":"2015-03-12 20:28:16.000000000","message":"We should set the rcode here to dns.rcode.REFUSED","commit_id":"803e98a0bea7fbb18fe95a9fdfe92fe903c820e1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c714ac19492d2e9b25f8b024e0f95751d542222d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            LOG.info(msg % {\"serial\": soa_serial, \"domain_id\": domain.id})"},{"line_number":126,"context_line":"            return response"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        self.tg.add_thread(self.domain_sync, context, domain, [master_addr])"},{"line_number":129,"context_line":"        return response"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def _handle_query_error(self, request, rcode):"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a80dd14_a6b748d7","line":128,"updated":"2015-03-12 20:30:43.000000000","message":"Can we move this self.tg.add() info an else block, remove the return above, and log that we\u0027ve scheduled a XFR of the zone?","commit_id":"803e98a0bea7fbb18fe95a9fdfe92fe903c820e1"}],"designate/mdns/notify.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"bf12c072ea78ab326801661dee6ada8649a932cd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from designate import exceptions"},{"line_number":22,"context_line":"from designate.central import rpcapi as central_api"},{"line_number":23,"context_line":"from designate import mdns"},{"line_number":24,"context_line":"from designate.mdns import xfr"},{"line_number":25,"context_line":"from designate.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_fb2b2d92","line":22,"updated":"2014-12-04 20:04:27.000000000","message":"Can this import and the associated central_api property be moved to xfr.py?","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"225ba6b16ff46597a2be4a559a7c0863369d3f11","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from designate import exceptions"},{"line_number":22,"context_line":"from designate.central import rpcapi as central_api"},{"line_number":23,"context_line":"from designate import mdns"},{"line_number":24,"context_line":"from designate.mdns import xfr"},{"line_number":25,"context_line":"from designate.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_5e9cddc0","line":22,"in_reply_to":"5a890539_fb2b2d92","updated":"2014-12-09 14:00:42.000000000","message":"See comment in handler.py","commit_id":"38675d57cc735426a98823b87f841b30594cf525"}],"designate/mdns/xfr.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"eea097f745964263213c2157c1f5cc1a3bbdf833","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Kiall Mac Innes \u003ckiall@hp.com\u003e"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_9c121f5f","line":3,"updated":"2014-12-04 21:37:37.000000000","message":"I am assuming you are the author and want to list yourself here.","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"225ba6b16ff46597a2be4a559a7c0863369d3f11","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Kiall Mac Innes \u003ckiall@hp.com\u003e"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_7e9fd9b4","line":3,"in_reply_to":"5a890539_9c121f5f","updated":"2014-12-09 14:00:42.000000000","message":"Indeed :)","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"bf12c072ea78ab326801661dee6ada8649a932cd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        zone \u003d dnsutils.from_dnspython_zone(z)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        domain.update(zone)"},{"line_number":46,"context_line":"        domain.transferred_at \u003d timeutils.utcnow()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.central_api.update_domain(context, domain, increment_serial\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_b668dcba","line":46,"updated":"2014-12-04 20:04:27.000000000","message":"How about setting transferred_at with onupdate in tables.py, so that you do not have to manually set the field.","commit_id":"38675d57cc735426a98823b87f841b30594cf525"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"4e1c222e38c1a527d7985366229f968f47a02367","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Endre Karlson \u003cendre.karlson@hp.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_20b8b375","line":1,"updated":"2015-02-03 21:31:06.000000000","message":"Seems like this could find a home in dnsutils. I think it could use the AXFR function that\u0027s in there for part of it.","commit_id":"4c10daf7261d6872e33b77d73ec8fdd69ca54b53"}]}
