)]}'
{"contrib/pmdomain.py":[{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"edd44ff8db57d1024e280cc0d9003f5051549f26","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    #     \u0027id\u0027: utils.generate_uuid(),"},{"line_number":74,"context_line":"    #     \u0027name\u0027: domain_name,"},{"line_number":75,"context_line":"    #     \u0027serial\u0027: utils.increment_serial()"},{"line_number":76,"context_line":"    # }"},{"line_number":77,"context_line":"    values \u003d {"},{"line_number":78,"context_line":"        \u0027id\u0027: domain_id,"},{"line_number":79,"context_line":"        \u0027name\u0027: \u0027example.com.\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_8af42788","line":76,"updated":"2014-11-05 21:50:43.000000000","message":"The above should be deleted instead of commented out","commit_id":"febd271f098b6baa5a17c28ddecf9599f68d24cc"}],"designate/pool_manager/service.py":[{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"8657ca71666e8db0bbc0bcc4ba70a654a0f3f343","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        context \u003d self.admin_context"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self._periodic_create_domains(context)"},{"line_number":217,"context_line":"        self._periodic_delete_domains(context)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _periodic_create_domains(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_b02a842a","line":216,"updated":"2014-10-29 15:28:06.000000000","message":"Should there be one for updates here too?","commit_id":"febd271f098b6baa5a17c28ddecf9599f68d24cc"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"410a6b81fab7d47e454a19b6e0ea7da88a31e29e","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        context \u003d self.admin_context"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self._periodic_create_domains(context)"},{"line_number":217,"context_line":"        self._periodic_delete_domains(context)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _periodic_create_domains(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_b63fdcd5","line":216,"in_reply_to":"9aa7fdbe_b02a842a","updated":"2014-10-29 16:36:02.000000000","message":"Yes.  I haven\u0027t worked on update yet.","commit_id":"febd271f098b6baa5a17c28ddecf9599f68d24cc"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"46319cdef264a919c08a77cc666397acc908a1e1","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            \u0027status\u0027: ERROR_STATUS"},{"line_number":224,"context_line":"        }"},{"line_number":225,"context_line":"        create_statuses \u003d self.cache.find_pool_manager_statuses("},{"line_number":226,"context_line":"            context, criterion\u003dcriterion)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        for create_status in create_statuses:"},{"line_number":229,"context_line":"            # TODO(Ron): Replace this when central integration is ready."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_1f523313","line":226,"updated":"2014-11-06 10:18:22.000000000","message":"Could you not just find all of the statuses, and check for whether it\u0027s a create/delete and do the appropriate action then? Instead of having separate create/update/delete sync things?","commit_id":"febd271f098b6baa5a17c28ddecf9599f68d24cc"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"46319cdef264a919c08a77cc666397acc908a1e1","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            context, criterion\u003dcriterion)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def _store_in_cache(self, context, pool_manager_status):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        if pool_manager_status[\u0027id\u0027]:"},{"line_number":353,"context_line":"            self.cache.update_pool_manager_status(context, pool_manager_status)"},{"line_number":354,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_041ae67c","line":351,"updated":"2014-11-06 10:18:22.000000000","message":"No need for a blank line here.","commit_id":"febd271f098b6baa5a17c28ddecf9599f68d24cc"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"3165bc4a1a8c42610c5ba4a66f18264450aef322","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    LOG.debug(\u0027Domain %s is managed by pool ID %s.\u0027"},{"line_number":60,"context_line":"                              \u0027  Executing.\u0027 % (domain.name, pool_id))"},{"line_number":61,"context_line":"                    return f(self, context, domain, *args, **kwargs)"},{"line_number":62,"context_line":"                else:"},{"line_number":63,"context_line":"                    LOG.debug(\u0027Domain %s is not managed by pool ID %s.\u0027"},{"line_number":64,"context_line":"                              \u0027  Skipping.\u0027 % (domain.name, pool_id))"},{"line_number":65,"context_line":"            return wrapped_f"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_2d780d8f","line":62,"updated":"2014-11-18 17:15:13.000000000","message":"I assume this would go away when there was more than one pool?","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c67d179667e310f7a9606dcbfbeaa73e2c2bf15a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    LOG.debug(\u0027Domain %s is managed by pool ID %s.\u0027"},{"line_number":60,"context_line":"                              \u0027  Executing.\u0027 % (domain.name, pool_id))"},{"line_number":61,"context_line":"                    return f(self, context, domain, *args, **kwargs)"},{"line_number":62,"context_line":"                else:"},{"line_number":63,"context_line":"                    LOG.debug(\u0027Domain %s is not managed by pool ID %s.\u0027"},{"line_number":64,"context_line":"                              \u0027  Skipping.\u0027 % (domain.name, pool_id))"},{"line_number":65,"context_line":"            return wrapped_f"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_e14c4ecb","line":62,"in_reply_to":"5a890539_2d780d8f","updated":"2014-11-18 19:01:28.000000000","message":"Actually, this is needed for when there is more than one pool.  The idea is only the domains managed by this pool manager instance (defined by the pool_id in the configuration file) will be handled.","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"5e7bbb5bdafd5f07163b42ff8f2888d7788575e8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    LOG.debug(\u0027Domain %s is managed by pool ID %s.\u0027"},{"line_number":60,"context_line":"                              \u0027  Executing.\u0027 % (domain.name, pool_id))"},{"line_number":61,"context_line":"                    return f(self, context, domain, *args, **kwargs)"},{"line_number":62,"context_line":"                else:"},{"line_number":63,"context_line":"                    LOG.debug(\u0027Domain %s is not managed by pool ID %s.\u0027"},{"line_number":64,"context_line":"                              \u0027  Skipping.\u0027 % (domain.name, pool_id))"},{"line_number":65,"context_line":"            return wrapped_f"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_9c705175","line":62,"in_reply_to":"5a890539_e14c4ecb","updated":"2014-11-18 19:08:12.000000000","message":"How do you know that the right pool manager got the message? Do they all handle each request, and only act on it if the pool ID is in their config?","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"3165bc4a1a8c42610c5ba4a66f18264450aef322","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.central_api.update_status("},{"line_number":162,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.update_domain(context, domain)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @execute_on_pool(cfg.CONF[\u0027service:pool_manager\u0027].pool_id)"},{"line_number":167,"context_line":"    def delete_domain(self, context, domain):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_8d6661ed","line":164,"updated":"2014-11-18 17:15:13.000000000","message":"Curious as to why update_domain needs to be called here? Is it for the status field?","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"5e7bbb5bdafd5f07163b42ff8f2888d7788575e8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.central_api.update_status("},{"line_number":162,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.update_domain(context, domain)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @execute_on_pool(cfg.CONF[\u0027service:pool_manager\u0027].pool_id)"},{"line_number":167,"context_line":"    def delete_domain(self, context, domain):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_5c0ee9e6","line":164,"in_reply_to":"5a890539_81baaa6c","updated":"2014-11-18 19:08:12.000000000","message":"I see, wouldn\u0027t you call into the configured backend\u0027s create domain for that?","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c67d179667e310f7a9606dcbfbeaa73e2c2bf15a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.central_api.update_status("},{"line_number":162,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.update_domain(context, domain)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @execute_on_pool(cfg.CONF[\u0027service:pool_manager\u0027].pool_id)"},{"line_number":167,"context_line":"    def delete_domain(self, context, domain):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_81baaa6c","line":164,"in_reply_to":"5a890539_8d6661ed","updated":"2014-11-18 19:01:28.000000000","message":"So, creating the domain (at least for BIND) simply extends the zone information dynamically.  it doesn\u0027t actually create the zone file or populate it with information.  That is done by the update_domain call.","commit_id":"cc0393e50110309d171daf1dc3c73003e50ea7a9"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a6d63211857323f3a781809229a1dcdb468e744b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                create_status.status \u003d ERROR_STATUS"},{"line_number":160,"context_line":"            finally:"},{"line_number":161,"context_line":"                self._store_in_cache(context, create_status)"},{"line_number":162,"context_line":"                update_status \u003d self._create_update_status(server, domain)"},{"line_number":163,"context_line":"                update_status.serial_number \u003d 0"},{"line_number":164,"context_line":"                self._store_in_cache(context, update_status)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_de5c2d1c","line":162,"updated":"2014-12-01 20:58:24.000000000","message":"Why do you create an update_status for create_domain?","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c225af19304f9d1d622d9d8005a11a26707508cd","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                create_status.status \u003d ERROR_STATUS"},{"line_number":160,"context_line":"            finally:"},{"line_number":161,"context_line":"                self._store_in_cache(context, create_status)"},{"line_number":162,"context_line":"                update_status \u003d self._create_update_status(server, domain)"},{"line_number":163,"context_line":"                update_status.serial_number \u003d 0"},{"line_number":164,"context_line":"                self._store_in_cache(context, update_status)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_3223a5a8","line":162,"in_reply_to":"5a890539_de5c2d1c","updated":"2014-12-01 21:44:48.000000000","message":"This status is used later in the update_domain method.  (It is retrieved from the cache.)","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a6d63211857323f3a781809229a1dcdb468e744b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        if self._is_create_consensus(context, domain):"},{"line_number":168,"context_line":"            status \u003d SUCCESS_STATUS"},{"line_number":169,"context_line":"        self.central_api.update_status("},{"line_number":170,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        for server_backend in self.server_backends:"},{"line_number":173,"context_line":"            server \u003d server_backend[\u0027server\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_7e95f986","line":170,"updated":"2014-12-01 20:58:24.000000000","message":"Shouldn\u0027t the central\u0027s update_status be called after mdns\u0027s poll_for_serial number returns the status (by calling pool manager\u0027s update_status)","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c225af19304f9d1d622d9d8005a11a26707508cd","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        if self._is_create_consensus(context, domain):"},{"line_number":168,"context_line":"            status \u003d SUCCESS_STATUS"},{"line_number":169,"context_line":"        self.central_api.update_status("},{"line_number":170,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        for server_backend in self.server_backends:"},{"line_number":173,"context_line":"            server \u003d server_backend[\u0027server\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_b299557b","line":170,"in_reply_to":"5a890539_7e95f986","updated":"2014-12-01 21:44:48.000000000","message":"I thought by doing this I was making the logical clearer.  The poll_for_serial_number calls central\u0027s update_status (true), but works with UPDATE requests.\n\nIt turns out that BIND9\u0027s \u0027rndc addzone\u0027 call creates the domain *and* attempts a full zone transfer (AXFR), so that is why I\u0027m calling the poll_for_serial_number.","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a6d63211857323f3a781809229a1dcdb468e744b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if self._is_delete_consensus(context, domain):"},{"line_number":202,"context_line":"            status \u003d SUCCESS_STATUS"},{"line_number":203,"context_line":"        self.central_api.update_status("},{"line_number":204,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @execute_on_pool(cfg.CONF[\u0027service:pool_manager\u0027].pool_id)"},{"line_number":207,"context_line":"    def update_domain(self, context, domain):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_fe5d69ed","line":204,"updated":"2014-12-01 20:58:24.000000000","message":"Similar to create_domain above - Shouldn\u0027t the central\u0027s update_status be called after mdns\u0027s poll_for_serial number returns the status (by calling pool manager\u0027s update_status)\n\nAlso how do you know when the domain is deleted on the backends?","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c225af19304f9d1d622d9d8005a11a26707508cd","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if self._is_delete_consensus(context, domain):"},{"line_number":202,"context_line":"            status \u003d SUCCESS_STATUS"},{"line_number":203,"context_line":"        self.central_api.update_status("},{"line_number":204,"context_line":"            context, domain.id, status, domain.serial)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @execute_on_pool(cfg.CONF[\u0027service:pool_manager\u0027].pool_id)"},{"line_number":207,"context_line":"    def update_domain(self, context, domain):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_f28afd18","line":204,"in_reply_to":"5a890539_fe5d69ed","updated":"2014-12-01 21:44:48.000000000","message":"Same as above.\n\nA call to poll_for_serial_number will fail if the domain is deleted on the backend.","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"a6d63211857323f3a781809229a1dcdb468e744b","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        server \u003d self._get_server(destination)"},{"line_number":242,"context_line":"        update_status \u003d self._retrieve_from_cache("},{"line_number":243,"context_line":"            context, server, domain, UPDATE_ACTION)"},{"line_number":244,"context_line":"        existing_serial \u003d update_status.serial_number"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        LOG.debug(\u0027Domain %s, server %s: existing serial %s, actual serial %s\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_bef12197","line":243,"updated":"2014-12-01 20:58:24.000000000","message":"Why only UPDATE_ACTION? Why not create?","commit_id":"7535643af4a0536a1234032b43206285398392c0"},{"author":{"_account_id":9605,"name":"Ron Rickard","email":"rrickard@paypalcorp.com","username":"rjrjr"},"change_message_id":"c225af19304f9d1d622d9d8005a11a26707508cd","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        server \u003d self._get_server(destination)"},{"line_number":242,"context_line":"        update_status \u003d self._retrieve_from_cache("},{"line_number":243,"context_line":"            context, server, domain, UPDATE_ACTION)"},{"line_number":244,"context_line":"        existing_serial \u003d update_status.serial_number"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        LOG.debug(\u0027Domain %s, server %s: existing serial %s, actual serial %s\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a890539_f2911d47","line":243,"in_reply_to":"5a890539_bef12197","updated":"2014-12-01 21:44:48.000000000","message":"Again, I am attempting to separate concerns.  I am trying to avoid doing too much in any one of these calls so the code is easier to understand and more importantly performs well.\n\nIf this method is not just UPDATE, I need to read the CREATE status and the DELETE status from the cache and calculate consensus for those actions.   I was trying to keep this update_status method light by making as few calls to the cache as possible and keeping the logical streamlined.\n\nI figured update_domain and update_status are the primary workhorses for pool manager.","commit_id":"7535643af4a0536a1234032b43206285398392c0"}]}
