)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     berlin \u003clinb@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-28 17:35:14 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix adding router_id return attribute when CRU firewall and vip obj"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Work Done:"},{"line_number":10,"context_line":"        1.adding router_id return attribute when CRU firewall/vip obj"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BPuY%3D","line":7,"updated":"2013-11-28 12:08:15.000000000","message":"The first line of the commit messagecan probably be improved\n\nTry: add router_id to responses for CRU ops on fw and vip objects","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     berlin \u003clinb@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-28 17:35:14 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix adding router_id return attribute when CRU firewall and vip obj"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Work Done:"},{"line_number":10,"context_line":"        1.adding router_id return attribute when CRU firewall/vip obj"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BNIc%3D","line":7,"in_reply_to":"AAAATn%2F%2BPuY%3D","updated":"2013-11-29 09:10:49.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix adding router_id return attribute when CRU firewall and vip obj"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Work Done:"},{"line_number":10,"context_line":"        1.adding router_id return attribute when CRU firewall/vip obj"},{"line_number":11,"context_line":"        2.Adding router_id return attribute in unit test cases"},{"line_number":12,"context_line":"        3.Adding list vip/firewall unit test cases"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BPuw%3D","line":9,"updated":"2013-11-28 12:08:15.000000000","message":"nit: \"Work done\" is unnecessary","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix adding router_id return attribute when CRU firewall and vip obj"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Work Done:"},{"line_number":10,"context_line":"        1.adding router_id return attribute when CRU firewall/vip obj"},{"line_number":11,"context_line":"        2.Adding router_id return attribute in unit test cases"},{"line_number":12,"context_line":"        3.Adding list vip/firewall unit test cases"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BNIY%3D","line":9,"in_reply_to":"AAAATn%2F%2BPuw%3D","updated":"2013-11-29 09:10:49.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"        2.Adding router_id return attribute in unit test cases"},{"line_number":12,"context_line":"        3.Adding list vip/firewall unit test cases"},{"line_number":13,"context_line":"        4.Refactor duplicate codes"},{"line_number":14,"context_line":"        5.Enhance Error Handle"},{"line_number":15,"context_line":"        6.Add transparent mode in Neutron"},{"line_number":16,"context_line":"        7.Add session_persistence implementation on Edge"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BPuM%3D","line":14,"updated":"2013-11-28 12:08:15.000000000","message":"error handle -\u003e error handling","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"        2.Adding router_id return attribute in unit test cases"},{"line_number":12,"context_line":"        3.Adding list vip/firewall unit test cases"},{"line_number":13,"context_line":"        4.Refactor duplicate codes"},{"line_number":14,"context_line":"        5.Enhance Error Handle"},{"line_number":15,"context_line":"        6.Add transparent mode in Neutron"},{"line_number":16,"context_line":"        7.Add session_persistence implementation on Edge"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BNIU%3D","line":14,"in_reply_to":"AAAATn%2F%2BPuM%3D","updated":"2013-11-29 09:10:49.000000000","message":"Done.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        6.Add transparent mode in Neutron"},{"line_number":16,"context_line":"        7.Add session_persistence implementation on Edge"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Fixes Bug #1231770"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I458b495d75904410d52663d22c782934144c5f61"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BPu4%3D","line":18,"updated":"2013-11-28 12:08:15.000000000","message":"This commit message is not linking anymore to the bug report.\n\nTry:\n\nCloses-Bug: #1231770","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        6.Add transparent mode in Neutron"},{"line_number":16,"context_line":"        7.Add session_persistence implementation on Edge"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Fixes Bug #1231770"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I458b495d75904410d52663d22c782934144c5f61"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F%2BNIM%3D","line":18,"in_reply_to":"AAAATn%2F%2BPu4%3D","updated":"2013-11-29 09:10:49.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"}],"neutron/plugins/nicira/NeutronServicePlugin.py":[{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"7214059e6e42c8f3b3fc68590cc25c7b8d7a62da","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"            context, loadbalancer_db.Vip, resource_id\u003dvip[\u0027id\u0027])"},{"line_number":1290,"context_line":"        vip[rsi.ROUTER_ID] \u003d service_router_binding[\u0027router_id\u0027]"},{"line_number":1291,"context_line":"        return vip"},{"line_number":1292,"context_line":""},{"line_number":1293,"context_line":"    def update_pool(self, context, id, pool):"},{"line_number":1294,"context_line":"        pool[\u0027pool\u0027][\u0027status\u0027] \u003d service_constants.PENDING_UPDATE"},{"line_number":1295,"context_line":"        p \u003d super(NvpAdvancedPlugin, self).update_pool(context, id, pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FarM%3D","line":1292,"updated":"2013-09-27 05:43:47.000000000","message":"get_vips also need to return router_id, right?","commit_id":"2edbcd09f8ab5333b0b42cd2deefd9a7a28ea576"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"83baba5f5e2e724f9ac075369ab3935850136c8d","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"            context, loadbalancer_db.Vip, resource_id\u003dvip[\u0027id\u0027])"},{"line_number":1290,"context_line":"        vip[rsi.ROUTER_ID] \u003d service_router_binding[\u0027router_id\u0027]"},{"line_number":1291,"context_line":"        return vip"},{"line_number":1292,"context_line":""},{"line_number":1293,"context_line":"    def update_pool(self, context, id, pool):"},{"line_number":1294,"context_line":"        pool[\u0027pool\u0027][\u0027status\u0027] \u003d service_constants.PENDING_UPDATE"},{"line_number":1295,"context_line":"        p \u003d super(NvpAdvancedPlugin, self).update_pool(context, id, pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FaYc%3D","line":1292,"in_reply_to":"AAAAS3%2F%2FarM%3D","updated":"2013-09-27 09:22:09.000000000","message":"Done","commit_id":"2edbcd09f8ab5333b0b42cd2deefd9a7a28ea576"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        #Get vcns_router_binding mapping between router and edge"},{"line_number":807,"context_line":"        vcns_router_binding \u003d vcns_db.get_vcns_router_binding("},{"line_number":808,"context_line":"            context.session, router_id)"},{"line_number":809,"context_line":"        return vcns_router_binding.edge_id"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def _get_firewall_list_from_firewall_policy(self, context, policy_id):"},{"line_number":812,"context_line":"        firewall_policy_db \u003d self._get_firewall_policy(context, policy_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FWD4%3D","line":809,"updated":"2013-10-17 14:28:59.000000000","message":"L.807-809 can be merged into one line:\n\n  return vcns_db.get_vcns_router_binding(...)","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        #Get vcns_router_binding mapping between router and edge"},{"line_number":807,"context_line":"        vcns_router_binding \u003d vcns_db.get_vcns_router_binding("},{"line_number":808,"context_line":"            context.session, router_id)"},{"line_number":809,"context_line":"        return vcns_router_binding.edge_id"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def _get_firewall_list_from_firewall_policy(self, context, policy_id):"},{"line_number":812,"context_line":"        firewall_policy_db \u003d self._get_firewall_policy(context, policy_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FThI%3D","line":809,"in_reply_to":"AAAATH%2F%2FWD4%3D","updated":"2013-10-21 05:39:25.000000000","message":"Done","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":857,"context_line":"            edge_id \u003d self._get_edge_id_by_vcns_router_binding("},{"line_number":858,"context_line":"                context, router_id)"},{"line_number":859,"context_line":"        #TODO(linb):do rollback on error"},{"line_number":860,"context_line":"        #Here we call update_firewall not delete_firewall, becuase"},{"line_number":861,"context_line":"        #delete_firewall would lead the default rule of Firewall to \"deny\""},{"line_number":862,"context_line":"        #which prohibit datapath between edge and logical router"},{"line_number":863,"context_line":"        self.vcns_driver.update_firewall(context, edge_id, {})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FWDY%3D","line":860,"updated":"2013-10-17 14:28:59.000000000","message":"typo: becuase -\u003e because","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":857,"context_line":"            edge_id \u003d self._get_edge_id_by_vcns_router_binding("},{"line_number":858,"context_line":"                context, router_id)"},{"line_number":859,"context_line":"        #TODO(linb):do rollback on error"},{"line_number":860,"context_line":"        #Here we call update_firewall not delete_firewall, becuase"},{"line_number":861,"context_line":"        #delete_firewall would lead the default rule of Firewall to \"deny\""},{"line_number":862,"context_line":"        #which prohibit datapath between edge and logical router"},{"line_number":863,"context_line":"        self.vcns_driver.update_firewall(context, edge_id, {})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FThE%3D","line":860,"in_reply_to":"AAAATH%2F%2FWDY%3D","updated":"2013-10-21 05:39:25.000000000","message":"Done","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            resource_ids\u003d[fw[\u0027id\u0027] for fw in fws])"},{"line_number":955,"context_line":"        mapping \u003d {}"},{"line_number":956,"context_line":"        for binding in service_router_bindings:"},{"line_number":957,"context_line":"            mapping[binding[\u0027resource_id\u0027]] \u003d binding[\u0027router_id\u0027]"},{"line_number":958,"context_line":"        for fw in fws:"},{"line_number":959,"context_line":"            fw[rsi.ROUTER_ID] \u003d mapping[fw[\u0027id\u0027]]"},{"line_number":960,"context_line":"        return fws"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FWBc%3D","line":957,"updated":"2013-10-17 14:28:59.000000000","message":"It is just my preference, but consider:\n\n  mapping \u003d dict([(binding[\u0027resource_id\u0027], binding[\u0027router_id\u0027])\n                   for binding in service_router_bindings])","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            resource_ids\u003d[fw[\u0027id\u0027] for fw in fws])"},{"line_number":955,"context_line":"        mapping \u003d {}"},{"line_number":956,"context_line":"        for binding in service_router_bindings:"},{"line_number":957,"context_line":"            mapping[binding[\u0027resource_id\u0027]] \u003d binding[\u0027router_id\u0027]"},{"line_number":958,"context_line":"        for fw in fws:"},{"line_number":959,"context_line":"            fw[rsi.ROUTER_ID] \u003d mapping[fw[\u0027id\u0027]]"},{"line_number":960,"context_line":"        return fws"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FThM%3D","line":957,"in_reply_to":"AAAATH%2F%2FWBc%3D","updated":"2013-10-21 05:39:25.000000000","message":"Done","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"            resource_ids\u003d[vip[\u0027id\u0027] for vip in vips])"},{"line_number":1315,"context_line":"        mapping \u003d {}"},{"line_number":1316,"context_line":"        for binding in service_router_bindings:"},{"line_number":1317,"context_line":"            mapping[binding[\u0027resource_id\u0027]] \u003d binding[\u0027router_id\u0027]"},{"line_number":1318,"context_line":"        for vip in vips:"},{"line_number":1319,"context_line":"            vip[rsi.ROUTER_ID] \u003d mapping[vip[\u0027id\u0027]]"},{"line_number":1320,"context_line":"        return vips"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FWAc%3D","line":1317,"updated":"2013-10-17 14:28:59.000000000","message":"Same as L.957.","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"            resource_ids\u003d[vip[\u0027id\u0027] for vip in vips])"},{"line_number":1315,"context_line":"        mapping \u003d {}"},{"line_number":1316,"context_line":"        for binding in service_router_bindings:"},{"line_number":1317,"context_line":"            mapping[binding[\u0027resource_id\u0027]] \u003d binding[\u0027router_id\u0027]"},{"line_number":1318,"context_line":"        for vip in vips:"},{"line_number":1319,"context_line":"            vip[rsi.ROUTER_ID] \u003d mapping[vip[\u0027id\u0027]]"},{"line_number":1320,"context_line":"        return vips"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FTg8%3D","line":1317,"in_reply_to":"AAAATH%2F%2FWAc%3D","updated":"2013-10-21 05:39:25.000000000","message":"Done","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"        edge_id \u003d kwargs.get(\u0027edge_id\u0027)"},{"line_number":1169,"context_line":"        if not edge_id:"},{"line_number":1170,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id("},{"line_number":1171,"context_line":"                context, pool[\u0027vip_id\u0027])"},{"line_number":1172,"context_line":"        #TODO(linb): add exception handle on error"},{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FL0g%3D","line":1171,"updated":"2013-10-21 20:05:03.000000000","message":"It\u0027s better to check if vip_id is in pool, if not, we can just return.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"        edge_id \u003d kwargs.get(\u0027edge_id\u0027)"},{"line_number":1169,"context_line":"        if not edge_id:"},{"line_number":1170,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id("},{"line_number":1171,"context_line":"                context, pool[\u0027vip_id\u0027])"},{"line_number":1172,"context_line":"        #TODO(linb): add exception handle on error"},{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyig%3D","line":1171,"in_reply_to":"AAAATH%2F%2FL0g%3D","updated":"2013-11-04 08:59:35.000000000","message":"Since our implementation model is vip-centralized, _vcns_delete_pool_and_monitors are only called by VIP operations, so the pool_id parameter is extracted from vip and the vip_id must be exist.\nConsidering our model may be changed and also let the func more stable, I add this conditon upper this line.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":1170,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id("},{"line_number":1171,"context_line":"                context, pool[\u0027vip_id\u0027])"},{"line_number":1172,"context_line":"        #TODO(linb): add exception handle on error"},{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"},{"line_number":1175,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1176,"context_line":"            #TODO(linb): add exception handle on error"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLz0%3D","line":1173,"updated":"2013-10-21 20:05:03.000000000","message":"We should ignore exception if the exception is NotFound.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":1170,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id("},{"line_number":1171,"context_line":"                context, pool[\u0027vip_id\u0027])"},{"line_number":1172,"context_line":"        #TODO(linb): add exception handle on error"},{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"},{"line_number":1175,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1176,"context_line":"            #TODO(linb): add exception handle on error"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fycc%3D","line":1173,"in_reply_to":"AAAATH%2F%2FLz0%3D","updated":"2013-11-04 08:59:35.000000000","message":"Done.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"},{"line_number":1175,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1176,"context_line":"            #TODO(linb): add exception handle on error"},{"line_number":1177,"context_line":"            self.vcns_driver.delete_health_monitor("},{"line_number":1178,"context_line":"                context, monitor_id, edge_id)"},{"line_number":1179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLzs%3D","line":1176,"updated":"2013-10-21 20:05:03.000000000","message":"Same, we should ignore exception if the exception is NotFound.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"        self.vcns_driver.delete_pool("},{"line_number":1174,"context_line":"            context, pool_id, edge_id)"},{"line_number":1175,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1176,"context_line":"            #TODO(linb): add exception handle on error"},{"line_number":1177,"context_line":"            self.vcns_driver.delete_health_monitor("},{"line_number":1178,"context_line":"                context, monitor_id, edge_id)"},{"line_number":1179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FycY%3D","line":1176,"in_reply_to":"AAAATH%2F%2FLzs%3D","updated":"2013-11-04 08:59:35.000000000","message":"Done","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"        return v"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"    def update_vip(self, context, id, vip):"},{"line_number":1244,"context_line":"        service_router_binding \u003d self._get_resource_router_id_binding("},{"line_number":1245,"context_line":"            context, loadbalancer_db.Vip, resource_id\u003did)"},{"line_number":1246,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_router_binding("},{"line_number":1247,"context_line":"            context, service_router_binding.router_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLxU%3D","line":1244,"updated":"2013-10-21 20:05:03.000000000","message":"why not keep using _get_edge_id_by_vip_id() ?","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"        return v"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"    def update_vip(self, context, id, vip):"},{"line_number":1244,"context_line":"        service_router_binding \u003d self._get_resource_router_id_binding("},{"line_number":1245,"context_line":"            context, loadbalancer_db.Vip, resource_id\u003did)"},{"line_number":1246,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_router_binding("},{"line_number":1247,"context_line":"            context, service_router_binding.router_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyao%3D","line":1244,"in_reply_to":"AAAATH%2F%2FLxU%3D","updated":"2013-11-04 08:59:35.000000000","message":"Since I need to get the router_id info through service_router_binding, so I did not use the func call.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"685c3a7e6c1550609634b8477de8c680f4e50eab","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"        return v"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"    def update_vip(self, context, id, vip):"},{"line_number":1244,"context_line":"        service_router_binding \u003d self._get_resource_router_id_binding("},{"line_number":1245,"context_line":"            context, loadbalancer_db.Vip, resource_id\u003did)"},{"line_number":1246,"context_line":"        edge_id \u003d self._get_edge_id_by_vcns_router_binding("},{"line_number":1247,"context_line":"            context, service_router_binding.router_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FdVM%3D","line":1244,"in_reply_to":"AAAATn%2F%2Fyao%3D","updated":"2013-11-05 17:16:19.000000000","message":"Got it, missed that one.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"            self.vcns_driver.create_vip(context, edge_id, v)"},{"line_number":1262,"context_line":"            return v"},{"line_number":1263,"context_line":"        try:"},{"line_number":1264,"context_line":"            self.vcns_driver.update_vip(context, v, sess_persist)"},{"line_number":1265,"context_line":"        except Exception:"},{"line_number":1266,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1267,"context_line":"                LOG.exception(_(\"Failed to update vip with id: %s!\"), id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLwU%3D","line":1264,"updated":"2013-10-21 20:05:03.000000000","message":"Why you need a separate sess_persist argument for update_vip? Isn\u0027t it in dict v already, like create_vip case?","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"            self.vcns_driver.create_vip(context, edge_id, v)"},{"line_number":1262,"context_line":"            return v"},{"line_number":1263,"context_line":"        try:"},{"line_number":1264,"context_line":"            self.vcns_driver.update_vip(context, v, sess_persist)"},{"line_number":1265,"context_line":"        except Exception:"},{"line_number":1266,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1267,"context_line":"                LOG.exception(_(\"Failed to update vip with id: %s!\"), id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyZw%3D","line":1264,"in_reply_to":"AAAATH%2F%2FLwU%3D","updated":"2013-11-04 08:59:35.000000000","message":"If the sess_persist in update_vip info is none, I do not need to push update the application profile call to VCNS.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"d20bdcce10472dfa9e716d0bbf5d2015f183cc0c","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"            self.vcns_driver.create_vip(context, edge_id, v)"},{"line_number":1262,"context_line":"            return v"},{"line_number":1263,"context_line":"        try:"},{"line_number":1264,"context_line":"            self.vcns_driver.update_vip(context, v, sess_persist)"},{"line_number":1265,"context_line":"        except Exception:"},{"line_number":1266,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1267,"context_line":"                LOG.exception(_(\"Failed to update vip with id: %s!\"), id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FbvE%3D","line":1264,"in_reply_to":"AAAATn%2F%2FdVQ%3D","updated":"2013-11-06 09:16:33.000000000","message":"After rechecking the db logic on updating VIP, I found you are right. I have already removed the parameter.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"685c3a7e6c1550609634b8477de8c680f4e50eab","unresolved":false,"context_lines":[{"line_number":1261,"context_line":"            self.vcns_driver.create_vip(context, edge_id, v)"},{"line_number":1262,"context_line":"            return v"},{"line_number":1263,"context_line":"        try:"},{"line_number":1264,"context_line":"            self.vcns_driver.update_vip(context, v, sess_persist)"},{"line_number":1265,"context_line":"        except Exception:"},{"line_number":1266,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1267,"context_line":"                LOG.exception(_(\"Failed to update vip with id: %s!\"), id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FdVQ%3D","line":1264,"in_reply_to":"AAAATn%2F%2FyZw%3D","updated":"2013-11-05 17:16:19.000000000","message":"I\u0027m not sure if this is expected. Say if a VIP has some session_persist configured when we create it. Later when we update the VIP we remove the session_persist, we should change Edge\u0027s session_persist config to a default value as if we didn\u0027t configure session_persist when it is created. I believe we shouldn\u0027t just ignore it if it is None.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":913,"context_line":"        else:"},{"line_number":914,"context_line":"            self._vcns_update_firewall("},{"line_number":915,"context_line":"                context, fw, service_router_binding.router_id,"},{"line_number":916,"context_line":"                firewall_rule_list\u003drule_list_new)"},{"line_number":917,"context_line":"            self._firewall_set_status("},{"line_number":918,"context_line":"                context, fw[\u0027id\u0027], service_constants.ACTIVE, fw)"},{"line_number":919,"context_line":"            return fw"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPq8%3D","line":916,"updated":"2013-11-28 12:08:15.000000000","message":"What\u0027s the relationship between the line above and this patch?","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":913,"context_line":"        else:"},{"line_number":914,"context_line":"            self._vcns_update_firewall("},{"line_number":915,"context_line":"                context, fw, service_router_binding.router_id,"},{"line_number":916,"context_line":"                firewall_rule_list\u003drule_list_new)"},{"line_number":917,"context_line":"            self._firewall_set_status("},{"line_number":918,"context_line":"                context, fw[\u0027id\u0027], service_constants.ACTIVE, fw)"},{"line_number":919,"context_line":"            return fw"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BNHo%3D","line":916,"in_reply_to":"AAAATn%2F%2BPq8%3D","updated":"2013-11-29 09:10:49.000000000","message":"Actually no relationship, the adding parameter would avoid _vcns_update_firewall calculating the rule list again.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"            self.vcns_driver.update_vip(context, vip)"},{"line_number":1128,"context_line":"        except Exception:"},{"line_number":1129,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1130,"context_line":"                LOG.exception(_(\"Failed to update vip: %s on Edge\") %"},{"line_number":1131,"context_line":"                              vip[\u0027id\u0027])"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"    def _vcns_delete_vip(self, context, vip_id):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPqM%3D","line":1130,"updated":"2013-11-28 12:08:15.000000000","message":"for consistency here and at line 1140 you might want to add the edge_id to the log statement","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"            self.vcns_driver.update_vip(context, vip)"},{"line_number":1128,"context_line":"        except Exception:"},{"line_number":1129,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1130,"context_line":"                LOG.exception(_(\"Failed to update vip: %s on Edge\") %"},{"line_number":1131,"context_line":"                              vip[\u0027id\u0027])"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"    def _vcns_delete_vip(self, context, vip_id):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCsQ%3D","line":1130,"in_reply_to":"AAAATn%2F%2BPqM%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"            LOG.warning(_(\"Not found vip %s mapping in VCNS\"), vip_id)"},{"line_number":1138,"context_line":"        except Exception:"},{"line_number":1139,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1140,"context_line":"                LOG.exception(_(\"Failed to delete vip: %s on Edge!\") % vip_id)"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"    def _vcns_create_pool(self, context, edge_id, pool, members):"},{"line_number":1143,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPqc%3D","line":1140,"updated":"2013-11-28 12:08:15.000000000","message":"save and reraise should not be needed if the exc handler just logs.\n\nConsider jusT:\nLOG.exception(....)\nraise","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"            LOG.warning(_(\"Not found vip %s mapping in VCNS\"), vip_id)"},{"line_number":1138,"context_line":"        except Exception:"},{"line_number":1139,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1140,"context_line":"                LOG.exception(_(\"Failed to delete vip: %s on Edge!\") % vip_id)"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"    def _vcns_create_pool(self, context, edge_id, pool, members):"},{"line_number":1143,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCsM%3D","line":1140,"in_reply_to":"AAAATn%2F%2BPqc%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        except Exception:"},{"line_number":1182,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1183,"context_line":"                LOG.exception(_(\"Failed to create healthmonitor \""},{"line_number":1184,"context_line":"                                \"on Edge: %s!\") % edge_id)"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def _vcns_update_health_monitor(self, context, edge_id, old_hm, hm):"},{"line_number":1187,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPow%3D","line":1184,"updated":"2013-11-28 12:08:15.000000000","message":"just log and raise","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        except Exception:"},{"line_number":1182,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1183,"context_line":"                LOG.exception(_(\"Failed to create healthmonitor \""},{"line_number":1184,"context_line":"                                \"on Edge: %s!\") % edge_id)"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def _vcns_update_health_monitor(self, context, edge_id, old_hm, hm):"},{"line_number":1187,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCl4%3D","line":1184,"in_reply_to":"AAAATn%2F%2BPow%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"                context, edge_id, old_hm, hm)"},{"line_number":1190,"context_line":"        except Exception:"},{"line_number":1191,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1192,"context_line":"                LOG.exception(_(\"Failed to update monitor %s on Edge!\") % id)"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def _vcns_delete_health_monitor(self, context, edge_id, monitor_id):"},{"line_number":1195,"context_line":"        #Check whether the monitor has been associated another pool"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPnQ%3D","line":1192,"updated":"2013-11-28 12:08:15.000000000","message":"logging and raising will be enough","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"                context, edge_id, old_hm, hm)"},{"line_number":1190,"context_line":"        except Exception:"},{"line_number":1191,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1192,"context_line":"                LOG.exception(_(\"Failed to update monitor %s on Edge!\") % id)"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def _vcns_delete_health_monitor(self, context, edge_id, monitor_id):"},{"line_number":1195,"context_line":"        #Check whether the monitor has been associated another pool"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCUg%3D","line":1192,"in_reply_to":"AAAATn%2F%2BPnQ%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def _vcns_delete_health_monitor(self, context, edge_id, monitor_id):"},{"line_number":1195,"context_line":"        #Check whether the monitor has been associated another pool"},{"line_number":1196,"context_line":"        #on the Edge"},{"line_number":1197,"context_line":"        pool_bindings \u003d vcns_db.get_vcns_edge_pool_bindings("},{"line_number":1198,"context_line":"            context.session, edge_id)"},{"line_number":1199,"context_line":"        number \u003d 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPm8%3D","line":1196,"updated":"2013-11-28 12:08:15.000000000","message":"comments perhaps need to be changed\n\nhas been associate WITH another pool","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def _vcns_delete_health_monitor(self, context, edge_id, monitor_id):"},{"line_number":1195,"context_line":"        #Check whether the monitor has been associated another pool"},{"line_number":1196,"context_line":"        #on the Edge"},{"line_number":1197,"context_line":"        pool_bindings \u003d vcns_db.get_vcns_edge_pool_bindings("},{"line_number":1198,"context_line":"            context.session, edge_id)"},{"line_number":1199,"context_line":"        number \u003d 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCkk%3D","line":1196,"in_reply_to":"AAAATn%2F%2BPm8%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def _vcns_delete_health_monitor(self, context, edge_id, monitor_id):"},{"line_number":1195,"context_line":"        #Check whether the monitor has been associated another pool"},{"line_number":1196,"context_line":"        #on the Edge"},{"line_number":1197,"context_line":"        pool_bindings \u003d vcns_db.get_vcns_edge_pool_bindings("},{"line_number":1198,"context_line":"            context.session, edge_id)"},{"line_number":1199,"context_line":"        number \u003d 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BM3o%3D","line":1196,"in_reply_to":"AAAATn%2F%2BPm8%3D","updated":"2013-11-29 09:10:49.000000000","message":"Got it and i decide to split all codes referring to error handling and refactor to another bug.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1199,"context_line":"        number \u003d 0"},{"line_number":1200,"context_line":"        for pool_binding in pool_bindings:"},{"line_number":1201,"context_line":"            for monitor in self._get_resource("},{"line_number":1202,"context_line":"                context, loadbalancer_db.Pool, pool_binding.pool_id).monitors:"},{"line_number":1203,"context_line":"                if monitor[\u0027monitor_id\u0027] \u003d\u003d monitor_id:"},{"line_number":1204,"context_line":"                    number \u003d number + 1"},{"line_number":1205,"context_line":"        if number \u003e 1:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPmQ%3D","line":1202,"updated":"2013-11-28 12:08:15.000000000","message":"I was just wondering if it would be possible to use a query with count here","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1199,"context_line":"        number \u003d 0"},{"line_number":1200,"context_line":"        for pool_binding in pool_bindings:"},{"line_number":1201,"context_line":"            for monitor in self._get_resource("},{"line_number":1202,"context_line":"                context, loadbalancer_db.Pool, pool_binding.pool_id).monitors:"},{"line_number":1203,"context_line":"                if monitor[\u0027monitor_id\u0027] \u003d\u003d monitor_id:"},{"line_number":1204,"context_line":"                    number \u003d number + 1"},{"line_number":1205,"context_line":"        if number \u003e 1:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCUY%3D","line":1202,"in_reply_to":"AAAATn%2F%2BPmQ%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"                if monitor[\u0027monitor_id\u0027] \u003d\u003d monitor_id:"},{"line_number":1204,"context_line":"                    number \u003d number + 1"},{"line_number":1205,"context_line":"        if number \u003e 1:"},{"line_number":1206,"context_line":"            return"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        try:"},{"line_number":1209,"context_line":"            self.vcns_driver.delete_health_monitor("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPmY%3D","line":1206,"updated":"2013-11-28 12:08:15.000000000","message":"I think this will trigger removal of the health monitor when there is exactly one pool binding.\n\nIs this desired?","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"                if monitor[\u0027monitor_id\u0027] \u003d\u003d monitor_id:"},{"line_number":1204,"context_line":"                    number \u003d number + 1"},{"line_number":1205,"context_line":"        if number \u003e 1:"},{"line_number":1206,"context_line":"            return"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        try:"},{"line_number":1209,"context_line":"            self.vcns_driver.delete_health_monitor("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCi8%3D","line":1206,"in_reply_to":"AAAATn%2F%2BPmY%3D","updated":"2013-12-03 07:33:47.000000000","message":"basically but not entirely correct. If there is exactly one pool binding on the same edge, it wil trigger the removal of the health monitor of the edge.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                          \"mapping in VCNS\") % monitor_id)"},{"line_number":1214,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1215,"context_line":"            LOG.exception(_(\"Failed to delete monitor: %s \""},{"line_number":1216,"context_line":"                            \"on Edge\") % monitor_id)"},{"line_number":1217,"context_line":"            raise e"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"    def _vcns_create_pool_and_monitors(self, context, pool_id, **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPmI%3D","line":1216,"updated":"2013-11-28 12:08:15.000000000","message":"usually edge_id is added in log statements as well","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                          \"mapping in VCNS\") % monitor_id)"},{"line_number":1214,"context_line":"        except exceptions.VcnsApiException as e:"},{"line_number":1215,"context_line":"            LOG.exception(_(\"Failed to delete monitor: %s \""},{"line_number":1216,"context_line":"                            \"on Edge\") % monitor_id)"},{"line_number":1217,"context_line":"            raise e"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"    def _vcns_create_pool_and_monitors(self, context, pool_id, **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BCig%3D","line":1216,"in_reply_to":"AAAATn%2F%2BPmI%3D","updated":"2013-12-03 07:33:47.000000000","message":"Done","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"        pool \u003d self.get_pool(context, pool_id)"},{"line_number":1221,"context_line":"        edge_id \u003d kwargs.get(\u0027edge_id\u0027)"},{"line_number":1222,"context_line":"        if not edge_id:"},{"line_number":1223,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id(context, pool[\u0027vip_id\u0027])"},{"line_number":1224,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1225,"context_line":"            hm \u003d self.get_health_monitor(context, monitor_id)"},{"line_number":1226,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPl8%3D","line":1223,"updated":"2013-11-28 12:08:15.000000000","message":"Does the above call need some form of exception handling?","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"8717a533a506e227739f8c0de834a254702b3306","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"        pool \u003d self.get_pool(context, pool_id)"},{"line_number":1221,"context_line":"        edge_id \u003d kwargs.get(\u0027edge_id\u0027)"},{"line_number":1222,"context_line":"        if not edge_id:"},{"line_number":1223,"context_line":"            edge_id \u003d self._get_edge_id_by_vip_id(context, pool[\u0027vip_id\u0027])"},{"line_number":1224,"context_line":"        for monitor_id in pool.get(\u0027health_monitors\u0027):"},{"line_number":1225,"context_line":"            hm \u003d self.get_health_monitor(context, monitor_id)"},{"line_number":1226,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BChg%3D","line":1223,"in_reply_to":"AAAATn%2F%2BPl8%3D","updated":"2013-12-03 07:33:47.000000000","message":"I have added exception handling inside the function","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"            raise nvp_exc.NvpServicePluginException(err_msg\u003dmsg)"},{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"        #Check whether there is same vip name on the Edge"},{"line_number":1297,"context_line":"        self._check_vip_name_allowed(context, router_id, vip[\u0027vip\u0027][\u0027name\u0027])"},{"line_number":1298,"context_line":""},{"line_number":1299,"context_line":"        #Check whether the vip port is an external port"},{"line_number":1300,"context_line":"        subnet_id \u003d vip[\u0027vip\u0027][\u0027subnet_id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPo8%3D","line":1297,"updated":"2013-11-28 12:08:15.000000000","message":"The neutron API does not enforce unique names, and technically this represents a violation of the API itself as a request which will succeed against an endpoint running a compliant driver will fail against an endpoint running this drivers.\n\nI would consider, if possible, to adopt a naming convention on the edge side which ensures name uniqueness.\n\nFor instance, if the name limit is 40 chars, use the first 32 from the neutron name, and then 8 random characters.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"fe2925e7e5b9d72ec35e38debc5fe31848ee14d4","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"            raise nvp_exc.NvpServicePluginException(err_msg\u003dmsg)"},{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"        #Check whether there is same vip name on the Edge"},{"line_number":1297,"context_line":"        self._check_vip_name_allowed(context, router_id, vip[\u0027vip\u0027][\u0027name\u0027])"},{"line_number":1298,"context_line":""},{"line_number":1299,"context_line":"        #Check whether the vip port is an external port"},{"line_number":1300,"context_line":"        subnet_id \u003d vip[\u0027vip\u0027][\u0027subnet_id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BM4c%3D","line":1297,"in_reply_to":"AAAATn%2F%2BPo8%3D","updated":"2013-11-29 09:10:49.000000000","message":"Got it. I would open another bug to solve the problem.","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"}],"neutron/plugins/nicira/vshield/edge_appliance_driver.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _enable_firewall(self, edge):"},{"line_number":133,"context_line":"        if not edge.get(\u0027featureConfigs\u0027) or ("},{"line_number":134,"context_line":"            not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):"},{"line_number":135,"context_line":"            edge[\u0027featureConfigs\u0027] \u003d {\u0027features\u0027: []}"},{"line_number":136,"context_line":"        edge[\u0027featureConfigs\u0027][\u0027features\u0027].append("},{"line_number":137,"context_line":"            {\u0027featureType\u0027: \u0027firewall_4.0\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FV%2FY%3D","line":134,"updated":"2013-10-17 14:28:59.000000000","message":"Please consider moving the opening parenthesis:\n\n  if (not edge.get(\u0027featureConfigs\u0027) or\n      not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _enable_firewall(self, edge):"},{"line_number":133,"context_line":"        if not edge.get(\u0027featureConfigs\u0027) or ("},{"line_number":134,"context_line":"            not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):"},{"line_number":135,"context_line":"            edge[\u0027featureConfigs\u0027] \u003d {\u0027features\u0027: []}"},{"line_number":136,"context_line":"        edge[\u0027featureConfigs\u0027][\u0027features\u0027].append("},{"line_number":137,"context_line":"            {\u0027featureType\u0027: \u0027firewall_4.0\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FTiU%3D","line":134,"in_reply_to":"AAAATH%2F%2FV%2FY%3D","updated":"2013-10-21 05:39:25.000000000","message":"Done","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            {\u0027featureType\u0027: \u0027loadbalancer_4.0\u0027,"},{"line_number":130,"context_line":"             \u0027enabled\u0027: True})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _enable_firewall(self, edge):"},{"line_number":133,"context_line":"        if (not edge.get(\u0027featureConfigs\u0027) or"},{"line_number":134,"context_line":"            not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):"},{"line_number":135,"context_line":"            edge[\u0027featureConfigs\u0027] \u003d {\u0027features\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLvA%3D","line":132,"updated":"2013-10-21 20:05:03.000000000","message":"I\u0027m not sure having \"accept\" as default is a good idea. We need to get consensus within the team on this one.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            {\u0027featureType\u0027: \u0027loadbalancer_4.0\u0027,"},{"line_number":130,"context_line":"             \u0027enabled\u0027: True})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _enable_firewall(self, edge):"},{"line_number":133,"context_line":"        if (not edge.get(\u0027featureConfigs\u0027) or"},{"line_number":134,"context_line":"            not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):"},{"line_number":135,"context_line":"            edge[\u0027featureConfigs\u0027] \u003d {\u0027features\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyZo%3D","line":132,"in_reply_to":"AAAATH%2F%2FLvA%3D","updated":"2013-11-04 08:59:35.000000000","message":"Done. keep \"deny\" as default","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"685c3a7e6c1550609634b8477de8c680f4e50eab","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            {\u0027featureType\u0027: \u0027loadbalancer_4.0\u0027,"},{"line_number":130,"context_line":"             \u0027enabled\u0027: True})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _enable_firewall(self, edge):"},{"line_number":133,"context_line":"        if (not edge.get(\u0027featureConfigs\u0027) or"},{"line_number":134,"context_line":"            not edge[\u0027featureConfigs\u0027].get(\u0027features\u0027)):"},{"line_number":135,"context_line":"            edge[\u0027featureConfigs\u0027] \u003d {\u0027features\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FdTg%3D","line":132,"in_reply_to":"AAAATn%2F%2FyZo%3D","updated":"2013-11-05 17:16:19.000000000","message":"Another option is, if no firewall is created, default action is \"accept\", otherwise default action is \"deny\". But let\u0027s keep using \"deny\" in both cases for now.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"}],"neutron/plugins/nicira/vshield/edge_firewall_driver.py":[{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"324041acfc9b33972d1c0af63de05ec4d5be95ac","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        #bulk configuration on firewall and rescheduling the rule binding"},{"line_number":129,"context_line":"        ruleTag \u003d 1"},{"line_number":130,"context_line":"        vcns_rules \u003d []"},{"line_number":131,"context_line":"        if firewall.get(\u0027firewall_rule_list\u0027):"},{"line_number":132,"context_line":"            for rule in firewall.get(\u0027firewall_rule_list\u0027):"},{"line_number":133,"context_line":"                vcns_rule \u003d self._convert_firewall_rule(context, rule, ruleTag)"},{"line_number":134,"context_line":"                vcns_rules.append(vcns_rule)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FYN8%3D","line":131,"updated":"2013-09-27 19:47:52.000000000","message":"You can use\nfor rule in firewall.get(\u0027firewall_rule_list\u0027, []):","commit_id":"5b7c76ca3d1f4a0b83f77b7bd115789cd6ff14eb"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"ad38ca9975694a21e1615a657fccdbc2509981eb","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        return {"},{"line_number":137,"context_line":"            \u0027featureType\u0027: \"firewall_4.0\","},{"line_number":138,"context_line":"            \u0027defaultPolicy\u0027: {\u0027action\u0027: \"accept\"},"},{"line_number":139,"context_line":"            \u0027firewallRules\u0027: {"},{"line_number":140,"context_line":"                \u0027firewallRules\u0027: vcns_rules}}"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FLug%3D","line":138,"updated":"2013-10-21 20:05:03.000000000","message":"I think we should have \"deny\" as the default at least here.","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"7f44388ebd1937996190a504cd384147b23dce33","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        return {"},{"line_number":137,"context_line":"            \u0027featureType\u0027: \"firewall_4.0\","},{"line_number":138,"context_line":"            \u0027defaultPolicy\u0027: {\u0027action\u0027: \"accept\"},"},{"line_number":139,"context_line":"            \u0027firewallRules\u0027: {"},{"line_number":140,"context_line":"                \u0027firewallRules\u0027: vcns_rules}}"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyZQ%3D","line":138,"in_reply_to":"AAAATH%2F%2FLug%3D","updated":"2013-11-04 08:59:35.000000000","message":"Done","commit_id":"5298f6cde0256ab17c409a51f262faed048b4729"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"e9cfbe5e454132e7a327818e471a1c6039938fc7","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    def _get_firewall(self, context, edge_id):"},{"line_number":187,"context_line":"        try:"},{"line_number":188,"context_line":"            vcns_fw \u003d self.vcns.get_firewall(edge_id)[1]"},{"line_number":189,"context_line":"            for i in reversed("},{"line_number":190,"context_line":"                range(len(vcns_fw[\u0027firewallRules\u0027][\u0027firewallRules\u0027]))):"},{"line_number":191,"context_line":"                if vcns_fw[\u0027firewallRules\u0027][\u0027firewallRules\u0027][i].get("},{"line_number":192,"context_line":"                    \u0027ruleType\u0027) !\u003d \u0027user\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BPlQ%3D","line":189,"updated":"2013-11-28 12:08:15.000000000","message":"It seems the goal of the iteration of the reversed range is to pick elements from the tail of the list.\n\nI think the python list has a pop method which does this\n\n\u003e\u003e\u003e x\u003d[1,2,3]\n\u003e\u003e\u003e x.pop()\n3\n\u003e\u003e\u003e x.pop()\n2\n\u003e\u003e\u003e x.pop()\n1","commit_id":"38a4e3ee34da69cf61db139605b57f96400fdadb"}],"neutron/plugins/nicira/vshield/edge_loadbalancer_driver.py":[{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"887771349b8ec5cf4ea0d8c1d1e4346a76d30547","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self.vcns.delete_vip(edge_id, vip_vseid)"},{"line_number":236,"context_line":"            self.vcns.delete_app_profile(edge_id, app_profileid)"},{"line_number":237,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":238,"context_line":"            pass"},{"line_number":239,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":240,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":241,"context_line":"                LOG.exception(_(\"Failed to delete vip on edge: %s\"), edge_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FdSw%3D","line":238,"updated":"2013-11-05 17:16:47.000000000","message":"Please also log this exception.","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"88f0870afc537e103c00c52ba572c66782460f24","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self.vcns.delete_vip(edge_id, vip_vseid)"},{"line_number":236,"context_line":"            self.vcns.delete_app_profile(edge_id, app_profileid)"},{"line_number":237,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":238,"context_line":"            pass"},{"line_number":239,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":240,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":241,"context_line":"                LOG.exception(_(\"Failed to delete vip on edge: %s\"), edge_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fbs4%3D","line":238,"in_reply_to":"AAAATn%2F%2FdSw%3D","updated":"2013-11-11 08:56:23.000000000","message":"Done","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"887771349b8ec5cf4ea0d8c1d1e4346a76d30547","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        try:"},{"line_number":298,"context_line":"            self.vcns.delete_pool(edge_id, pool_vseid)"},{"line_number":299,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":300,"context_line":"            pass"},{"line_number":301,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":302,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":303,"context_line":"                LOG.exception(_(\"Failed to delete pool\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FdSs%3D","line":300,"updated":"2013-11-05 17:16:47.000000000","message":"Log this exception","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"88f0870afc537e103c00c52ba572c66782460f24","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        try:"},{"line_number":298,"context_line":"            self.vcns.delete_pool(edge_id, pool_vseid)"},{"line_number":299,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":300,"context_line":"            pass"},{"line_number":301,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":302,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":303,"context_line":"                LOG.exception(_(\"Failed to delete pool\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fbs0%3D","line":300,"in_reply_to":"AAAATn%2F%2FdSs%3D","updated":"2013-11-11 08:56:23.000000000","message":"Done","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"},{"author":{"_account_id":6461,"name":"Kaiwei Fan","email":"fank@vmware.com","username":"kaiwei-fan"},"change_message_id":"887771349b8ec5cf4ea0d8c1d1e4346a76d30547","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        try:"},{"line_number":368,"context_line":"            self.vcns.delete_health_monitor(edge_id, monitor_vseid)"},{"line_number":369,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":370,"context_line":"            pass"},{"line_number":371,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":372,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":373,"context_line":"                LOG.exception(_(\"Failed to delete monitor\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FdSk%3D","line":370,"updated":"2013-11-05 17:16:47.000000000","message":"Log this exception.","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"88f0870afc537e103c00c52ba572c66782460f24","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        try:"},{"line_number":368,"context_line":"            self.vcns.delete_health_monitor(edge_id, monitor_vseid)"},{"line_number":369,"context_line":"        except vcns_exc.ResourceNotFound:"},{"line_number":370,"context_line":"            pass"},{"line_number":371,"context_line":"        except vcns_exc.VcnsApiException:"},{"line_number":372,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":373,"context_line":"                LOG.exception(_(\"Failed to delete monitor\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fbsw%3D","line":370,"in_reply_to":"AAAATn%2F%2FdSk%3D","updated":"2013-11-11 08:56:23.000000000","message":"Done","commit_id":"9e5aa67c3d9d577e317d4651517c74ca520caded"}],"neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f17190a63fe5088e1c746f63fc4ae4deb09645","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            keys.append((\u0027subnet_id\u0027, vip[\u0027vip\u0027][\u0027subnet_id\u0027]))"},{"line_number":536,"context_line":"            req \u003d self.new_list_request(\u0027vips\u0027)"},{"line_number":537,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.ext_api))"},{"line_number":538,"context_line":"            self.assertEqual(len(res[\u0027vips\u0027]), 1)"},{"line_number":539,"context_line":"            for k, v in keys:"},{"line_number":540,"context_line":"                self.assertEqual(res[\u0027vips\u0027][0][k], v)"},{"line_number":541,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FV%2Bo%3D","line":538,"updated":"2013-10-17 14:28:59.000000000","message":"Is it a bug not related to this patch?","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"5bffe1c174f38479c144a53634ef4cb6dcf931c1","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            keys.append((\u0027subnet_id\u0027, vip[\u0027vip\u0027][\u0027subnet_id\u0027]))"},{"line_number":536,"context_line":"            req \u003d self.new_list_request(\u0027vips\u0027)"},{"line_number":537,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.ext_api))"},{"line_number":538,"context_line":"            self.assertEqual(len(res[\u0027vips\u0027]), 1)"},{"line_number":539,"context_line":"            for k, v in keys:"},{"line_number":540,"context_line":"                self.assertEqual(res[\u0027vips\u0027][0][k], v)"},{"line_number":541,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FTis%3D","line":538,"in_reply_to":"AAAATH%2F%2FV%2Bo%3D","updated":"2013-10-21 05:39:25.000000000","message":"yes, it is minor bug not related to this patch","commit_id":"6da58ac3628e341b29d3cd8812a27e547bb96e87"}]}
