)]}'
{"neutron/agent/l3_agent.py":[{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"b0a6b28e398f8c1b6b6d1db47b02093bef8cfa5f","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":308,"context_line":"            self._spawn_metadata_proxy(ri)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _router_removed(self, router_id):"},{"line_number":311,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":312,"context_line":"        if not ri:"},{"line_number":313,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FEGM%3D","line":310,"updated":"2013-10-05 05:20:42.000000000","message":"I made the same change for bugfix 1232525, review 49300","commit_id":"94e015436726d3167ee7e8730814be808ee22aa3"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5546c914a64a0133677a4e19c05b9e9e2abe0109","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":308,"context_line":"            self._spawn_metadata_proxy(ri)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _router_removed(self, router_id):"},{"line_number":311,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":312,"context_line":"        if not ri:"},{"line_number":313,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAS3%2F%2FD5A%3D","line":310,"in_reply_to":"AAAAS3%2F%2FEGM%3D","updated":"2013-10-05 09:40:52.000000000","message":"It\u0027s not a big deal if two patches do the same change.\nThis is also an investigative work at the moment and this bit of code does not address the root cause.\nI will take care of rebasing accordingly.","commit_id":"94e015436726d3167ee7e8730814be808ee22aa3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"905cd817a64346701cfd9e70130b90429bd9f6f7","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _router_removed(self, router_id):"},{"line_number":310,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":311,"context_line":"        if not ri:"},{"line_number":312,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""},{"line_number":313,"context_line":"                       \"Skipping router removal\"), router_id)"},{"line_number":314,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F5nY%3D","line":311,"updated":"2013-10-08 10:31:56.000000000","message":"I\u0027d suggest to compare ri to None\n\nif ri is None:\n    ...","commit_id":"40f58238788ffdfac07f2d123c5fd08e53b42d23"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e0db9d2e01abfc4d5a20dd623997cb7504a4eb39","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _router_removed(self, router_id):"},{"line_number":310,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":311,"context_line":"        if not ri:"},{"line_number":312,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""},{"line_number":313,"context_line":"                       \"Skipping router removal\"), router_id)"},{"line_number":314,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F47I%3D","line":311,"in_reply_to":"AAAATH%2F%2F5FM%3D","updated":"2013-10-08 13:03:57.000000000","message":"I never insisted on anything in my life, and I\u0027m surely not going to start now!","commit_id":"40f58238788ffdfac07f2d123c5fd08e53b42d23"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2c8f3828b05d146fa7c02b474861f8a4adb359b9","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _router_removed(self, router_id):"},{"line_number":310,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":311,"context_line":"        if not ri:"},{"line_number":312,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""},{"line_number":313,"context_line":"                       \"Skipping router removal\"), router_id)"},{"line_number":314,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F5FM%3D","line":311,"in_reply_to":"AAAATH%2F%2F5Y8%3D","updated":"2013-10-08 12:27:36.000000000","message":"If empty \"something\" or False is stored under router_id key then I think something is really wrong and crash on line 315 should happen in this case.\n\nI might be wrong and one can expect empty string, list or whatever there but if it\u0027s not expected and it happens, the program should report it somehow - and in this case \"somehow\" is the crash. I understand router_info as a dict for storing RouterInfo instances and line 311 as a check if the router is presented or not.\n\nIf you still insist ri evaluated as a False is correct and sufficient, I\u0027m ok with that. I just wanted to suggest to have better control over what\u0027s stored in router_info dict.","commit_id":"40f58238788ffdfac07f2d123c5fd08e53b42d23"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"bc6ce11c134fcac1b25f83f2c9ce9531a59cad02","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _router_removed(self, router_id):"},{"line_number":310,"context_line":"        ri \u003d self.router_info.get(router_id)"},{"line_number":311,"context_line":"        if not ri:"},{"line_number":312,"context_line":"            LOG.warn(_(\"Info for router %s were not found. \""},{"line_number":313,"context_line":"                       \"Skipping router removal\"), router_id)"},{"line_number":314,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATH%2F%2F5Y8%3D","line":311,"in_reply_to":"AAAATH%2F%2F5nY%3D","updated":"2013-10-08 11:34:07.000000000","message":"if we do this and for some reason an empty string or a False statement gets in router_info (which should never happen anyway) then we\u0027ll have a crash at line 315.\n\nFrom a style perspective, I have been suggested several times to avoid explicit comparison with None unless needed to distinguish from other values evaluating to false; but I am happy to do as you wish, provided there is a reason, which I am probably unable to see at the moment.","commit_id":"40f58238788ffdfac07f2d123c5fd08e53b42d23"}]}
