)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7c9eca1b5f48e26e493361c7e960854e48c8048b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Kolesnik \u003cmkolesni@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-30 17:03:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add extenstion callbacks support for networks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add callbacks for extention to the network resource so that interested"},{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_5b5162d7","line":7,"updated":"2015-06-30 19:12:56.000000000","message":"extension","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"3af5c5360264827e645b392f906a5692f35850d6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Kolesnik \u003cmkolesni@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-30 17:03:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add extenstion callbacks support for networks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add callbacks for extention to the network resource so that interested"},{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_b53504db","line":7,"in_reply_to":"ba3cc151_5b5162d7","updated":"2015-07-01 06:33:08.000000000","message":"Done","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7c9eca1b5f48e26e493361c7e960854e48c8048b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This will be utilized in a follow up commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I38528863e1145caf05fe3b2425511d1c5b5c0f93"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_bb58aefb","line":13,"updated":"2015-06-30 19:12:56.000000000","message":"Add blueprint quantum-qos-api to the commit message.","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"3af5c5360264827e645b392f906a5692f35850d6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This will be utilized in a follow up commit."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I38528863e1145caf05fe3b2425511d1c5b5c0f93"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_35581432","line":13,"in_reply_to":"ba3cc151_bb58aefb","updated":"2015-07-01 06:33:08.000000000","message":"Done","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"edd61c3c4c29d55328efb85af5fbdbd2559608be","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add extension callbacks support for networks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add callbacks for extention to the network resource so that interested"},{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Currently it will be done the same way port notifications are done -"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_7e2de3a6","line":9,"updated":"2015-07-02 06:43:59.000000000","message":"extension","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"edd61c3c4c29d55328efb85af5fbdbd2559608be","unresolved":false,"context_lines":[{"line_number":10,"context_line":"extensions can do custom logic when a network is created or updated."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Currently it will be done the same way port notifications are done -"},{"line_number":13,"context_line":"i.e. only in ML2 plugin. We can revisit this in a floow up patch if the"},{"line_number":14,"context_line":"whole notification logic should be moved somewhere else as this merits"},{"line_number":15,"context_line":"further discussion which is out of scope for a mere patch."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_3e1afb7d","line":13,"updated":"2015-07-02 06:43:59.000000000","message":"follow","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"}],"neutron/callbacks/resources.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"77171d83c96a8b8133585bf455bba8a3bd3240eb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"SECURITY_GROUP_RULE \u003d \u0027security_group_rule\u0027"},{"line_number":20,"context_line":"SUBNET \u003d \u0027subnet\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"VALID \u003d ("},{"line_number":23,"context_line":"    NETWORK,"},{"line_number":24,"context_line":"    PORT,"},{"line_number":25,"context_line":"    ROUTER,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_07cfaa29","line":22,"updated":"2015-07-02 07:52:25.000000000","message":"Please change this list name to something more meaningful","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"b8abff149eb0ff36bbfd39880d9edf787de5634e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"SECURITY_GROUP_RULE \u003d \u0027security_group_rule\u0027"},{"line_number":20,"context_line":"SUBNET \u003d \u0027subnet\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"VALID \u003d ("},{"line_number":23,"context_line":"    NETWORK,"},{"line_number":24,"context_line":"    PORT,"},{"line_number":25,"context_line":"    ROUTER,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_18a2a74b","line":22,"updated":"2015-07-02 09:04:45.000000000","message":"Trying another time...\nPlease update the name to something more meaningful VALID_RESOURCES?","commit_id":"3de65f57e30b73f5d7efc0344a102f1e40a6b40e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"f90a4d73ab83b61692e354185df06dc420d7c770","unresolved":false,"context_lines":[{"line_number":19,"context_line":"SECURITY_GROUP_RULE \u003d \u0027security_group_rule\u0027"},{"line_number":20,"context_line":"SUBNET \u003d \u0027subnet\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"VALID \u003d ("},{"line_number":23,"context_line":"    NETWORK,"},{"line_number":24,"context_line":"    PORT,"},{"line_number":25,"context_line":"    ROUTER,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_b80e1b39","line":22,"in_reply_to":"ba3cc151_18a2a74b","updated":"2015-07-02 09:08:15.000000000","message":"Actually this was named like this on purpose. Because of neutron\u0027s import rules it will always be referenced as resources.VALID.","commit_id":"3de65f57e30b73f5d7efc0344a102f1e40a6b40e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2a8342fce297e26935b8b5fa0f6403db7d636f16","unresolved":false,"context_lines":[{"line_number":19,"context_line":"SECURITY_GROUP_RULE \u003d \u0027security_group_rule\u0027"},{"line_number":20,"context_line":"SUBNET \u003d \u0027subnet\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"VALID \u003d ("},{"line_number":23,"context_line":"    NETWORK,"},{"line_number":24,"context_line":"    PORT,"},{"line_number":25,"context_line":"    ROUTER,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_656a2b83","line":22,"in_reply_to":"ba3cc151_b80e1b39","updated":"2015-07-02 09:41:48.000000000","message":"Got it, thanks","commit_id":"3de65f57e30b73f5d7efc0344a102f1e40a6b40e"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"c9a2029ada0a4f03eaff2b03a64c57d0e3504b58","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            postcommit_op \u003d getattr(self.mechanism_manager,"},{"line_number":573,"context_line":"                                    \u0027create_%s_postcommit\u0027 % resource)"},{"line_number":574,"context_line":"            for obj in objects:"},{"line_number":575,"context_line":"                if notification_resource is not None:"},{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_f415eb48","line":575,"updated":"2015-06-30 17:37:57.000000000","message":"i think this should be after the postcommit_op","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"3af5c5360264827e645b392f906a5692f35850d6","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            postcommit_op \u003d getattr(self.mechanism_manager,"},{"line_number":573,"context_line":"                                    \u0027create_%s_postcommit\u0027 % resource)"},{"line_number":574,"context_line":"            for obj in objects:"},{"line_number":575,"context_line":"                if notification_resource is not None:"},{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_5a162756","line":575,"in_reply_to":"ba3cc151_f415eb48","updated":"2015-07-01 06:33:08.000000000","message":"I\u0027m doing it the same as done for the port notifications","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"c9a2029ada0a4f03eaff2b03a64c57d0e3504b58","unresolved":false,"context_lines":[{"line_number":624,"context_line":"    def create_network(self, context, network):"},{"line_number":625,"context_line":"        result, mech_context \u003d self._create_network_with_retries(context,"},{"line_number":626,"context_line":"                                                                 network)"},{"line_number":627,"context_line":"        self._notify_registry("},{"line_number":628,"context_line":"            resources.NETWORK, events.AFTER_CREATE, context, result)"},{"line_number":629,"context_line":"        try:"},{"line_number":630,"context_line":"            self.mechanism_manager.create_network_postcommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_873b13d1","line":627,"updated":"2015-06-30 17:37:57.000000000","message":"why do you notify before the mechanism driver ? i think this also should be after postcommit is called","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"3af5c5360264827e645b392f906a5692f35850d6","unresolved":false,"context_lines":[{"line_number":624,"context_line":"    def create_network(self, context, network):"},{"line_number":625,"context_line":"        result, mech_context \u003d self._create_network_with_retries(context,"},{"line_number":626,"context_line":"                                                                 network)"},{"line_number":627,"context_line":"        self._notify_registry("},{"line_number":628,"context_line":"            resources.NETWORK, events.AFTER_CREATE, context, result)"},{"line_number":629,"context_line":"        try:"},{"line_number":630,"context_line":"            self.mechanism_manager.create_network_postcommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ba07331b","line":627,"in_reply_to":"ba3cc151_873b13d1","updated":"2015-07-01 06:33:08.000000000","message":"Again doing it the same way it is done for port notifications","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"c9a2029ada0a4f03eaff2b03a64c57d0e3504b58","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                original_network\u003doriginal_network)"},{"line_number":662,"context_line":"            self.mechanism_manager.update_network_precommit(mech_context)"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        # Notifications must be sent after the above transaction is complete"},{"line_number":665,"context_line":"        self._notify_registry("},{"line_number":666,"context_line":"            resources.NETWORK, events.AFTER_UPDATE, context, updated_network)"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_47baeb24","line":664,"updated":"2015-06-30 17:37:57.000000000","message":"here too","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9b2a71967cf354674f7bd2a2d53544ffb3f80316","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"},{"line_number":579,"context_line":"                                          result)"},{"line_number":580,"context_line":"                postcommit_op(obj[\u0027mech_context\u0027])"},{"line_number":581,"context_line":"            return objects"},{"line_number":582,"context_line":"        except ml2_exc.MechanismDriverError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_0dd4abba","line":579,"updated":"2015-07-02 08:41:39.000000000","message":"Doesn\u0027t this defeat the purpose of bulk?","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6a7b4fd781b940225e2688854b0dc057bc817cf1","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"},{"line_number":579,"context_line":"                                          result)"},{"line_number":580,"context_line":"                postcommit_op(obj[\u0027mech_context\u0027])"},{"line_number":581,"context_line":"            return objects"},{"line_number":582,"context_line":"        except ml2_exc.MechanismDriverError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_5806ef1d","line":579,"in_reply_to":"ba3cc151_0dd4abba","updated":"2015-07-02 08:46:44.000000000","message":"What do you mean? It\u0027s local, no notifications are going to the wire, it\u0027s just calling to event consumers in case they have anything to do with it.","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"376decc7e438b201084b3a33a194c6c256ce1301","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"},{"line_number":579,"context_line":"                                          result)"},{"line_number":580,"context_line":"                postcommit_op(obj[\u0027mech_context\u0027])"},{"line_number":581,"context_line":"            return objects"},{"line_number":582,"context_line":"        except ml2_exc.MechanismDriverError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_78d97321","line":579,"in_reply_to":"ba3cc151_5806ef1d","updated":"2015-07-02 08:59:20.000000000","message":"Moved this to \u0027create_network_bulk\u0027 similar to what\u0027s done it \u0027create_port_bulk\u0027","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"edd3fe04c874aaabaa8b4c640af752f3c82ed6d3","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    self._notify_registry(notification_resource,"},{"line_number":577,"context_line":"                                          events.AFTER_CREATE,"},{"line_number":578,"context_line":"                                          context,"},{"line_number":579,"context_line":"                                          result)"},{"line_number":580,"context_line":"                postcommit_op(obj[\u0027mech_context\u0027])"},{"line_number":581,"context_line":"            return objects"},{"line_number":582,"context_line":"        except ml2_exc.MechanismDriverError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_1844e718","line":579,"in_reply_to":"ba3cc151_5806ef1d","updated":"2015-07-02 09:04:44.000000000","message":"That\u0027s OK, I guess.Just trying to wrap my brain around this. What if the consumers want to send RPC or backend REST calls?\n\nIsn\u0027t the context and result for the bulk and not for the individual requests? Should we be notifying with the obj.mech_context and obj.result here?","commit_id":"f589782cd4d99d17298609c654fa7c1dad78c8fa"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c8f41824c7434dcd91a158da827d26343bb05136","unresolved":false,"context_lines":[{"line_number":1575,"context_line":"                mock.patch.object(manager.NeutronManager,"},{"line_number":1576,"context_line":"                                  \u0027get_service_plugins\u0027,"},{"line_number":1577,"context_line":"                                  return_value\u003d{\u0027L3_ROUTER_NAT\u0027: l3plugin}):"},{"line_number":1578,"context_line":"            plugin \u003d self._create_plugin_for_create_update_network(mock.Mock())"},{"line_number":1579,"context_line":"            # deleting the port will call registry.notify, which will"},{"line_number":1580,"context_line":"            # run the transaction balancing function defined in this test"},{"line_number":1581,"context_line":"            plugin.delete_port(self.context, \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_e4d9c784","line":1578,"updated":"2015-06-30 14:37:43.000000000","message":"This class doesn\u0027t have _create_plugin_for_create_update_network(). Why did you change it?","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"3af5c5360264827e645b392f906a5692f35850d6","unresolved":false,"context_lines":[{"line_number":1575,"context_line":"                mock.patch.object(manager.NeutronManager,"},{"line_number":1576,"context_line":"                                  \u0027get_service_plugins\u0027,"},{"line_number":1577,"context_line":"                                  return_value\u003d{\u0027L3_ROUTER_NAT\u0027: l3plugin}):"},{"line_number":1578,"context_line":"            plugin \u003d self._create_plugin_for_create_update_network(mock.Mock())"},{"line_number":1579,"context_line":"            # deleting the port will call registry.notify, which will"},{"line_number":1580,"context_line":"            # run the transaction balancing function defined in this test"},{"line_number":1581,"context_line":"            plugin.delete_port(self.context, \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_550d9835","line":1578,"in_reply_to":"ba3cc151_e4d9c784","updated":"2015-07-01 06:33:08.000000000","message":"This was crappy automatic rename, i changed it back","commit_id":"0eec200343dad05a1476e55d7eca4a1bd4e4cfde"}]}
