)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9911,"name":"Wei Wang","email":"wangwei@unitedstack.com","username":"DamonWang"},"change_message_id":"e81b54e4789faf4011921ba9428a7499584b9f8f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The extention driver is interceptered by driver manager, but it will cover the"},{"line_number":10,"context_line":"errors in extension driver and it will also continue the extension processs"},{"line_number":11,"context_line":"even if one extension driver got a exception."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I20a249c47b58292125476bc44b2372ca959509e3"},{"line_number":14,"context_line":"Closes-Bug: #1468990"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_6bb99614","line":12,"updated":"2015-07-15 13:41:19.000000000","message":"I think the commit message should contain more why cover that exception is not good.","commit_id":"102567aca7d0ad2535d9a994eeee04869adf8fa8"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"fae722ddd0fed000c5af0f83aac178a704ecd706","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The extention driver is interceptered by driver manager, but it will cover the"},{"line_number":10,"context_line":"errors in extension driver and it will also continue the extension processs"},{"line_number":11,"context_line":"even if one extension driver got a exception."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I20a249c47b58292125476bc44b2372ca959509e3"},{"line_number":14,"context_line":"Closes-Bug: #1468990"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_5040f533","line":12,"in_reply_to":"9a41bdd9_6bb99614","updated":"2015-07-15 15:41:50.000000000","message":"+1","commit_id":"102567aca7d0ad2535d9a994eeee04869adf8fa8"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"a8ba93d11aaa0bee6013e5df72c1c28b223e9170","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The extention driver is interceptered by driver manager, but it will cover the"},{"line_number":10,"context_line":"errors in extension driver and it will also continue the extension processs"},{"line_number":11,"context_line":"even if one extension driver got a exception."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I20a249c47b58292125476bc44b2372ca959509e3"},{"line_number":14,"context_line":"Closes-Bug: #1468990"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_87bcefbb","line":12,"in_reply_to":"9a41bdd9_6bb99614","updated":"2015-07-16 00:49:29.000000000","message":"Thanks all.\n\nThe most important is that currently if there is error happened in some extension driver,(like type error, or exception it found), the extension process in the manager will not be broken. The next extension driver will continue the process, even if the preceding extension driver return a wrong result, or even no result. \n\nI think it would be meaningless to continue the extension process if error found.\n\nI will add more words.","commit_id":"102567aca7d0ad2535d9a994eeee04869adf8fa8"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"701945a96eed40d1064515376487041ffd9bee15","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yalei Wang \u003cyalei.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-16 08:45:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pass the extention driver exception to plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The extention driver is interceptered by driver manager currently. It will"},{"line_number":10,"context_line":"cover the errors/exceptions happened in extension driver. The extension"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_c3498a32","line":7,"updated":"2015-07-16 01:36:09.000000000","message":"nit: extention -\u003e extension","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"123e3cbfc5c167b08983271d2f1d4ab7fb133b75","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yalei Wang \u003cyalei.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-16 08:45:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pass the extention driver exception to plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The extention driver is interceptered by driver manager currently. It will"},{"line_number":10,"context_line":"cover the errors/exceptions happened in extension driver. The extension"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_03b8d273","line":7,"in_reply_to":"9a41bdd9_c3498a32","updated":"2015-07-16 01:48:46.000000000","message":"Done","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"701945a96eed40d1064515376487041ffd9bee15","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pass the extention driver exception to plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The extention driver is interceptered by driver manager currently. It will"},{"line_number":10,"context_line":"cover the errors/exceptions happened in extension driver. The extension"},{"line_number":11,"context_line":"processs will continue even if preceding extension driver get a wrong/useless"},{"line_number":12,"context_line":"extended result, or even no result."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_03e9b2b6","line":9,"updated":"2015-07-16 01:36:09.000000000","message":"nit: extention -\u003e extension\n\n\ninterceptered -\u003e intercepted","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"123e3cbfc5c167b08983271d2f1d4ab7fb133b75","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pass the extention driver exception to plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The extention driver is interceptered by driver manager currently. It will"},{"line_number":10,"context_line":"cover the errors/exceptions happened in extension driver. The extension"},{"line_number":11,"context_line":"processs will continue even if preceding extension driver get a wrong/useless"},{"line_number":12,"context_line":"extended result, or even no result."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_c3ae6a2d","line":9,"in_reply_to":"9a41bdd9_03e9b2b6","updated":"2015-07-16 01:48:46.000000000","message":"Thanks!","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"}],"neutron/plugins/ml2/common/exceptions.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ExtensionDriverError(exceptions.NeutronException):"},{"line_number":27,"context_line":"    \"\"\"Extension driver call failed.\"\"\""},{"line_number":28,"context_line":"    message \u003d _(\"extension %(driver)s failed.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_2486c165","line":28,"updated":"2015-08-04 21:33:30.000000000","message":"Should probably start from upper-case E.","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ExtensionDriverError(exceptions.NeutronException):"},{"line_number":27,"context_line":"    \"\"\"Extension driver call failed.\"\"\""},{"line_number":28,"context_line":"    message \u003d _(\"extension %(driver)s failed.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_433c152f","line":28,"in_reply_to":"1a4dcd0f_2486c165","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b2b23ccc974342151a36e2633ea8334427d3e29e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    message \u003d _(\"%(method)s failed.\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ExtensionDriverError(exceptions.NeutronException):"},{"line_number":27,"context_line":"    \"\"\"Extension driver call failed.\"\"\""},{"line_number":28,"context_line":"    message \u003d _(\"Extension %(driver)s failed.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_638e9f7a","line":26,"updated":"2015-08-06 13:43:44.000000000","message":"I suspect that you may want to inherit from e.g. InvalidInput. Then your return code would be in 4xx range and not 5xx, which seems more correct to me.","commit_id":"7d158ab98e1e43172946e8700257540fc53fce25"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"2a2dc150693e1fbf5e8dbbfaf8128ee0c481473b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    message \u003d _(\"%(method)s failed.\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ExtensionDriverError(exceptions.NeutronException):"},{"line_number":27,"context_line":"    \"\"\"Extension driver call failed.\"\"\""},{"line_number":28,"context_line":"    message \u003d _(\"Extension %(driver)s failed.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_01e1b72c","line":26,"in_reply_to":"1a4dcd0f_638e9f7a","updated":"2015-08-07 01:16:35.000000000","message":"Done","commit_id":"7d158ab98e1e43172946e8700257540fc53fce25"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"701945a96eed40d1064515376487041ffd9bee15","unresolved":false,"context_lines":[{"line_number":763,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":764,"context_line":"            try:"},{"line_number":765,"context_line":"                getattr(driver.obj, method_name)(plugin_context, data, result)"},{"line_number":766,"context_line":"            except Exception as e:"},{"line_number":767,"context_line":"                LOG.exception("},{"line_number":768,"context_line":"                    _LE(\"Extension driver \u0027%(name)s\u0027 failed in %(method)s\"),"},{"line_number":769,"context_line":"                    {\u0027name\u0027: driver.name, \u0027method\u0027: method_name}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_83a702a6","line":766,"updated":"2015-07-16 01:36:09.000000000","message":"you could use with excutils.save_and_reraise_exception() to reraise the exception.\n\n\nexcept Exception:\n    with excutils.save_and_reraise_exception():\n         LOG.exception(_LE(\"Extension driver \u0027%(name)s\u0027 failed in % (method)s\"), {\u0027name\u0027: driver.name, \u0027method\u0027: method_name})","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"123e3cbfc5c167b08983271d2f1d4ab7fb133b75","unresolved":false,"context_lines":[{"line_number":763,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":764,"context_line":"            try:"},{"line_number":765,"context_line":"                getattr(driver.obj, method_name)(plugin_context, data, result)"},{"line_number":766,"context_line":"            except Exception as e:"},{"line_number":767,"context_line":"                LOG.exception("},{"line_number":768,"context_line":"                    _LE(\"Extension driver \u0027%(name)s\u0027 failed in %(method)s\"),"},{"line_number":769,"context_line":"                    {\u0027name\u0027: driver.name, \u0027method\u0027: method_name}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_23639643","line":766,"in_reply_to":"9a41bdd9_83a702a6","updated":"2015-07-16 01:48:46.000000000","message":"Thanks for your kindly response! almost the same with Banikazemi!","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"d7970a29ba579c673846a13c41ff77cfccbafd80","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                    _LE(\"Extension driver \u0027%(name)s\u0027 failed in %(method)s\"),"},{"line_number":769,"context_line":"                    {\u0027name\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":770,"context_line":"                )"},{"line_number":771,"context_line":"                raise e"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def process_create_network(self, plugin_context, data, result):"},{"line_number":774,"context_line":"        \"\"\"Notify all extension drivers during network creation.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_636bde85","line":771,"updated":"2015-07-16 01:28:07.000000000","message":"Using a pattern similat to that used in the rest of the code will be helpful. Have a look at here for example: https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L560\n\n        except Exception:\n            with excutils.save_and_reraise_exception():\n                LOG.exception(_LE(\"....))","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"95eacf3a983444f409b4053b83b15deba48d582e","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                    _LE(\"Extension driver \u0027%(name)s\u0027 failed in %(method)s\"),"},{"line_number":769,"context_line":"                    {\u0027name\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":770,"context_line":"                )"},{"line_number":771,"context_line":"                raise e"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def process_create_network(self, plugin_context, data, result):"},{"line_number":774,"context_line":"        \"\"\"Notify all extension drivers during network creation.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_831aa2c4","line":771,"in_reply_to":"9a41bdd9_636bde85","updated":"2015-07-16 01:39:18.000000000","message":"Oops you beat me to this comment :)","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"123e3cbfc5c167b08983271d2f1d4ab7fb133b75","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                    _LE(\"Extension driver \u0027%(name)s\u0027 failed in %(method)s\"),"},{"line_number":769,"context_line":"                    {\u0027name\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":770,"context_line":"                )"},{"line_number":771,"context_line":"                raise e"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def process_create_network(self, plugin_context, data, result):"},{"line_number":774,"context_line":"        \"\"\"Notify all extension drivers during network creation.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_23071683","line":771,"in_reply_to":"9a41bdd9_636bde85","updated":"2015-07-16 01:48:46.000000000","message":"Thanks for your reminder, it\u0027s better, I will update the patch.","commit_id":"984d8e4145bd3451bf9bd562780a97088c07b926"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8773dde01dc1dbeee21bdd6984db2b58ff7ee073","unresolved":false,"context_lines":[{"line_number":759,"context_line":"                     {\u0027alias\u0027: alias, \u0027drv\u0027: driver.name})"},{"line_number":760,"context_line":"        return exts"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def _delete_port_if_creat_failed(self, plugin, context, method_name,"},{"line_number":763,"context_line":"                                     result):"},{"line_number":764,"context_line":"        if \u0027create\u0027 in method_name:"},{"line_number":765,"context_line":"            plugin.delete_port(context, result[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_bf491a33","line":762,"updated":"2015-07-28 18:56:08.000000000","message":"creat -\u003e create","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"8c8d5c6ef60b768b8a5db7faaba0608904cebdc0","unresolved":false,"context_lines":[{"line_number":759,"context_line":"                     {\u0027alias\u0027: alias, \u0027drv\u0027: driver.name})"},{"line_number":760,"context_line":"        return exts"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def _delete_port_if_creat_failed(self, plugin, context, method_name,"},{"line_number":763,"context_line":"                                     result):"},{"line_number":764,"context_line":"        if \u0027create\u0027 in method_name:"},{"line_number":765,"context_line":"            plugin.delete_port(context, result[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_c358485a","line":762,"in_reply_to":"3a50d1a3_bf491a33","updated":"2015-07-31 08:25:37.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":775,"context_line":"                    LOG.info("},{"line_number":776,"context_line":"                        _LI(\"Extension driver \u0027%(nm)s\u0027 failed in %(method)s\"),"},{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_c4f35d09","line":777,"updated":"2015-08-04 21:33:30.000000000","message":"can we avoid abbreviating like that? Let\u0027s make it name, not nm.","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":775,"context_line":"                    LOG.info("},{"line_number":776,"context_line":"                        _LI(\"Extension driver \u0027%(nm)s\u0027 failed in %(method)s\"),"},{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_0cb2b594","line":777,"in_reply_to":"1a4dcd0f_c4f35d09","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"},{"line_number":781,"context_line":"                            method_name, result)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def process_create_network(self, plugin, plugin_context, data, result):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_24d48145","line":780,"updated":"2015-08-04 21:33:30.000000000","message":"Aren\u0027t we under transaction here and should expect it to roll back automatically? And btw who said it\u0027s for ports only?","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8773dde01dc1dbeee21bdd6984db2b58ff7ee073","unresolved":false,"context_lines":[{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"},{"line_number":781,"context_line":"                            method_name, result)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def process_create_network(self, plugin, plugin_context, data, result):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_1f5feee5","line":780,"updated":"2015-07-28 18:56:08.000000000","message":"ditto","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"},{"line_number":781,"context_line":"                            method_name, result)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def process_create_network(self, plugin, plugin_context, data, result):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_59588232","line":780,"in_reply_to":"1a4dcd0f_24d48145","updated":"2015-08-05 09:34:59.000000000","message":"yes, I understand wrong here, thanks!","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"8c8d5c6ef60b768b8a5db7faaba0608904cebdc0","unresolved":false,"context_lines":[{"line_number":777,"context_line":"                        {\u0027nm\u0027: driver.name, \u0027method\u0027: method_name}"},{"line_number":778,"context_line":"                    )"},{"line_number":779,"context_line":"                    # just roll back the create error here"},{"line_number":780,"context_line":"                    self._delete_port_if_creat_failed(plugin, plugin_context,"},{"line_number":781,"context_line":"                            method_name, result)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def process_create_network(self, plugin, plugin_context, data, result):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_6357f426","line":780,"in_reply_to":"3a50d1a3_1f5feee5","updated":"2015-07-31 08:25:37.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                rollback \u003d result"},{"line_number":817,"context_line":"                getattr(driver.obj, mname)(session, base_model, result)"},{"line_number":818,"context_line":"            except Exception:"},{"line_number":819,"context_line":"                LOG.error(_LE(\"Error when extend network dict for driver \""},{"line_number":820,"context_line":"                              \"\u0027%(drv)s\u0027\"), {\u0027drv\u0027: driver.name})"},{"line_number":821,"context_line":"                # Restore the result before the extension operation"},{"line_number":822,"context_line":"                # Need NOT rollback the base_model, because we only \u0027get\u0027 info"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_641609f3","line":819,"updated":"2015-08-04 21:33:30.000000000","message":"you reuse the method in multiple contexts, not just network.","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                rollback \u003d result"},{"line_number":817,"context_line":"                getattr(driver.obj, mname)(session, base_model, result)"},{"line_number":818,"context_line":"            except Exception:"},{"line_number":819,"context_line":"                LOG.error(_LE(\"Error when extend network dict for driver \""},{"line_number":820,"context_line":"                              \"\u0027%(drv)s\u0027\"), {\u0027drv\u0027: driver.name})"},{"line_number":821,"context_line":"                # Restore the result before the extension operation"},{"line_number":822,"context_line":"                # Need NOT rollback the base_model, because we only \u0027get\u0027 info"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_9605797b","line":819,"in_reply_to":"1a4dcd0f_641609f3","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                getattr(driver.obj, mname)(session, base_model, result)"},{"line_number":818,"context_line":"            except Exception:"},{"line_number":819,"context_line":"                LOG.error(_LE(\"Error when extend network dict for driver \""},{"line_number":820,"context_line":"                              \"\u0027%(drv)s\u0027\"), {\u0027drv\u0027: driver.name})"},{"line_number":821,"context_line":"                # Restore the result before the extension operation"},{"line_number":822,"context_line":"                # Need NOT rollback the base_model, because we only \u0027get\u0027 info"},{"line_number":823,"context_line":"                # from base_model"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a4f5f1cb","line":820,"updated":"2015-08-04 21:33:30.000000000","message":"again, don\u0027t abbreviate. driver, not drv","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                getattr(driver.obj, mname)(session, base_model, result)"},{"line_number":818,"context_line":"            except Exception:"},{"line_number":819,"context_line":"                LOG.error(_LE(\"Error when extend network dict for driver \""},{"line_number":820,"context_line":"                              \"\u0027%(drv)s\u0027\"), {\u0027drv\u0027: driver.name})"},{"line_number":821,"context_line":"                # Restore the result before the extension operation"},{"line_number":822,"context_line":"                # Need NOT rollback the base_model, because we only \u0027get\u0027 info"},{"line_number":823,"context_line":"                # from base_model"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_f6d71deb","line":820,"in_reply_to":"1a4dcd0f_a4f5f1cb","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fb2baa69883935a83bb7a6954615d573830af1e2","unresolved":false,"context_lines":[{"line_number":800,"context_line":"        self._call_on_ext_drivers(\"process_update_port\", plugin_context,"},{"line_number":801,"context_line":"                                  data, result)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def _call_on_dict_driver(self, name, session, base_model, result):"},{"line_number":804,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_98befbd2","line":803,"updated":"2015-08-05 10:22:35.000000000","message":"This change, while a blessed one, does not belong to the above change (and isn\u0027t mentioned at all in the commit message). Please split it off from the above change (so that we can merge it quicker).","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"03a30a3b6ae0d0fcdd7db5ca3ed4c172fc222470","unresolved":false,"context_lines":[{"line_number":800,"context_line":"        self._call_on_ext_drivers(\"process_update_port\", plugin_context,"},{"line_number":801,"context_line":"                                  data, result)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def _call_on_dict_driver(self, name, session, base_model, result):"},{"line_number":804,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_c3e81813","line":803,"in_reply_to":"1a4dcd0f_98befbd2","updated":"2015-08-05 10:35:51.000000000","message":"I think this change is simple, otherwise, all the extend process will need a same process respectively.  I can add it into commit msg.","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fb2baa69883935a83bb7a6954615d573830af1e2","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when extend %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(drv)s\u0027\"), {\u0027name\u0027: name, \u0027drv\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_98e11bd3","line":808,"updated":"2015-08-05 10:22:35.000000000","message":"This error message seems off to me. \"Error when extend extend_network_dict for driver ...\"","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"03a30a3b6ae0d0fcdd7db5ca3ed4c172fc222470","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when extend %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(drv)s\u0027\"), {\u0027name\u0027: name, \u0027drv\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_e368b489","line":808,"in_reply_to":"1a4dcd0f_98e11bd3","updated":"2015-08-05 10:35:51.000000000","message":"I will remove the \u0027extend\u0027","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fb2baa69883935a83bb7a6954615d573830af1e2","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when extend %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(drv)s\u0027\"), {\u0027name\u0027: name, \u0027drv\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_98083b93","line":809,"updated":"2015-08-05 10:22:35.000000000","message":"Please don\u0027t use \u0027drv\u0027 abbreviation - use \u0027driver\u0027 instead.","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"03a30a3b6ae0d0fcdd7db5ca3ed4c172fc222470","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when extend %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(drv)s\u0027\"), {\u0027name\u0027: name, \u0027drv\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_4321689e","line":809,"in_reply_to":"1a4dcd0f_98083b93","updated":"2015-08-05 10:35:51.000000000","message":"Done","commit_id":"7671ce2ea0cecdeb7c23d4b6ef83b0a3f0d228ee"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e10a8ab52be49e01b7842f592c149005b682588c","unresolved":false,"context_lines":[{"line_number":766,"context_line":"                getattr(driver.obj, method_name)(plugin_context, data, result)"},{"line_number":767,"context_line":"            except Exception:"},{"line_number":768,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":769,"context_line":"                    LOG.info(_LI(\"Extension driver \u0027%(name)s\u0027 failed in\""},{"line_number":770,"context_line":"                             \"%(method)s\"),"},{"line_number":771,"context_line":"                             {\u0027name\u0027: driver.name, \u0027method\u0027: method_name})"},{"line_number":772,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_3e077819","line":769,"updated":"2015-08-05 17:08:32.000000000","message":"space missing between in and %(method)s","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"675b5691929e0d12ab95949c7089e0497263af64","unresolved":false,"context_lines":[{"line_number":766,"context_line":"                getattr(driver.obj, method_name)(plugin_context, data, result)"},{"line_number":767,"context_line":"            except Exception:"},{"line_number":768,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":769,"context_line":"                    LOG.info(_LI(\"Extension driver \u0027%(name)s\u0027 failed in\""},{"line_number":770,"context_line":"                             \"%(method)s\"),"},{"line_number":771,"context_line":"                             {\u0027name\u0027: driver.name, \u0027method\u0027: method_name})"},{"line_number":772,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_0f7b598d","line":769,"in_reply_to":"1a4dcd0f_3e077819","updated":"2015-08-06 02:36:20.000000000","message":"Done","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e10a8ab52be49e01b7842f592c149005b682588c","unresolved":false,"context_lines":[{"line_number":800,"context_line":"        self._call_on_ext_drivers(\"process_update_port\", plugin_context,"},{"line_number":801,"context_line":"                                  data, result)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def _call_on_dict_driver(self, name, session, base_model, result):"},{"line_number":804,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_5e5a842b","line":803,"updated":"2015-08-05 17:08:32.000000000","message":"name -\u003e method_name","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"675b5691929e0d12ab95949c7089e0497263af64","unresolved":false,"context_lines":[{"line_number":800,"context_line":"        self._call_on_ext_drivers(\"process_update_port\", plugin_context,"},{"line_number":801,"context_line":"                                  data, result)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def _call_on_dict_driver(self, name, session, base_model, result):"},{"line_number":804,"context_line":"        for driver in self.ordered_ext_drivers:"},{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_2fb7353b","line":803,"in_reply_to":"1a4dcd0f_5e5a842b","updated":"2015-08-06 02:36:20.000000000","message":"Done","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e10a8ab52be49e01b7842f592c149005b682588c","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_3ea3f801","line":808,"updated":"2015-08-05 17:08:32.000000000","message":"Use the same message as above: Extension driver \u0027%(name)s\u0027 failed in %(method)s","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"675b5691929e0d12ab95949c7089e0497263af64","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            try:"},{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_0f6599b3","line":808,"in_reply_to":"1a4dcd0f_3ea3f801","updated":"2015-08-06 02:36:20.000000000","message":"Done","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e10a8ab52be49e01b7842f592c149005b682588c","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_de8bf466","line":809,"updated":"2015-08-05 17:08:32.000000000","message":"please avoid wrapping inside the string, I think it fits nice into 80 chars limit.","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"675b5691929e0d12ab95949c7089e0497263af64","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                getattr(driver.obj, name)(session, base_model, result)"},{"line_number":807,"context_line":"            except Exception:"},{"line_number":808,"context_line":"                LOG.error(_LE(\"Error when %(name) dict for driver \""},{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_cf11f105","line":809,"in_reply_to":"1a4dcd0f_de8bf466","updated":"2015-08-06 02:36:20.000000000","message":"Done","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"cf55deb2acb7f2cb3ff3dec06c38f0ce714edfc5","unresolved":false,"context_lines":[{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","},{"line_number":813,"context_line":"                      {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    def extend_network_dict(self, session, base_model, result):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_19f8967a","line":812,"updated":"2015-08-05 17:27:13.000000000","message":"just a minor nit. You might want to reword this as:\n\"%(method_name)s succeeded for driver %(driver)s\"","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"675b5691929e0d12ab95949c7089e0497263af64","unresolved":false,"context_lines":[{"line_number":809,"context_line":"                    \"\u0027%(driver)s\u0027\"), {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":810,"context_line":"                raise ml2_exc.ExtensionDriverError(driver\u003ddriver.name)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            LOG.debug(\"Succeed %(name)s for driver \u0027%(driver)s\u0027\","},{"line_number":813,"context_line":"                      {\u0027name\u0027: name, \u0027driver\u0027: driver.name})"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    def extend_network_dict(self, session, base_model, result):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_4f8ba168","line":812,"in_reply_to":"1a4dcd0f_19f8967a","updated":"2015-08-06 02:36:20.000000000","message":"Done","commit_id":"5c03f7f5ba0d8760d0326c600d0abb16d480be37"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":589,"context_line":"            self._ensure_default_security_group(context, tenant_id)"},{"line_number":590,"context_line":"            result \u003d super(Ml2Plugin, self).create_network(context, network)"},{"line_number":591,"context_line":"            self.extension_manager.process_create_network(self, context,"},{"line_number":592,"context_line":"                                                          net_data, result)"},{"line_number":593,"context_line":"            self._process_l3_create(context, result, net_data)"},{"line_number":594,"context_line":"            net_data[\u0027id\u0027] \u003d result[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_64c4c95e","line":591,"updated":"2015-08-04 21:33:30.000000000","message":"self??? it\u0027s passed implicitly. [Also, self here is not what the method expects...]","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":589,"context_line":"            self._ensure_default_security_group(context, tenant_id)"},{"line_number":590,"context_line":"            result \u003d super(Ml2Plugin, self).create_network(context, network)"},{"line_number":591,"context_line":"            self.extension_manager.process_create_network(self, context,"},{"line_number":592,"context_line":"                                                          net_data, result)"},{"line_number":593,"context_line":"            self._process_l3_create(context, result, net_data)"},{"line_number":594,"context_line":"            net_data[\u0027id\u0027] \u003d result[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_f9baae09","line":591,"in_reply_to":"1a4dcd0f_64c4c95e","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8773dde01dc1dbeee21bdd6984db2b58ff7ee073","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_df22e653","line":965,"updated":"2015-07-28 18:56:08.000000000","message":"Also I am afraid that this change is going to break a lot of mechanism drivers","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"de298913769b74e884e322b87240126783d31ce3","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5942c211","line":965,"in_reply_to":"1a4dcd0f_04894526","updated":"2015-08-05 09:34:59.000000000","message":"Done","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7163d25cac293b387afb0ff6133c40d35880e7b2","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_971fc16f","line":965,"in_reply_to":"3a50d1a3_632e14a7","updated":"2015-07-31 16:26:40.000000000","message":"Any mechanism driver implementing the process_create_port call will now be needed to change their method signature. For eg. \n\nhttps://github.com/openstack/networking-cisco/blob/master/networking_cisco/plugins/ml2/drivers/cisco/n1kv/n1kv_ext_driver.py#L59\n\nSame goes for other methods","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"522577098197f6c931b0e76c68e7dd0c3ffdd0fa","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f6b05d8d","line":965,"in_reply_to":"3a50d1a3_971fc16f","updated":"2015-08-03 01:52:24.000000000","message":"Thanks, you are right. emm... I need some advice..\n\nmy original idea is that when one ext driver got exception, we can stop the whole extension process.","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"8c8d5c6ef60b768b8a5db7faaba0608904cebdc0","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_632e14a7","line":965,"in_reply_to":"3a50d1a3_df22e653","updated":"2015-07-31 08:25:37.000000000","message":"Hi Raut, could you talk more about it?","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7a508bc6c1e29799a0d15b36910371e493513ea0","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":963,"context_line":"            dhcp_opts \u003d attrs.get(edo_ext.EXTRADHCPOPTS, [])"},{"line_number":964,"context_line":"            result \u003d super(Ml2Plugin, self).create_port(context, port)"},{"line_number":965,"context_line":"            self.extension_manager.process_create_port(self, context, attrs,"},{"line_number":966,"context_line":"                                                       result)"},{"line_number":967,"context_line":"            self._portsec_ext_port_create_processing(context, result, port)"},{"line_number":968,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_04894526","line":965,"in_reply_to":"3a50d1a3_f6b05d8d","updated":"2015-08-04 21:33:30.000000000","message":"So why don\u0027t we just raise from there and allow the transaction to roll back/exception to bubble up to the user?","commit_id":"5239435b2137a4b3a23aaeedd26c0bc209fc9a4e"}],"neutron/tests/unit/plugins/ml2/test_extension_driver_api.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4533583b62e6e9775bfac0b7edcf6daa61bc267e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        with mock.patch.object(ext_test.TestExtensionDriver,"},{"line_number":63,"context_line":"                               \u0027process_create_network\u0027,"},{"line_number":64,"context_line":"                               side_effect\u003dTypeError):"},{"line_number":65,"context_line":"            net, tenant_id \u003d self._verify_network_create(500,"},{"line_number":66,"context_line":"                                                     \u0027HTTPInternalServerError\u0027)"},{"line_number":67,"context_line":"            # Verify the operation is rolled back"},{"line_number":68,"context_line":"            query_params \u003d \"tenant_id\u003d%s\" % tenant_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_ce000a04","line":65,"updated":"2015-08-06 08:03:22.000000000","message":"nit: there\u0027s an incorrect amount of spaces in the beginning of the next line.","commit_id":"7d158ab98e1e43172946e8700257540fc53fce25"},{"author":{"_account_id":11114,"name":"yalei wang","email":"yalei.wang@intel.com","username":"yalie"},"change_message_id":"2a2dc150693e1fbf5e8dbbfaf8128ee0c481473b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        with mock.patch.object(ext_test.TestExtensionDriver,"},{"line_number":63,"context_line":"                               \u0027process_create_network\u0027,"},{"line_number":64,"context_line":"                               side_effect\u003dTypeError):"},{"line_number":65,"context_line":"            net, tenant_id \u003d self._verify_network_create(500,"},{"line_number":66,"context_line":"                                                     \u0027HTTPInternalServerError\u0027)"},{"line_number":67,"context_line":"            # Verify the operation is rolled back"},{"line_number":68,"context_line":"            query_params \u003d \"tenant_id\u003d%s\" % tenant_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_a1d6c34c","line":65,"in_reply_to":"1a4dcd0f_ce000a04","updated":"2015-08-07 01:16:35.000000000","message":"Done","commit_id":"7d158ab98e1e43172946e8700257540fc53fce25"}]}
