)]}'
{"novaclient/v1_1/floating_ip_dns.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"38d242e1667cd53c97094d548db06b870a80549c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    return urllib.quote(zone.replace(\u0027.\u0027, \u0027%2E\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FloatingIPDNS(base.Resource):"},{"line_number":32,"context_line":"    pass"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2Fu0%3D","line":31,"updated":"2011-12-29 15:11:34.000000000","message":"Typically we mirror the methods available on the manager here on the resource object.","commit_id":"e5d340b7a582d781216e0c44f1cbe09e8c1b0509"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"2e3a121773a9d502b978856551bf7f41e49354aa","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    return urllib.quote(zone.replace(\u0027.\u0027, \u0027%2E\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FloatingIPDNS(base.Resource):"},{"line_number":32,"context_line":"    pass"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2Fpc%3D","line":31,"in_reply_to":"AAAADH%2F%2F%2Fu0%3D","updated":"2011-12-29 18:34:23.000000000","message":"I see that this is done (if inconsistently) in other extensions.  Is it strictly for documentation, or are those functions called by someone?  I don\u0027t see any evidence that they\u0027re subject to unit tests.","commit_id":"e5d340b7a582d781216e0c44f1cbe09e8c1b0509"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"38d242e1667cd53c97094d548db06b870a80549c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \"\"\"Return the list of available dns zones.\"\"\""},{"line_number":40,"context_line":"        return self._list(\"/os-floating-ip-dns\", \"zones\")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def entries_by_ip(self, ip, zone):"},{"line_number":43,"context_line":"        \"\"\"Return a list of entries for the given zone and ip id.\"\"\""},{"line_number":44,"context_line":"        qparams \u003d {\u0027ip\u0027: ip}"},{"line_number":45,"context_line":"        params \u003d \"?%s\" % urllib.urlencode(qparams) if qparams else \"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2Fus%3D","line":42,"updated":"2011-12-29 15:11:34.000000000","message":"I think it would be cleaner to combine these two \u0027entries_by_*\u0027 methods into a single \u0027entries\u0027 method. You would then pass in name or ip as keyword arguments. If they are not None, then you can append query params to the request url. \n\nI\u0027d also like to see \u0027zone\u0027 as the first argument (after \u0027self\u0027, of course) in each of these methods. It makes more sense (at least to me) to do it this way since zone is the primary piece of information needed in every method.","commit_id":"e5d340b7a582d781216e0c44f1cbe09e8c1b0509"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"2e3a121773a9d502b978856551bf7f41e49354aa","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \"\"\"Return the list of available dns zones.\"\"\""},{"line_number":40,"context_line":"        return self._list(\"/os-floating-ip-dns\", \"zones\")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def entries_by_ip(self, ip, zone):"},{"line_number":43,"context_line":"        \"\"\"Return a list of entries for the given zone and ip id.\"\"\""},{"line_number":44,"context_line":"        qparams \u003d {\u0027ip\u0027: ip}"},{"line_number":45,"context_line":"        params \u003d \"?%s\" % urllib.urlencode(qparams) if qparams else \"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2Fpo%3D","line":42,"in_reply_to":"AAAADH%2F%2F%2Fus%3D","updated":"2011-12-29 18:34:23.000000000","message":"Done","commit_id":"e5d340b7a582d781216e0c44f1cbe09e8c1b0509"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"68653cfbd7eed8285d3c496d1dc1cb76cb2a9326","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                  self.ip, self.dns_type)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get(self):"},{"line_number":40,"context_line":"        return self.manager.get_entries(self.zone, self.ip, self.name)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FloatingIPDNSManager(base.ManagerWithFind):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2Fjg%3D","line":40,"updated":"2011-12-29 21:46:17.000000000","message":"Shouldn\u0027t this only return a single entry? This looks like it will return a list.","commit_id":"1216d71427be251b3d9c76227bf9337e56f63025"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"68653cfbd7eed8285d3c496d1dc1cb76cb2a9326","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        elif ip:"},{"line_number":55,"context_line":"            qparams \u003d {\u0027ip\u0027: ip}"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            qparams \u003d {}"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params \u003d \"?%s\" % urllib.urlencode(qparams) if qparams else \"\""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2Fjw%3D","line":57,"updated":"2011-12-29 21:46:17.000000000","message":"Why don\u0027t we allow name and ip to both be used? I think it would be confusing to pass in both name and ip and only have name be used in the request.","commit_id":"1216d71427be251b3d9c76227bf9337e56f63025"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cf35b83b8bc8317f3850640c234af4b43fe219d5","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"Return a list of entries for the given zone and ip or name.\"\"\""},{"line_number":56,"context_line":"        qparams \u003d {}"},{"line_number":57,"context_line":"        if name:"},{"line_number":58,"context_line":"            qparams.update({\u0027name\u0027: name})"},{"line_number":59,"context_line":"        if ip:"},{"line_number":60,"context_line":"            qparams.update({\u0027ip\u0027: ip})"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAADH%2F%2F%2FjE%3D","line":58,"updated":"2011-12-29 22:17:16.000000000","message":"qparams[\u0027name\u0027] \u003d name","commit_id":"3e7e39b53d4ef1e088530e3af4e5837fb9e18080"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cf35b83b8bc8317f3850640c234af4b43fe219d5","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if name:"},{"line_number":58,"context_line":"            qparams.update({\u0027name\u0027: name})"},{"line_number":59,"context_line":"        if ip:"},{"line_number":60,"context_line":"            qparams.update({\u0027ip\u0027: ip})"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        params \u003d \"?%s\" % urllib.urlencode(qparams) if qparams else \"\""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAADH%2F%2F%2FjA%3D","line":60,"updated":"2011-12-29 22:17:16.000000000","message":"qparams[\u0027ip\u0027] \u003d ip","commit_id":"3e7e39b53d4ef1e088530e3af4e5837fb9e18080"}],"tests/v1_1/test_floating_ip_dns.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a8cad08f7077acaa058b22885fa0946937827b54","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def test_dns_zones(self):"},{"line_number":28,"context_line":"        zonelist \u003d cs.floating_ip_dns.zones()"},{"line_number":29,"context_line":"        self.assertEquals(len(zonelist), 2)"},{"line_number":30,"context_line":"        [self.assertTrue(isinstance(entry, floating_ip_dns.FloatingIPDNS))"},{"line_number":31,"context_line":"         for entry in zonelist]"},{"line_number":32,"context_line":"        [self.assertEquals(zonelist[1].zone, \u0027example.com\u0027)]"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fy0%3D","line":30,"updated":"2011-12-29 00:03:01.000000000","message":"I would prefer that you use a for loop here, instead of a list comprehension.","commit_id":"6487d62268ca9af60df09f960fe33f5beaf02509"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"70a838c8df325c5294d67eb494df3ef3297cb2b8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def test_dns_zones(self):"},{"line_number":28,"context_line":"        zonelist \u003d cs.floating_ip_dns.zones()"},{"line_number":29,"context_line":"        self.assertEquals(len(zonelist), 2)"},{"line_number":30,"context_line":"        [self.assertTrue(isinstance(entry, floating_ip_dns.FloatingIPDNS))"},{"line_number":31,"context_line":"         for entry in zonelist]"},{"line_number":32,"context_line":"        [self.assertEquals(zonelist[1].zone, \u0027example.com\u0027)]"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fyc%3D","line":30,"in_reply_to":"AAAADH%2F%2F%2Fy0%3D","updated":"2011-12-29 00:13:48.000000000","message":"Just imitating a pattern in test_floating_ips.py.  Easy to change.","commit_id":"6487d62268ca9af60df09f960fe33f5beaf02509"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a8cad08f7077acaa058b22885fa0946937827b54","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.assertEquals(len(zonelist), 2)"},{"line_number":30,"context_line":"        [self.assertTrue(isinstance(entry, floating_ip_dns.FloatingIPDNS))"},{"line_number":31,"context_line":"         for entry in zonelist]"},{"line_number":32,"context_line":"        [self.assertEquals(zonelist[1].zone, \u0027example.com\u0027)]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_get_dns_entries_by_ip(self):"},{"line_number":35,"context_line":"        entries \u003d cs.floating_ip_dns.entries_by_ip(self.testip, self.testzone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fyw%3D","line":32,"updated":"2011-12-29 00:03:01.000000000","message":"I have no idea why you\u0027re using brackets here; they don\u0027t do anything.  Please remove them.\n\nAlso, please note that assertEquals() is deprecated; you should use assertEqual() (no \u0027s\u0027).","commit_id":"6487d62268ca9af60df09f960fe33f5beaf02509"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"70a838c8df325c5294d67eb494df3ef3297cb2b8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.assertEquals(len(zonelist), 2)"},{"line_number":30,"context_line":"        [self.assertTrue(isinstance(entry, floating_ip_dns.FloatingIPDNS))"},{"line_number":31,"context_line":"         for entry in zonelist]"},{"line_number":32,"context_line":"        [self.assertEquals(zonelist[1].zone, \u0027example.com\u0027)]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_get_dns_entries_by_ip(self):"},{"line_number":35,"context_line":"        entries \u003d cs.floating_ip_dns.entries_by_ip(self.testip, self.testzone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fyg%3D","line":32,"in_reply_to":"AAAADH%2F%2F%2Fyw%3D","updated":"2011-12-29 00:13:48.000000000","message":"Huh, you\u0027re right.  Too much copy/paste!","commit_id":"6487d62268ca9af60df09f960fe33f5beaf02509"}]}
