)]}'
{"contrib/devstack/lib/designate":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"b1ab295c69e95277984375e1eb9f415b8b54e70b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# lib/designate"},{"line_number":2,"context_line":"# Install and start **Designate** service"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# To enable Designate services, add the following to localrc"},{"line_number":5,"context_line":"# enable_service designate,designate-api,designate-central,designate-mdns,designate-agent,designate-sink,designate-pool-manager"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# stack.sh"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"3a961159_61821cca","line":4,"updated":"2014-12-15 20:47:29.000000000","message":"Could you remove designate-agent here?","commit_id":"4e75f5b54c149bfd1aeea139bd8108c3031d049c"}],"designate/central/service.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        with wrap_backend_call():"},{"line_number":436,"context_line":"            self.backend.update_domain(context, domain)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        # Update SOA record"},{"line_number":439,"context_line":"        self._update_soa(context, domain)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        # TODO(vinod): Remove the following call to mdns once pool manager"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_91f6eed5","line":438,"updated":"2014-12-02 21:10:20.000000000","message":"With pool manager we should be updating the soa in storage and then do the backend call to update_domain.\n\nAlternatively we could have a different method for pool manager backend.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        self._update_soa(context, domain)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        # TODO(vinod): Remove the following call to mdns once pool manager"},{"line_number":442,"context_line":"        # calls mdns."},{"line_number":443,"context_line":"        self.mdns_api.notify_zone_changed(context, domain, None, None, None,"},{"line_number":444,"context_line":"                                          None, 0)"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b1c4ca60","line":442,"updated":"2014-12-02 21:10:20.000000000","message":"Similar to create_domain, could you wrap this with a pool manager backend check?","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":921,"context_line":"            subdomain.parent_domain_id \u003d domain.id"},{"line_number":922,"context_line":"            self.update_domain(context, subdomain)"},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"        self.mdns_api.notify_zone_changed(context, created_domain, None, None,"},{"line_number":925,"context_line":"                                          None, None, 0)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"        return created_domain"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_ee602d37","line":924,"updated":"2014-12-02 21:10:20.000000000","message":"You could possibly wrap this mdns call too with a poolmanager check as below as pool manager would call the mdns api.\n\n if not self._is_pool_manager_backend():","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"            self.backend.update_domain(context, domain)"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"        if increment_serial:"},{"line_number":1013,"context_line":"            # Update the SOA Record"},{"line_number":1014,"context_line":"            self._update_soa(context, domain)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        # TODO(vinod): Remove the following call to mdns once pool manager"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_8eade933","line":1013,"updated":"2014-12-02 21:10:20.000000000","message":"Similar to create_domain, for pool manger backend, you would first update the soa only on storage and then call the pool manager backend for update_domain.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        # TODO(vinod): Remove the following call to mdns once pool manager"},{"line_number":1017,"context_line":"        # calls mdns."},{"line_number":1018,"context_line":"        self.mdns_api.notify_zone_changed(context, domain, None, None, None,"},{"line_number":1019,"context_line":"                                          None, 0)"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"        return domain"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_ee310d0c","line":1018,"updated":"2014-12-02 21:10:20.000000000","message":"Similar to create_domain, could you wrap this with a pool manager backend check?","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"        # increment_serial \u003d True"},{"line_number":1155,"context_line":"        if increment_serial:"},{"line_number":1156,"context_line":"            if len(recordset.records) \u003e 0:"},{"line_number":1157,"context_line":"                self._increment_domain_serial(context, domain.id)"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"        return created_recordset"},{"line_number":1160,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d17a36b9","line":1157,"updated":"2014-12-02 21:10:20.000000000","message":"For pool manager backend, we now\n\n(1) Increment the serial number for each of the records\n\n(2) Update the backend (but at this point the domain SOA is unchanged)\n\n(3) Call _increment_domain_serial (which itself needs to be fixed)\n\nInstead for pool manager backend, I think we should\n\n(1) Increment the serial number\n\n(2) Use the same incremented serial number from (1) above to set record.serial for all the records\n\n(3) Create the recordset in storage\n\n(4) Through _increment_domain_serial (for pool managers), set domain.serial to the serial number from (1) above, update soa, call storage.get_domain\n\n(5) Now call the backend for create_recordset.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"            self.backend.update_recordset(context, domain, recordset)"},{"line_number":1254,"context_line":""},{"line_number":1255,"context_line":"        if increment_serial:"},{"line_number":1256,"context_line":"            self._increment_domain_serial(context, domain.id)"},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"        return recordset"},{"line_number":1259,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_f474809d","line":1256,"updated":"2014-12-02 21:10:20.000000000","message":"Similar comments for create_recordset apply here too. record.serial should have the same serial number. We should be doing storage.update_recordset, updating domain.serial and then the soa record before calling the backend for pool manager.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1290,"context_line":"            self.backend.delete_recordset(context, domain, recordset)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"        if increment_serial:"},{"line_number":1293,"context_line":"            self._increment_domain_serial(context, domain_id)"},{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        return recordset"},{"line_number":1296,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_14a10cf8","line":1293,"updated":"2014-12-02 21:10:20.000000000","message":"Similar comments for create_recordset apply here too. record.serial should have the same serial number. We should be doing storage.delete_recordset, updating domain.serial and then the soa record before calling the backend for pool manager.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                context, domain, recordset, created_record)"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        if increment_serial:"},{"line_number":1342,"context_line":"            self._increment_domain_serial(context, domain_id,"},{"line_number":1343,"context_line":"                                          serial\u003drecord.serial)"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":"        return created_record"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_14882c70","line":1342,"updated":"2014-12-02 21:10:20.000000000","message":"This method too needs to be cleaned up for pool manger backend similar to create_recordset.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1430,"context_line":"            self.backend.update_record(context, domain, recordset, record)"},{"line_number":1431,"context_line":""},{"line_number":1432,"context_line":"        if increment_serial:"},{"line_number":1433,"context_line":"            self._increment_domain_serial(context, domain.id,"},{"line_number":1434,"context_line":"                                          serial\u003drecord.serial)"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"        return record"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b48cb881","line":1433,"updated":"2014-12-02 21:10:20.000000000","message":"This method too needs to be cleaned up for pool manger backend similar to create_recordset.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"f4ea8c61754e8064fdfeb4ba97a7133c364b270d","unresolved":false,"context_lines":[{"line_number":1476,"context_line":"            self.backend.delete_record(context, domain, recordset, record)"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"        if increment_serial:"},{"line_number":1479,"context_line":"            self._increment_domain_serial(context, domain_id,"},{"line_number":1480,"context_line":"                                          serial\u003drecord.serial)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        return record"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d4894470","line":1479,"updated":"2014-12-02 21:10:20.000000000","message":"This method too needs to be cleaned up for pool manger backend similar to create_recordset.","commit_id":"2a28d531e9de33747bdc4a15de4aab041a4d90f1"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a9aedb13983f060a8447d87dbfe84b76b2518b0f","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                                            % min_ttl)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def _increment_domain_serial(self, context, domain_id):"},{"line_number":402,"context_line":"        domain \u003d self.storage.get_domain(context, domain_id)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        # Increment the serial number"},{"line_number":405,"context_line":"        domain.serial \u003d utils.increment_serial(domain.serial)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_68a07642","line":402,"updated":"2014-12-04 03:18:17.000000000","message":"I think we can pass in the domain instead of the id and avoid the call to storage again to get the id. domain.serial should be valid in all the calls.","commit_id":"0d6d4811cd4a0df12cc89e94723bb4ebaf2a27b5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a9aedb13983f060a8447d87dbfe84b76b2518b0f","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        domain \u003d self.storage.update_domain(context, domain)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        # Update SOA record"},{"line_number":409,"context_line":"        self._update_soa(context, domain)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return domain"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_c8f96a4f","line":409,"updated":"2014-12-04 03:18:17.000000000","message":"_update_domain_in_storage has these calls reversed. It first calls _update_soa and then calls updated_domain.","commit_id":"0d6d4811cd4a0df12cc89e94723bb4ebaf2a27b5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a9aedb13983f060a8447d87dbfe84b76b2518b0f","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        ns_record \u003d objects.Record(data\u003dserver.name)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        new_record \u003d self._create_record_in_storage("},{"line_number":497,"context_line":"            context, zone, ns, ns_record, increment_serial\u003dFalse)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        ns.records.append(new_record)"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_3b6fa7c5","line":497,"updated":"2014-12-04 03:18:17.000000000","message":"update_recordset_in_storage I think creates the records in recordset as needed. So there is no need to call create_record first. We could just append the record and call update_recordset","commit_id":"0d6d4811cd4a0df12cc89e94723bb4ebaf2a27b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"59100bd58a5e38465b17152f6ded3369f29a52f4","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        elevated_context \u003d context.elevated()"},{"line_number":590,"context_line":"        elevated_context.all_tenants \u003d True"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        # Add NS recordsets for all zones."},{"line_number":593,"context_line":"        for zone in zones:"},{"line_number":594,"context_line":"            self._add_ns(elevated_context, zone, server)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_7fe189fd","line":591,"updated":"2014-12-09 19:26:35.000000000","message":"My patchset gets rid of server as part of the pool storage changes. Remember we\u0027re getting rid of the servers db table. So all the server functions in central are going away.","commit_id":"db4e39d1ba8659adb8afa4d44a9945781928e425"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"b8caa3ba5875de00c8d9679935e7d2c6dd0fe124","unresolved":false,"context_lines":[{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        # Create the SOA and NS recordsets for the new domain.  The SOA"},{"line_number":900,"context_line":"        # record will always be the first \u0027created_at\u0027 record for a domain."},{"line_number":901,"context_line":"        self._create_soa(context, domain)"},{"line_number":902,"context_line":"        self._create_ns(context, domain, servers)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"        return domain"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_c7ad8f86","line":901,"updated":"2014-12-05 17:07:50.000000000","message":"If you want to create the soa first - then I would think you would need to move this before creating the recordsets above (lines 892-895)","commit_id":"db4e39d1ba8659adb8afa4d44a9945781928e425"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"59100bd58a5e38465b17152f6ded3369f29a52f4","unresolved":false,"context_lines":[{"line_number":900,"context_line":"        # record will always be the first \u0027created_at\u0027 record for a domain."},{"line_number":901,"context_line":"        self._create_soa(context, domain)"},{"line_number":902,"context_line":"        self._create_ns(context, domain, servers)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"        return domain"},{"line_number":905,"context_line":""},{"line_number":906,"context_line":"    def get_domain(self, context, domain_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_bfc9317b","line":903,"updated":"2014-12-09 19:26:35.000000000","message":"Again, all this will change once the servers table is no more. Maybe my change should go in first.","commit_id":"db4e39d1ba8659adb8afa4d44a9945781928e425"}],"designate/pool_manager/service.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"b1ab295c69e95277984375e1eb9f415b8b54e70b","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        for server_backend in self.server_backends:"},{"line_number":181,"context_line":"            server \u003d server_backend[\u0027server\u0027]"},{"line_number":182,"context_line":"            self.mdns_api.notify_zone_changed("},{"line_number":183,"context_line":"                context, domain, self._get_destination(server), self.timeout,"},{"line_number":184,"context_line":"                self.retry_interval, self.max_retries, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_f31b3f71","line":181,"updated":"2014-12-15 20:47:29.000000000","message":"For later - would be good to add that PDNS needs the notify for AXFR to happen.","commit_id":"4e75f5b54c149bfd1aeea139bd8108c3031d049c"}]}
