)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1da196fa5f8ce38c39e3742b4f9398fc4c21a718","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Security group call back need cascading delete the related rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently we only pass the group id to event callback when deleting, but"},{"line_number":10,"context_line":"this is not sufficient because some rules added into SG still exists and"},{"line_number":11,"context_line":"need be cascading deleted, like in DB.  Both AFTER_DELETE and"},{"line_number":12,"context_line":"PRECOMMIT_DELETE events in SG deleting have the similar problem."},{"line_number":13,"context_line":"This patch adds the rules into SG when send delete event for SG."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da0c15f0_c9bb860d","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":22},"updated":"2016-03-25 07:45:33.000000000","message":"not sufficient for what?\n\nodl doesn\u0027t maintain which rule belongs to which sg?","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"7d95182a3f2b4be0f8f916924c55044b0cec0f94","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Security group call back need cascading delete the related rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently we only pass the group id to event callback when deleting, but"},{"line_number":10,"context_line":"this is not sufficient because some rules added into SG still exists and"},{"line_number":11,"context_line":"need be cascading deleted, like in DB.  Both AFTER_DELETE and"},{"line_number":12,"context_line":"PRECOMMIT_DELETE events in SG deleting have the similar problem."},{"line_number":13,"context_line":"This patch adds the rules into SG when send delete event for SG."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da0c15f0_7e3c80e2","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":22},"in_reply_to":"da0c15f0_c9bb860d","updated":"2016-03-27 03:18:22.000000000","message":"no, odl don\u0027t maintain the relationship. its northbound works like a transparent layer. @Isaku may explain it more accurately.\n\nwill update the msg.","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9fca23a671c4f4a3222801985169e814ce449b67","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Manjeet Singh Bhatia \u003cmanjeet.s.bhatia@intel.com\u003e"},{"line_number":18,"context_line":"Change-Id: If66b78243c55aefa57cc4975a6f8ea4d05dc6afa"},{"line_number":19,"context_line":"Close-Bug: #1557976"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa7ab95a_4972d5ae","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"updated":"2016-08-26 18:51:53.000000000","message":"Note: the launchpad integration fails because this should be \"Closes-Bug\".","commit_id":"178bff23f19f722a7123d2c220f12876afc79dda"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"ee8f6fcb971408eb10b3f89f11ab002301c87a07","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Manjeet Singh Bhatia \u003cmanjeet.s.bhatia@intel.com\u003e"},{"line_number":18,"context_line":"Change-Id: If66b78243c55aefa57cc4975a6f8ea4d05dc6afa"},{"line_number":19,"context_line":"Close-Bug: #1557976"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa7ab95a_0908cd90","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":9},"in_reply_to":"fa7ab95a_4972d5ae","updated":"2016-08-26 19:01:37.000000000","message":"thanks Henry, will update launchpad manually.","commit_id":"178bff23f19f722a7123d2c220f12876afc79dda"}],"neutron/db/securitygroups_db.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"602dd72a13f6c9d10ed46f1a5048bf377be74cd0","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                              **kwargs)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":276,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":277,"context_line":"                                  events.PRECOMMIT_DELETE,"},{"line_number":278,"context_line":"                                  exc_cls\u003dext_sg.SecurityGroupInUse, id\u003did,"},{"line_number":279,"context_line":"                                  **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_56492dcf","line":276,"updated":"2016-03-18 15:46:01.000000000","message":"Before line 276 within db transaction,\nwe can get a list of rules to be deleted.","commit_id":"2330f9d14c8dc7cdcc0d9d1a78a60c2a751cfa44"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"96c74d881d4b06bb206755d72d54a9ff0f505922","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                              **kwargs)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":276,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":277,"context_line":"                                  events.PRECOMMIT_DELETE,"},{"line_number":278,"context_line":"                                  exc_cls\u003dext_sg.SecurityGroupInUse, id\u003did,"},{"line_number":279,"context_line":"                                  **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_d7a053a8","line":276,"in_reply_to":"1af94dfe_56492dcf","updated":"2016-03-21 03:33:57.000000000","message":"Done","commit_id":"2330f9d14c8dc7cdcc0d9d1a78a60c2a751cfa44"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"f5c9b9013d4bee56bedfbc6e90d660744e684b69","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                                  **kwargs)"},{"line_number":280,"context_line":"            context.session.delete(sg)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        kwargs[\u0027security_group\u0027] \u003d self._make_security_group_dict(sg)"},{"line_number":283,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":284,"context_line":"                        **kwargs)"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_4ddb724f","line":282,"updated":"2016-03-18 09:55:59.000000000","message":"sg is getting deleted in L280.. How about putting this before that?","commit_id":"2330f9d14c8dc7cdcc0d9d1a78a60c2a751cfa44"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"96c74d881d4b06bb206755d72d54a9ff0f505922","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                                  **kwargs)"},{"line_number":280,"context_line":"            context.session.delete(sg)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        kwargs[\u0027security_group\u0027] \u003d self._make_security_group_dict(sg)"},{"line_number":283,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":284,"context_line":"                        **kwargs)"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_77c5075a","line":282,"in_reply_to":"1af94dfe_4ddb724f","updated":"2016-03-21 03:33:57.000000000","message":"Done","commit_id":"2330f9d14c8dc7cdcc0d9d1a78a60c2a751cfa44"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"fc5b481b1118ee781ade6630cbde9e5fc36efd23","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        sg_dict \u003d self._make_security_group_dict(sg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        kwargs \u003d {"},{"line_number":270,"context_line":"            \u0027context\u0027: context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_c40de638","line":267,"updated":"2016-03-22 15:31:30.000000000","message":"notification of rule deletion is only passed with id of rules.\nFor consistency, only ids of rules should be passed.","commit_id":"f702ba7dba04c65cc539bdafce88d9046b966147"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"5a55fa1fb629d6132bc678b8185b4fb202f4cd59","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        sg_dict \u003d self._make_security_group_dict(sg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        kwargs \u003d {"},{"line_number":270,"context_line":"            \u0027context\u0027: context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_e73fe8b1","line":267,"in_reply_to":"fa0719c6_223bd99d","updated":"2016-03-24 06:47:24.000000000","message":"all deletion event is passed only id.\nThere is no point to pass its contents, but ids of rules.","commit_id":"f702ba7dba04c65cc539bdafce88d9046b966147"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"82308c768a54474bf70df98631026a2b81eeb18a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        sg_dict \u003d self._make_security_group_dict(sg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        kwargs \u003d {"},{"line_number":270,"context_line":"            \u0027context\u0027: context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_a791bb54","line":267,"in_reply_to":"fa0719c6_c40de638","updated":"2016-03-23 01:56:44.000000000","message":"Done","commit_id":"f702ba7dba04c65cc539bdafce88d9046b966147"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"05e292e1fb2296ea44a62bb5f3da00566bb683ca","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        sg_dict \u003d self._make_security_group_dict(sg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        kwargs \u003d {"},{"line_number":270,"context_line":"            \u0027context\u0027: context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_223bd99d","line":267,"in_reply_to":"fa0719c6_c40de638","updated":"2016-03-23 02:32:28.000000000","message":"but this is not a rule delete notification, it is a sg delete notification with rules info. And in patch [1] we will get the rules \u0027id\u0027 from this sg_dict, rather than from \u0027security_group_rule_id\u0027.\nSo I think there should be no consistency we should follow here.\n\n[1] https://review.openstack.org/#/c/294451/4/networking_odl/common/callback.py","commit_id":"f702ba7dba04c65cc539bdafce88d9046b966147"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"29ddee5ee891a7f4619f29ba21d203d51705c4fc","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        sg_dict \u003d self._make_security_group_dict(sg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        kwargs \u003d {"},{"line_number":270,"context_line":"            \u0027context\u0027: context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_87ca6c19","line":267,"in_reply_to":"fa0719c6_e73fe8b1","updated":"2016-03-24 07:13:03.000000000","message":"ok, I will pass the id only.","commit_id":"f702ba7dba04c65cc539bdafce88d9046b966147"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1da196fa5f8ce38c39e3742b4f9398fc4c21a718","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        kwargs \u003d {"},{"line_number":268,"context_line":"            \u0027context\u0027: context,"},{"line_number":269,"context_line":"            \u0027security_group_id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_2974c29a","line":266,"updated":"2016-03-25 07:45:33.000000000","message":"unrelated change","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"60ab6925d8d29cbf962ca6a688ec69bab1360ce9","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027 and not context.is_admin:"},{"line_number":265,"context_line":"            raise ext_sg.SecurityGroupCannotRemoveDefault()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        kwargs \u003d {"},{"line_number":268,"context_line":"            \u0027context\u0027: context,"},{"line_number":269,"context_line":"            \u0027security_group_id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_bedc58e5","line":266,"in_reply_to":"da0c15f0_2974c29a","updated":"2016-03-27 03:11:15.000000000","message":"Done","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1da196fa5f8ce38c39e3742b4f9398fc4c21a718","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":277,"context_line":"            sg_dict \u003d {}"},{"line_number":278,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":279,"context_line":"            sg_dict[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":280,"context_line":"            kwargs[\u0027security_group\u0027] \u003d sg_dict"},{"line_number":281,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_69dd1a42","line":278,"updated":"2016-03-25 07:45:33.000000000","message":"why don\u0027t you do the same for BEFORE_DELETE?\n(just a question)","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"60ab6925d8d29cbf962ca6a688ec69bab1360ce9","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":277,"context_line":"            sg_dict \u003d {}"},{"line_number":278,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":279,"context_line":"            sg_dict[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":280,"context_line":"            kwargs[\u0027security_group\u0027] \u003d sg_dict"},{"line_number":281,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_1ecbc41f","line":278,"in_reply_to":"da0c15f0_69dd1a42","updated":"2016-03-27 03:11:15.000000000","message":"BEFORE_DELETE pass the object \u0027sg\u0027 with kwargs, I want to modify it the break some dependency code.\nI want to make the smallest change. and this patch is just for precommit and after event.","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1da196fa5f8ce38c39e3742b4f9398fc4c21a718","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            sg_dict \u003d {}"},{"line_number":278,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":279,"context_line":"            sg_dict[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":280,"context_line":"            kwargs[\u0027security_group\u0027] \u003d sg_dict"},{"line_number":281,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":282,"context_line":"                                  events.PRECOMMIT_DELETE,"},{"line_number":283,"context_line":"                                  exc_cls\u003dext_sg.SecurityGroupInUse, id\u003did,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_69b4faf1","line":280,"range":{"start_line":280,"start_character":20,"end_line":280,"end_character":34},"updated":"2016-03-25 07:45:33.000000000","message":"why to keep this \"security_group\" level?","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"60ab6925d8d29cbf962ca6a688ec69bab1360ce9","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            sg_dict \u003d {}"},{"line_number":278,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":279,"context_line":"            sg_dict[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":280,"context_line":"            kwargs[\u0027security_group\u0027] \u003d sg_dict"},{"line_number":281,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":282,"context_line":"                                  events.PRECOMMIT_DELETE,"},{"line_number":283,"context_line":"                                  exc_cls\u003dext_sg.SecurityGroupInUse, id\u003did,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_5ed53cb7","line":280,"range":{"start_line":280,"start_character":20,"end_line":280,"end_character":34},"in_reply_to":"da0c15f0_69b4faf1","updated":"2016-03-27 03:11:15.000000000","message":"I think the receiver will have a unified level format.","commit_id":"d63f3d40c96333f309d48c8e55359c799b2c1533"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"46f1c94c11004ab00528765ec71aee2a74ba07b8","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            sg_dict \u003d {}"},{"line_number":277,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":278,"context_line":"            sg_dict[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":279,"context_line":"            kwargs[\u0027security_group\u0027] \u003d sg_dict"},{"line_number":280,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":281,"context_line":"                                  events.PRECOMMIT_DELETE,"},{"line_number":282,"context_line":"                                  exc_cls\u003dext_sg.SecurityGroupInUse, id\u003did,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_7fa7a04f","line":279,"updated":"2016-03-28 18:03:36.000000000","message":"kwargs[\u0027security_group_rule_ids\u0027] \u003d [...]\ndoesn\u0027t work?\nWhat\u0027s the point to have extra nest?","commit_id":"77be4c3f6741f63d0fa5f355acbb8fb215d9dc60"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"56784ca7d1a0788cd4dae1505f5989856ba7b9cc","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                                  **kwargs)"},{"line_number":281,"context_line":"            context.session.delete(sg)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        kwargs.pop(\u0027security_group\u0027)"},{"line_number":284,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":285,"context_line":"                        **kwargs)"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_0bdfa1d9","side":"PARENT","line":283,"updated":"2016-08-17 23:15:39.000000000","message":"is this intentional?","commit_id":"6087f1d12179f7f9bf1969fe94f96d638dfb99ce"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"8862229d3756e4cc5497ab2f1ff6033f1d19a9c2","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                                  **kwargs)"},{"line_number":281,"context_line":"            context.session.delete(sg)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        kwargs.pop(\u0027security_group\u0027)"},{"line_number":284,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":285,"context_line":"                        **kwargs)"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_f1db127a","side":"PARENT","line":283,"in_reply_to":"3ac371cc_0bdfa1d9","updated":"2016-08-18 01:06:30.000000000","message":"yes, I think its intentional, we want to send security group data, i\u0027ll test more than clarify","commit_id":"6087f1d12179f7f9bf1969fe94f96d638dfb99ce"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"4e039a877e05c76b9bdb62de9426109509c120dc","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                                  **kwargs)"},{"line_number":281,"context_line":"            context.session.delete(sg)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        kwargs.pop(\u0027security_group\u0027)"},{"line_number":284,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":285,"context_line":"                        **kwargs)"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_a5577e56","side":"PARENT","line":283,"in_reply_to":"3ac371cc_f1db127a","updated":"2016-08-24 00:32:36.000000000","message":"this won\u0027t affect networking-odl, it is no harm to have extra info, but to keep it consistent with other backends ill add it back.","commit_id":"6087f1d12179f7f9bf1969fe94f96d638dfb99ce"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c81f2f417614dee620ab9599716dc17ae63654f0","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                              **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":277,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":278,"context_line":"            kwargs[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":279,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":280,"context_line":"                                  events.PRECOMMIT_DELETE,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_172bbfec","line":277,"updated":"2016-08-25 09:55:47.000000000","message":"consider: ensure that security_group_rule_ids are consistent with the deleted rules\nor something along those lines","commit_id":"dbdd6bd2fdd08c302d9c3f8931ada5f180b9ae59"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"b0890151da406d2864214cf9a822b5dee527e39f","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                              **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":277,"context_line":"            # use security_group_rule_ids to consist with rules delete"},{"line_number":278,"context_line":"            kwargs[\u0027security_group_rule_ids\u0027] \u003d [r[\u0027id\u0027] for r in sg.rules]"},{"line_number":279,"context_line":"            self._registry_notify(resources.SECURITY_GROUP,"},{"line_number":280,"context_line":"                                  events.PRECOMMIT_DELETE,"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa7ab95a_d37408ff","line":277,"in_reply_to":"1ac06dbe_172bbfec","updated":"2016-08-26 04:22:53.000000000","message":"done","commit_id":"dbdd6bd2fdd08c302d9c3f8931ada5f180b9ae59"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c81f2f417614dee620ab9599716dc17ae63654f0","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            context.session.delete(sg)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        kwargs.pop(\u0027security_group\u0027)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":288,"context_line":"                        **kwargs)"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_97ca0f4e","line":286,"updated":"2016-08-25 09:55:47.000000000","message":"can you delete this change","commit_id":"dbdd6bd2fdd08c302d9c3f8931ada5f180b9ae59"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"b0890151da406d2864214cf9a822b5dee527e39f","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            context.session.delete(sg)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        kwargs.pop(\u0027security_group\u0027)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        registry.notify(resources.SECURITY_GROUP, events.AFTER_DELETE, self,"},{"line_number":288,"context_line":"                        **kwargs)"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fa7ab95a_f35f4c73","line":286,"in_reply_to":"1ac06dbe_97ca0f4e","updated":"2016-08-26 04:22:53.000000000","message":"done","commit_id":"dbdd6bd2fdd08c302d9c3f8931ada5f180b9ae59"}],"neutron/tests/unit/db/test_securitygroups_db.py":[{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"20af046a9e5d660154a2ea6c8e5f11e5239001d7","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        sg_dict \u003d self.mixin.create_security_group(self.ctx, FAKE_SECGROUP)"},{"line_number":219,"context_line":"        with mock.patch.object(registry, \"notify\") as mock_notify:"},{"line_number":220,"context_line":"            self.mixin.delete_security_group(self.ctx, sg_dict[\u0027id\u0027])"},{"line_number":221,"context_line":"            mock_notify.assert_has_calls([mock.call(\u0027security_group\u0027,"},{"line_number":222,"context_line":"                \u0027precommit_delete\u0027, mock.ANY, context\u003dmock.ANY,"},{"line_number":223,"context_line":"                security_group\u003dmock.ANY, security_group_id\u003dsg_dict[\u0027id\u0027],"},{"line_number":224,"context_line":"                security_group_rule_ids\u003d[mock.ANY, mock.ANY]),"},{"line_number":225,"context_line":"                mock.call(\u0027security_group\u0027,"},{"line_number":226,"context_line":"                \u0027after_delete\u0027, mock.ANY, context\u003dmock.ANY,"},{"line_number":227,"context_line":"                security_group\u003dmock.ANY, security_group_id\u003dsg_dict[\u0027id\u0027],"},{"line_number":228,"context_line":"                security_group_rule_ids\u003d[mock.ANY, mock.ANY])])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_security_group_rule_precommit_create_event_fail(self):"},{"line_number":231,"context_line":"        registry.subscribe(fake_callback, resources.SECURITY_GROUP_RULE,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_c2dc5448","line":228,"range":{"start_line":221,"start_character":42,"end_line":228,"end_character":61},"updated":"2016-07-07 01:04:37.000000000","message":"nit: Can we add some indentation here to help distinguish the two \u0027mock.call\u0027s. This is a bit unreadable now.","commit_id":"7cda18e91ddc28441a6a414028a80dbabc0ecb30"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"cc061d93ae71cc9424395ca876ed234b23ac67b8","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        sg_dict \u003d self.mixin.create_security_group(self.ctx, FAKE_SECGROUP)"},{"line_number":219,"context_line":"        with mock.patch.object(registry, \"notify\") as mock_notify:"},{"line_number":220,"context_line":"            self.mixin.delete_security_group(self.ctx, sg_dict[\u0027id\u0027])"},{"line_number":221,"context_line":"            mock_notify.assert_has_calls([mock.call(\u0027security_group\u0027,"},{"line_number":222,"context_line":"                \u0027precommit_delete\u0027, mock.ANY, context\u003dmock.ANY,"},{"line_number":223,"context_line":"                security_group\u003dmock.ANY, security_group_id\u003dsg_dict[\u0027id\u0027],"},{"line_number":224,"context_line":"                security_group_rule_ids\u003d[mock.ANY, mock.ANY]),"},{"line_number":225,"context_line":"                mock.call(\u0027security_group\u0027,"},{"line_number":226,"context_line":"                \u0027after_delete\u0027, mock.ANY, context\u003dmock.ANY,"},{"line_number":227,"context_line":"                security_group\u003dmock.ANY, security_group_id\u003dsg_dict[\u0027id\u0027],"},{"line_number":228,"context_line":"                security_group_rule_ids\u003d[mock.ANY, mock.ANY])])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_security_group_rule_precommit_create_event_fail(self):"},{"line_number":231,"context_line":"        registry.subscribe(fake_callback, resources.SECURITY_GROUP_RULE,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_aef04afe","line":228,"range":{"start_line":221,"start_character":42,"end_line":228,"end_character":61},"in_reply_to":"1aa78d24_c2dc5448","updated":"2016-07-11 22:48:25.000000000","message":"done","commit_id":"7cda18e91ddc28441a6a414028a80dbabc0ecb30"}]}
