)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"7d07b757abac257965832703c9a8253aad38710d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Smith \u003cmichael.smith6@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-07 22:53:25 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixes an issue with FIP re-association"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the last FIP is disassociated, the namespace and"},{"line_number":10,"context_line":"interfaces should be removed.  The internal interface"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_776c0a6c","line":7,"updated":"2014-08-08 11:08:58.000000000","message":"More descriptive... \"Remove namespace and interface, when FIP disassociated\"?","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"80ae9919547aa95be2ade77f67d8cdad3dab0b59","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Smith \u003cmichael.smith6@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-07 22:53:25 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixes an issue with FIP re-association"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the last FIP is disassociated, the namespace and"},{"line_number":10,"context_line":"interfaces should be removed.  The internal interface"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_6e9d0957","line":7,"in_reply_to":"baada198_776c0a6c","updated":"2014-08-08 17:28:00.000000000","message":"Sorry, since this is still a WIP I don\u0027t want to get more specific yet.","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"81b0a75e0fe9f2d2833946bedcf3f9c0ffd6d256","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fixes an issue with FIP re-association"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the last FIP is disassociated, the namespace and"},{"line_number":10,"context_line":"interfaces should be removed.  The internal interface"},{"line_number":11,"context_line":"wasn\u0027t removed before without problems, but now the"},{"line_number":12,"context_line":"namespace cannot be removed with that interface present."},{"line_number":13,"context_line":"The fix is to remove the internal FIP interface before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_37d7f250","line":10,"updated":"2014-08-08 10:57:23.000000000","message":"nit: there are two spaces betweem \"removed.\" and \"The\"","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"80ae9919547aa95be2ade77f67d8cdad3dab0b59","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fixes an issue with FIP re-association"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the last FIP is disassociated, the namespace and"},{"line_number":10,"context_line":"interfaces should be removed.  The internal interface"},{"line_number":11,"context_line":"wasn\u0027t removed before without problems, but now the"},{"line_number":12,"context_line":"namespace cannot be removed with that interface present."},{"line_number":13,"context_line":"The fix is to remove the internal FIP interface before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_ee067984","line":10,"in_reply_to":"baada198_37d7f250","updated":"2014-08-08 17:28:00.000000000","message":"Done","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"}],"neutron/agent/l3_agent.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efe33d27c7a261391438ab1f82dcda23a394196f","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        for d in ns_ip.get_devices(exclude_loopback\u003dTrue):"},{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":544,"context_line":"                                   prefix\u003dFIP_2_ROUTER_DEV_PREFIX)"},{"line_number":545,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_2017e7f0","line":542,"updated":"2014-08-06 23:01:02.000000000","message":"what does this TODO mean now?","commit_id":"318b836d4eaaa6ab46bffef379954705f68f36f1"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"b82aa980494d25c0ebce083503fd4c725bdae0f7","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        for d in ns_ip.get_devices(exclude_loopback\u003dTrue):"},{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":544,"context_line":"                                   prefix\u003dFIP_2_ROUTER_DEV_PREFIX)"},{"line_number":545,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_0073c3e8","line":542,"in_reply_to":"baada198_2017e7f0","updated":"2014-08-06 23:23:10.000000000","message":"I left this one in since it might need Carl\u0027s allocation patch.  Or at least use what he does there.  But that hasn\u0027t merged yet right?","commit_id":"318b836d4eaaa6ab46bffef379954705f68f36f1"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"7119a2536ad53ff5c884953198968bb81b076186","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            try:"},{"line_number":557,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":558,"context_line":"            except Exception:"},{"line_number":559,"context_line":"                # retry delete ns"},{"line_number":560,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":561,"context_line":"        self.agent_gateway_port \u003d None"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_db7ff5ba","line":559,"updated":"2014-08-07 06:21:22.000000000","message":"I am hitting errors in the _delete_namespace() call that goes away eventually.  I know this isn\u0027t the best option - I want to see if jenkins passes with this.","commit_id":"e4f65f90d27f7a3241471b375566c6898c0a814f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fafcd121994c0c0b437ca3e518a6074c1e7ed85b","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            try:"},{"line_number":557,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":558,"context_line":"            except Exception:"},{"line_number":559,"context_line":"                # retry delete ns"},{"line_number":560,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":561,"context_line":"        self.agent_gateway_port \u003d None"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e3e5dd3e","line":559,"in_reply_to":"baada198_6220ee9a","updated":"2014-08-07 17:13:19.000000000","message":"Are these the \"device busy\" errors that we discussed this morning in the meeting that you\u0027re working around?  Unfortunately, an upgrade to the iproute package is still needed as we discussed.  self.conf.router_delete_namespaces should be False otherwise.\n\nDoes the namespace need to be deleted to fix this issue?  or is cleaning out the interfaces good enough?  I can\u0027t think of why leaving the namespace hanging around would cause a problem.  It would just get repopulated the next time around, no?\n\nHowever, I can imagine why leaving a device plugged in could cause a problem.  (L542)","commit_id":"e4f65f90d27f7a3241471b375566c6898c0a814f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"574600dc4bd2298c07fd5f919e181428e414a4e6","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            try:"},{"line_number":557,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":558,"context_line":"            except Exception:"},{"line_number":559,"context_line":"                # retry delete ns"},{"line_number":560,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":561,"context_line":"        self.agent_gateway_port \u003d None"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_6220ee9a","line":559,"in_reply_to":"baada198_db7ff5ba","updated":"2014-08-07 14:18:47.000000000","message":"fair enough. I know this patch helps in some respect, but it doesn\u0027t seem to address the issue entirely. Maybe mark it as WIP for the time being?","commit_id":"e4f65f90d27f7a3241471b375566c6898c0a814f"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"e3c74ce1f2d9ed0956e4d6cebcb02ffdf739dee8","unresolved":false,"context_lines":[{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"},{"line_number":546,"context_line":"                # TODO(mrsmith): remove br-ext interface"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ee493d8e","line":543,"updated":"2014-08-07 21:55:53.000000000","message":"I think this is the real problem - since this interface isn\u0027t attached to any bridge, just two namespaces, \u0027unplug\u0027 was not working.  Logic later on expects the interface to be removed which causes other probs.","commit_id":"9c5308a1f307c5aefcf47c82e812ff9745c6ee2a"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"e3c74ce1f2d9ed0956e4d6cebcb02ffdf739dee8","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":557,"context_line":"            except Exception:"},{"line_number":558,"context_line":"                # retry delete ns"},{"line_number":559,"context_line":"                self._delete_namespace(ns_ip, ns)"},{"line_number":560,"context_line":"        self.agent_gateway_port \u003d None"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def _destroy_router_namespace(self, ns):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ae4f458b","line":559,"updated":"2014-08-07 21:55:53.000000000","message":"I\u0027ll remove all this if the del_veth() call works with jenkins.  It worked for me locally.","commit_id":"9c5308a1f307c5aefcf47c82e812ff9745c6ee2a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        for d in ns_ip.get_devices(exclude_loopback\u003dTrue):"},{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4439faa1","line":542,"updated":"2014-08-09 00:58:04.000000000","message":"I am still confused by this todo...","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        for d in ns_ip.get_devices(exclude_loopback\u003dTrue):"},{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_6daddae9","line":542,"in_reply_to":"baada198_4439faa1","updated":"2014-08-11 16:08:11.000000000","message":"After reviewing Carl\u0027s IP allocation patch - his changes will take care of this.  I will remove this comment.","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"67635d659d79ee16ef382c46c4f42b25fa2d32a8","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        for d in ns_ip.get_devices(exclude_loopback\u003dTrue):"},{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4b0d5e3f","line":542,"in_reply_to":"baada198_6daddae9","updated":"2014-08-11 16:12:57.000000000","message":"ok","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"},{"line_number":546,"context_line":"                # TODO(mrsmith): remove br-ext interface"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_643a7e98","line":543,"updated":"2014-08-09 00:58:04.000000000","message":"delete_veth_interface?","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"},{"line_number":546,"context_line":"                # TODO(mrsmith): remove br-ext interface"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_cdaee6e3","line":543,"in_reply_to":"baada198_643a7e98","updated":"2014-08-11 16:08:11.000000000","message":"There is an existing add_veth() - preference?","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"67635d659d79ee16ef382c46c4f42b25fa2d32a8","unresolved":false,"context_lines":[{"line_number":540,"context_line":"            if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):"},{"line_number":541,"context_line":"                # internal link between IRs and FIP NS"},{"line_number":542,"context_line":"                # TODO(mrsmith): IP pool?"},{"line_number":543,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":544,"context_line":"            elif d.name.startswith(FIP_EXT_DEV_PREFIX):"},{"line_number":545,"context_line":"                # single port from FIP NS to br-ext"},{"line_number":546,"context_line":"                # TODO(mrsmith): remove br-ext interface"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_8b0a1625","line":543,"in_reply_to":"baada198_cdaee6e3","updated":"2014-08-11 16:12:57.000000000","message":"fair enough.","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":564,"context_line":"                                   prefix\u003dINTERNAL_DEV_PREFIX)"},{"line_number":565,"context_line":"            elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):"},{"line_number":566,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":567,"context_line":"            elif d.name.startswith(EXTERNAL_DEV_PREFIX):"},{"line_number":568,"context_line":"                self.driver.unplug(d.name,"},{"line_number":569,"context_line":"                                   bridge\u003dself.conf.external_network_bridge,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_843f9285","line":566,"updated":"2014-08-09 00:58:04.000000000","message":"ditto","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":564,"context_line":"                                   prefix\u003dINTERNAL_DEV_PREFIX)"},{"line_number":565,"context_line":"            elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):"},{"line_number":566,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":567,"context_line":"            elif d.name.startswith(EXTERNAL_DEV_PREFIX):"},{"line_number":568,"context_line":"                self.driver.unplug(d.name,"},{"line_number":569,"context_line":"                                   bridge\u003dself.conf.external_network_bridge,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_2d77628f","line":566,"in_reply_to":"baada198_843f9285","updated":"2014-08-11 16:08:11.000000000","message":"ditto","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f905258f5703ce24e304fe222be17d8f7149938e","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":563,"context_line":"                                   prefix\u003dINTERNAL_DEV_PREFIX)"},{"line_number":564,"context_line":"            elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):"},{"line_number":565,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":566,"context_line":"            elif d.name.startswith(EXTERNAL_DEV_PREFIX):"},{"line_number":567,"context_line":"                self.driver.unplug(d.name,"},{"line_number":568,"context_line":"                                   bridge\u003dself.conf.external_network_bridge,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5dca7246","line":565,"updated":"2014-08-12 00:40:35.000000000","message":"This change isn\u0027t covered in a UT.  Could you add one?  Looks like you could just mash up a couple of the UTs you\u0027ve already touched in test_l3_agent to create a new one pretty quickly.","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"2a92a26b1ca89e41506c9d340983923fe5cdcfc2","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.driver.unplug(d.name, namespace\u003dns,"},{"line_number":563,"context_line":"                                   prefix\u003dINTERNAL_DEV_PREFIX)"},{"line_number":564,"context_line":"            elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):"},{"line_number":565,"context_line":"                ns_ip.del_veth(d.name)"},{"line_number":566,"context_line":"            elif d.name.startswith(EXTERNAL_DEV_PREFIX):"},{"line_number":567,"context_line":"                self.driver.unplug(d.name,"},{"line_number":568,"context_line":"                                   bridge\u003dself.conf.external_network_bridge,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_8ef852c2","line":565,"in_reply_to":"baada198_5dca7246","updated":"2014-08-12 02:08:35.000000000","message":"Done","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f905258f5703ce24e304fe222be17d8f7149938e","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"            ri.rtr_2_fip \u003d None"},{"line_number":1450,"context_line":"            self.local_ips.add(ri.fip_2_rtr.rsplit(\u0027.\u0027, 1)[1])"},{"line_number":1451,"context_line":"            ri.fip_2_rtr \u003d None"},{"line_number":1452,"context_line":"            # TODO(mrsmith): remove interface"},{"line_number":1453,"context_line":"        # clean up fip-namespace if this is the last FIP"},{"line_number":1454,"context_line":"        self.agent_fip_count \u003d self.agent_fip_count - 1"},{"line_number":1455,"context_line":"        if self.agent_fip_count \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_22e67daf","line":1452,"updated":"2014-08-12 00:40:35.000000000","message":"Is this addressed now?  Anything more?","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"2a92a26b1ca89e41506c9d340983923fe5cdcfc2","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"            ri.rtr_2_fip \u003d None"},{"line_number":1450,"context_line":"            self.local_ips.add(ri.fip_2_rtr.rsplit(\u0027.\u0027, 1)[1])"},{"line_number":1451,"context_line":"            ri.fip_2_rtr \u003d None"},{"line_number":1452,"context_line":"            # TODO(mrsmith): remove interface"},{"line_number":1453,"context_line":"        # clean up fip-namespace if this is the last FIP"},{"line_number":1454,"context_line":"        self.agent_fip_count \u003d self.agent_fip_count - 1"},{"line_number":1455,"context_line":"        if self.agent_fip_count \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_8e0f72d3","line":1452,"in_reply_to":"baada198_22e67daf","updated":"2014-08-12 02:08:35.000000000","message":"As we discussed offline - a del_veth is needed here - added","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"81b0a75e0fe9f2d2833946bedcf3f9c0ffd6d256","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d [\u0027del\u0027, name]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, tuple(args))"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_d750760b","line":134,"updated":"2014-08-08 10:57:23.000000000","message":"nit: since you will convert this array to a tuple just below, why not just define args as a tuple from the start?","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"80ae9919547aa95be2ade77f67d8cdad3dab0b59","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d [\u0027del\u0027, name]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, tuple(args))"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_ee8af918","line":134,"in_reply_to":"baada198_d750760b","updated":"2014-08-08 17:28:00.000000000","message":"Done","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":9077,"name":"Rajeev Grover","email":"rgrover687@gmail.com","username":"rajeev"},"change_message_id":"25b8f0645ee7b6255fe70f9663593904f9b2cdba","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d [\u0027del\u0027, name]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, tuple(args))"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return (IPDevice(name, self.root_helper, self.namespace))"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_77095531","line":135,"updated":"2014-08-08 21:07:50.000000000","message":"I am assuming once this patch is out of WIP mode a unit test will be added for this new method.","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"2aeda49b3ac0408c5856777b1f37ebf79c14a0c7","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d [\u0027del\u0027, name]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, tuple(args))"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return (IPDevice(name, self.root_helper, self.namespace))"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_30ae03a2","line":135,"in_reply_to":"baada198_77095531","updated":"2014-08-08 22:39:36.000000000","message":"Done","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return (IPDevice(name1, self.root_helper, self.namespace),"},{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d \u0027del\u0027, name"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_a447361d","line":133,"updated":"2014-08-09 00:58:04.000000000","message":"docstring?","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return (IPDevice(name1, self.root_helper, self.namespace),"},{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d \u0027del\u0027, name"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_50f189fe","line":133,"in_reply_to":"baada198_a447361d","updated":"2014-08-11 16:08:11.000000000","message":"Done","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d \u0027del\u0027, name"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c4442a1b","line":134,"updated":"2014-08-09 00:58:04.000000000","message":"what\u0027s the value of having args here?","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        args \u003d \u0027del\u0027, name"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1065511c","line":134,"in_reply_to":"baada198_c4442a1b","updated":"2014-08-11 16:08:11.000000000","message":"just using other examples in the file.  it is now removed.","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d4517407714602915a03450887b71d596cc731cb","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return (IPDevice(name, self.root_helper, self.namespace))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def ensure_namespace(self, name):"},{"line_number":141,"context_line":"        if not self.netns.exists(name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_e44dae3d","line":138,"updated":"2014-08-09 00:58:04.000000000","message":"why the extra parenthesis?","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"64b357359480fcca600d513385ea7c9e4bee9a99","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, args)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return (IPDevice(name, self.root_helper, self.namespace))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def ensure_namespace(self, name):"},{"line_number":141,"context_line":"        if not self.netns.exists(name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_306895f3","line":138,"in_reply_to":"baada198_e44dae3d","updated":"2014-08-11 16:08:11.000000000","message":"ditto","commit_id":"28bd59a9af00fe1bd901dcad31a9b9c8c679e54e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f3301475ef7a2b15d330dd855e4524837b753c4d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        \"\"\" Deletes a virtual interface between two namespaces.\"\"\""},{"line_number":135,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, (\u0027del\u0027, name))"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        return IPDevice(name, self.root_helper, self.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_1d3f1a87","line":134,"updated":"2014-08-12 00:28:20.000000000","message":"femto nit? \"\"\"Delete...\" instead of \"\"\" Deletes...\"","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"2a92a26b1ca89e41506c9d340983923fe5cdcfc2","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                IPDevice(name2, self.root_helper, namespace2))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def del_veth(self, name):"},{"line_number":134,"context_line":"        \"\"\" Deletes a virtual interface between two namespaces.\"\"\""},{"line_number":135,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, (\u0027del\u0027, name))"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        return IPDevice(name, self.root_helper, self.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_eed70e20","line":134,"in_reply_to":"baada198_1d3f1a87","updated":"2014-08-12 02:08:35.000000000","message":"Done","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f905258f5703ce24e304fe222be17d8f7149938e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        \"\"\" Deletes a virtual interface between two namespaces.\"\"\""},{"line_number":135,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, (\u0027del\u0027, name))"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        return IPDevice(name, self.root_helper, self.namespace)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def ensure_namespace(self, name):"},{"line_number":140,"context_line":"        if not self.netns.exists(name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_1d0d5ae7","line":137,"updated":"2014-08-12 00:40:35.000000000","message":"You should just remove this line and let the default return None take effect.  It doesn\u0027t really make sense to construct an IPDevice for a device you just deleted.  It seems none of the callers are consuming it anyway.","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"2a92a26b1ca89e41506c9d340983923fe5cdcfc2","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        \"\"\" Deletes a virtual interface between two namespaces.\"\"\""},{"line_number":135,"context_line":"        self._as_root(\u0027\u0027, \u0027link\u0027, (\u0027del\u0027, name))"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        return IPDevice(name, self.root_helper, self.namespace)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def ensure_namespace(self, name):"},{"line_number":140,"context_line":"        if not self.netns.exists(name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_0edb624e","line":137,"in_reply_to":"baada198_1d0d5ae7","updated":"2014-08-12 02:08:35.000000000","message":"Done","commit_id":"9ba70ff2c7367102980e2b273895342001f20279"}],"neutron/tests/unit/test_l3_agent.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efe33d27c7a261391438ab1f82dcda23a394196f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":33,"context_line":"from neutron.tests import base"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"_uuid \u003d uuidutils.generate_uuid"},{"line_number":37,"context_line":"HOSTNAME \u003d \u0027myhost\u0027"},{"line_number":38,"context_line":"FAKE_ID \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_6011dff7","side":"PARENT","line":35,"updated":"2014-08-06 23:01:02.000000000","message":"you might want to revert this line being removed","commit_id":"d8c70257b03c9877467d9efc771750b4209d7c8c"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"b82aa980494d25c0ebce083503fd4c725bdae0f7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":33,"context_line":"from neutron.tests import base"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"_uuid \u003d uuidutils.generate_uuid"},{"line_number":37,"context_line":"HOSTNAME \u003d \u0027myhost\u0027"},{"line_number":38,"context_line":"FAKE_ID \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_206e07ff","side":"PARENT","line":35,"in_reply_to":"baada198_6011dff7","updated":"2014-08-06 23:23:10.000000000","message":"hmm - snuck in...","commit_id":"d8c70257b03c9877467d9efc771750b4209d7c8c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efe33d27c7a261391438ab1f82dcda23a394196f","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"        agent._destroy_fip_namespace(namespaces[0])"},{"line_number":1409,"context_line":"        # TODO(mrsmith): update for fr interface"},{"line_number":1410,"context_line":"        self.assertEqual(self.mock_driver.unplug.call_count, 2)"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a0d21731","line":1409,"updated":"2014-08-06 23:01:02.000000000","message":"what is fr firewall? what is this TODO about? Can you be more verbose so that other people can take over, possibly?","commit_id":"318b836d4eaaa6ab46bffef379954705f68f36f1"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"b82aa980494d25c0ebce083503fd4c725bdae0f7","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"        agent._destroy_fip_namespace(namespaces[0])"},{"line_number":1409,"context_line":"        # TODO(mrsmith): update for fr interface"},{"line_number":1410,"context_line":"        self.assertEqual(self.mock_driver.unplug.call_count, 2)"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_201c477b","line":1409,"in_reply_to":"baada198_a0d21731","updated":"2014-08-06 23:23:10.000000000","message":"hmm... missed that!  The \u0027fr\u0027 interface was renamed to \u0027fpr\u0027 as seen in the change above.  So I should remove this todo.","commit_id":"318b836d4eaaa6ab46bffef379954705f68f36f1"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fafcd121994c0c0b437ca3e518a6074c1e7ed85b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":33,"context_line":"from neutron.tests import base"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"_uuid \u003d uuidutils.generate_uuid"},{"line_number":37,"context_line":"HOSTNAME \u003d \u0027myhost\u0027"},{"line_number":38,"context_line":"FAKE_ID \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c3de196a","side":"PARENT","line":35,"updated":"2014-08-07 17:13:19.000000000","message":"Oops, revert this please.  ;)","commit_id":"d8c70257b03c9877467d9efc771750b4209d7c8c"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fafcd121994c0c0b437ca3e518a6074c1e7ed85b","unresolved":false,"context_lines":[{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"        agent._destroy_fip_namespace(namespaces[0])"},{"line_number":1409,"context_line":"        # TODO(mrsmith): update for fr interface"},{"line_number":1410,"context_line":"        self.assertEqual(self.mock_driver.unplug.call_count, 2)"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"},{"line_number":1413,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c3b5391a","line":1410,"updated":"2014-08-07 17:13:19.000000000","message":"Should you still check the calls\u0027 arguments?","commit_id":"e4f65f90d27f7a3241471b375566c6898c0a814f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"81b0a75e0fe9f2d2833946bedcf3f9c0ffd6d256","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        self.mock_driver.unplug.assert_called_with(\u0027fg-aaaa\u0027, bridge\u003d\u0027br-ex\u0027,"},{"line_number":1467,"context_line":"                                                   prefix\u003d\u0027fg-\u0027,"},{"line_number":1468,"context_line":"                                                   namespace\u003d\u0027qrouter-foo\u0027)"},{"line_number":1469,"context_line":"        self.assertEqual(self.mock_ip.del_veth.call_count, 1)"},{"line_number":1470,"context_line":"        self.mock_ip.del_veth.assert_called_with(\u0027fpr-aaaa\u0027)"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_77588a25","line":1469,"updated":"2014-08-08 10:57:23.000000000","message":"I would prefer if you did self.mock_ip.del_veth.assert_called_once_with(...)","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"494c5789ed818d627dfb3a8a05a0b920c21fdc78","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        self.mock_driver.unplug.assert_called_with(\u0027fg-aaaa\u0027, bridge\u003d\u0027br-ex\u0027,"},{"line_number":1467,"context_line":"                                                   prefix\u003d\u0027fg-\u0027,"},{"line_number":1468,"context_line":"                                                   namespace\u003d\u0027qrouter-foo\u0027)"},{"line_number":1469,"context_line":"        self.assertEqual(self.mock_ip.del_veth.call_count, 1)"},{"line_number":1470,"context_line":"        self.mock_ip.del_veth.assert_called_with(\u0027fpr-aaaa\u0027)"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_fdcf1b26","line":1469,"in_reply_to":"baada198_77588a25","updated":"2014-08-08 12:22:04.000000000","message":"Doing this You can also change 2 previous asserts this way too to keep it consistent","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"80ae9919547aa95be2ade77f67d8cdad3dab0b59","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        self.mock_driver.unplug.assert_called_with(\u0027fg-aaaa\u0027, bridge\u003d\u0027br-ex\u0027,"},{"line_number":1467,"context_line":"                                                   prefix\u003d\u0027fg-\u0027,"},{"line_number":1468,"context_line":"                                                   namespace\u003d\u0027qrouter-foo\u0027)"},{"line_number":1469,"context_line":"        self.assertEqual(self.mock_ip.del_veth.call_count, 1)"},{"line_number":1470,"context_line":"        self.mock_ip.del_veth.assert_called_with(\u0027fpr-aaaa\u0027)"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_80c86c76","line":1469,"in_reply_to":"baada198_77588a25","updated":"2014-08-08 17:28:00.000000000","message":"Done","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":10971,"name":"Michael Smith","email":"michael.smith6@hp.com","username":"mrsmith"},"change_message_id":"80ae9919547aa95be2ade77f67d8cdad3dab0b59","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        self.mock_driver.unplug.assert_called_with(\u0027fg-aaaa\u0027, bridge\u003d\u0027br-ex\u0027,"},{"line_number":1467,"context_line":"                                                   prefix\u003d\u0027fg-\u0027,"},{"line_number":1468,"context_line":"                                                   namespace\u003d\u0027qrouter-foo\u0027)"},{"line_number":1469,"context_line":"        self.assertEqual(self.mock_ip.del_veth.call_count, 1)"},{"line_number":1470,"context_line":"        self.mock_ip.del_veth.assert_called_with(\u0027fpr-aaaa\u0027)"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"    def test_destroy_router_namespace_skips_ns_removal(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_60cb5873","line":1469,"in_reply_to":"baada198_fdcf1b26","updated":"2014-08-08 17:28:00.000000000","message":"Done","commit_id":"05d5688450b8b21d6e287b6aa9bfdaf092019221"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"84f077e761e2074ec281adca064154c9e713f9a7","unresolved":false,"context_lines":[{"line_number":1886,"context_line":"                         \u0027id\u0027: _uuid(),"},{"line_number":1887,"context_line":"                         \u0027network_id\u0027: _uuid(),"},{"line_number":1888,"context_line":"                         \u0027mac_address\u0027: \u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":1889,"context_line":"                         \u0027ip_cidr\u0027: \u002720.0.0.30/24\u0027}"},{"line_number":1890,"context_line":"        fip_cidr \u003d \u002711.22.33.44/24\u0027"},{"line_number":1891,"context_line":""},{"line_number":1892,"context_line":"        ri \u003d l3_agent.RouterInfo(router[\u0027id\u0027], self.conf.root_helper,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_9205d07a","line":1889,"updated":"2014-08-12 04:45:26.000000000","message":":(","commit_id":"7205ea5858d5b23662e546885412832536688d51"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1cd044e2db9f34a89ebc2efd0a60b62f22d126e3","unresolved":false,"context_lines":[{"line_number":1886,"context_line":"                         \u0027id\u0027: _uuid(),"},{"line_number":1887,"context_line":"                         \u0027network_id\u0027: _uuid(),"},{"line_number":1888,"context_line":"                         \u0027mac_address\u0027: \u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":1889,"context_line":"                         \u0027ip_cidr\u0027: \u002720.0.0.30/24\u0027}"},{"line_number":1890,"context_line":"        fip_cidr \u003d \u002711.22.33.44/24\u0027"},{"line_number":1891,"context_line":""},{"line_number":1892,"context_line":"        ri \u003d l3_agent.RouterInfo(router[\u0027id\u0027], self.conf.root_helper,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_92ef9085","line":1889,"in_reply_to":"baada198_9205d07a","updated":"2014-08-12 04:54:34.000000000","message":"oh well...","commit_id":"7205ea5858d5b23662e546885412832536688d51"}]}
