)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d6208650eaa3fc478f8e8f3a94b11c724dad83c4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server will be raised."},{"line_number":11,"context_line":"There is argument check in the cli which checks either subnet or port id"},{"line_number":12,"context_line":"is needed, but not in the server side when the body is empty."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a1ced50_5ce36a05","line":9,"range":{"start_line":9,"start_character":58,"end_line":9,"end_character":61},"updated":"2017-03-20 12:23:55.000000000","message":"where is [1]?","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"33aa8dbdaebe701e8952c29d6342334a5ecb8ee6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server will be raised."},{"line_number":11,"context_line":"There is argument check in the cli which checks either subnet or port id"},{"line_number":12,"context_line":"is needed, but not in the server side when the body is empty."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_312b0c31","line":9,"range":{"start_line":9,"start_character":58,"end_line":9,"end_character":61},"in_reply_to":"1a1ced50_5ce36a05","updated":"2017-03-27 02:15:43.000000000","message":"Done","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d6208650eaa3fc478f8e8f3a94b11c724dad83c4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server will be raised."},{"line_number":11,"context_line":"There is argument check in the cli which checks either subnet or port id"},{"line_number":12,"context_line":"is needed, but not in the server side when the body is empty."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a1ced50_1ce1f2fe","line":10,"range":{"start_line":9,"start_character":63,"end_line":10,"end_character":7},"updated":"2017-03-20 12:23:55.000000000","message":"add \"error\"","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"33aa8dbdaebe701e8952c29d6342334a5ecb8ee6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server will be raised."},{"line_number":11,"context_line":"There is argument check in the cli which checks either subnet or port id"},{"line_number":12,"context_line":"is needed, but not in the server side when the body is empty."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_11224853","line":10,"range":{"start_line":9,"start_character":63,"end_line":10,"end_character":7},"in_reply_to":"1a1ced50_1ce1f2fe","updated":"2017-03-27 02:15:43.000000000","message":"Done","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e69b001382cfd44d7ecfd63b0fefcd8de82e4f3e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Li Yingjun \u003cyingjun.li@kylin-cloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-27 02:16:13 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server error will be raised."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ffe62b97_e54d653e","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":27},"updated":"2017-03-29 08:41:50.000000000","message":"They\u0027re already validated by server, I\u0027d say \"Handle empty body in add_router_interface\"","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"90afbdb60daee3a967c48b672a11e54a9668fd21","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Li Yingjun \u003cyingjun.li@kylin-cloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-27 02:16:13 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate subnet and port id for add_router_interface when body is empty"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when passing an empty dict body {} to add_router_interface[1], internal"},{"line_number":10,"context_line":"server error will be raised."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ffe62b97_7e077ccb","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":27},"in_reply_to":"ffe62b97_e54d653e","updated":"2017-03-30 03:54:57.000000000","message":"Done","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"}],"neutron/db/l3_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d6208650eaa3fc478f8e8f3a94b11c724dad83c4","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_5cc60a4a","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"updated":"2017-03-20 12:23:55.000000000","message":"why changing signature?","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"33aa8dbdaebe701e8952c29d6342334a5ecb8ee6","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_ce4afd53","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"in_reply_to":"1a1ced50_5cc60a4a","updated":"2017-03-27 02:15:43.000000000","message":"signature?","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"68bc82e43d0f4bf668a2765b4f5f81bfa8c48c61","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0ab73888","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"in_reply_to":"ffe62b97_0ab5f8ed","updated":"2017-03-29 08:26:17.000000000","message":"Okay, when calling the add-interface-to-router-detail, if passing body with {}, no extra args will be passed down to add_router_interface method, as the bug reported. In this case, we need a default value. https://developer.openstack.org/api-ref/networking/v2/?expanded\u003dadd-interface-to-router-detail","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"58c6afbe800e802535bc4cf6f156e54109c9484b","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_85b21948","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"in_reply_to":"ffe62b97_0ab73888","updated":"2017-03-29 08:35:54.000000000","message":"Ah, so the server error is \"\"expected 4 arguments, called with 3\"? Would be good to include such log into the bug report for clarity","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"cf8dd1340fc512dc67aa523a0aae00cd5aca2856","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_a5907d96","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"in_reply_to":"ffe62b97_85b21948","updated":"2017-03-29 08:36:40.000000000","message":"sorry, I see it\u0027s in there","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3eb1e1e2bff28d1914037492c85cebb1c9531495","unresolved":false,"context_lines":[{"line_number":822,"context_line":"        }"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0ab5f8ed","line":825,"range":{"start_line":825,"start_character":55,"end_line":825,"end_character":74},"in_reply_to":"ffe62b97_ce4afd53","updated":"2017-03-29 08:18:04.000000000","message":"yeah, why need default value now?","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d6208650eaa3fc478f8e8f3a94b11c724dad83c4","unresolved":false,"context_lines":[{"line_number":825,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":826,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":827,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":828,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"},{"line_number":829,"context_line":"        device_owner \u003d self._get_device_owner(context, router_id)"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        # This should be True unless adding an IPv6 prefix to an existing port"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_bcb61eda","line":828,"range":{"start_line":828,"start_character":34,"end_line":828,"end_character":79},"updated":"2017-03-20 12:23:55.000000000","message":"this should cover the case when interface_info is None or {}","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"13a59d5e288cd8a69ddf35d82cf32e35b7ed869a","unresolved":false,"context_lines":[{"line_number":1856,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":1857,"context_line":"        router_interface_info \u003d super("},{"line_number":1858,"context_line":"            L3_NAT_db_mixin, self).add_router_interface("},{"line_number":1859,"context_line":"                context, router_id, interface_info\u003dinterface_info)"},{"line_number":1860,"context_line":"        self.notify_router_interface_action("},{"line_number":1861,"context_line":"            context, router_interface_info, \u0027add\u0027)"},{"line_number":1862,"context_line":"        return router_interface_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_4a480e88","line":1859,"range":{"start_line":1859,"start_character":36,"end_line":1859,"end_character":50},"updated":"2017-03-20 01:26:00.000000000","message":"What is the idea behind it ? If the dictionary is blank for adding a router interface, should it even be processed or should a message be sent back to the customer?","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"33aa8dbdaebe701e8952c29d6342334a5ecb8ee6","unresolved":false,"context_lines":[{"line_number":1856,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":1857,"context_line":"        router_interface_info \u003d super("},{"line_number":1858,"context_line":"            L3_NAT_db_mixin, self).add_router_interface("},{"line_number":1859,"context_line":"                context, router_id, interface_info\u003dinterface_info)"},{"line_number":1860,"context_line":"        self.notify_router_interface_action("},{"line_number":1861,"context_line":"            context, router_interface_info, \u0027add\u0027)"},{"line_number":1862,"context_line":"        return router_interface_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_2ea849d9","line":1859,"range":{"start_line":1859,"start_character":36,"end_line":1859,"end_character":50},"in_reply_to":"1a1ced50_4a480e88","updated":"2017-03-27 02:15:43.000000000","message":"Line 828 handle it","commit_id":"3bf32a2fbf60d32798a1d46b10e2bfb21031d9e0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e69b001382cfd44d7ecfd63b0fefcd8de82e4f3e","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":801,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":802,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":803,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":804,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"},{"line_number":805,"context_line":"        device_owner \u003d self._get_device_owner(context, router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_650835d9","line":802,"range":{"start_line":802,"start_character":8,"end_line":802,"end_character":45},"updated":"2017-03-29 08:41:50.000000000","message":"_validate_interface_info can handle None, so why need this?","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"90afbdb60daee3a967c48b672a11e54a9668fd21","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":801,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":802,"context_line":"        interface_info \u003d interface_info or {}"},{"line_number":803,"context_line":"        router \u003d self._get_router(context, router_id)"},{"line_number":804,"context_line":"        add_by_port, add_by_sub \u003d self._validate_interface_info(interface_info)"},{"line_number":805,"context_line":"        device_owner \u003d self._get_device_owner(context, router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_fb995ec3","line":802,"range":{"start_line":802,"start_character":8,"end_line":802,"end_character":45},"in_reply_to":"ffe62b97_650835d9","updated":"2017-03-30 03:54:57.000000000","message":"Removed","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e69b001382cfd44d7ecfd63b0fefcd8de82e4f3e","unresolved":false,"context_lines":[{"line_number":1819,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":1820,"context_line":"        router_interface_info \u003d super("},{"line_number":1821,"context_line":"            L3_NAT_db_mixin, self).add_router_interface("},{"line_number":1822,"context_line":"                context, router_id, interface_info\u003dinterface_info)"},{"line_number":1823,"context_line":"        self.notify_router_interface_action("},{"line_number":1824,"context_line":"            context, router_interface_info, \u0027add\u0027)"},{"line_number":1825,"context_line":"        return router_interface_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_e5244560","line":1822,"range":{"start_line":1822,"start_character":36,"end_line":1822,"end_character":65},"updated":"2017-03-29 08:41:50.000000000","message":"does it change anything?","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"90afbdb60daee3a967c48b672a11e54a9668fd21","unresolved":false,"context_lines":[{"line_number":1819,"context_line":"    def add_router_interface(self, context, router_id, interface_info\u003dNone):"},{"line_number":1820,"context_line":"        router_interface_info \u003d super("},{"line_number":1821,"context_line":"            L3_NAT_db_mixin, self).add_router_interface("},{"line_number":1822,"context_line":"                context, router_id, interface_info\u003dinterface_info)"},{"line_number":1823,"context_line":"        self.notify_router_interface_action("},{"line_number":1824,"context_line":"            context, router_interface_info, \u0027add\u0027)"},{"line_number":1825,"context_line":"        return router_interface_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_7beb0e12","line":1822,"range":{"start_line":1822,"start_character":36,"end_line":1822,"end_character":65},"in_reply_to":"ffe62b97_e5244560","updated":"2017-03-30 03:54:57.000000000","message":"no, removed","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"}],"neutron/tests/unit/extensions/test_l3.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e69b001382cfd44d7ecfd63b0fefcd8de82e4f3e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":242,"context_line":"        self.api.put(path)"},{"line_number":243,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# This base plugin class is for tests."},{"line_number":247,"context_line":"class TestL3NatBasePlugin(db_base_plugin_v2.NeutronDbPluginV2,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_45d9b154","line":244,"updated":"2017-03-29 08:41:50.000000000","message":"check return code?","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"90afbdb60daee3a967c48b672a11e54a9668fd21","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":242,"context_line":"        self.api.put(path)"},{"line_number":243,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# This base plugin class is for tests."},{"line_number":247,"context_line":"class TestL3NatBasePlugin(db_base_plugin_v2.NeutronDbPluginV2,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_de70c874","line":244,"in_reply_to":"ffe62b97_45d9b154","updated":"2017-03-30 03:54:57.000000000","message":"Done","commit_id":"2d74819b7bb13e78fc13a2b528f6363a57dc9239"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5077291de9cf8132af7686e1071155e48ae1375c","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                         action\u003d\"add_router_interface\","},{"line_number":235,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":236,"context_line":"        res \u003d self.api.put(path)"},{"line_number":237,"context_line":"        self.assertEqual(exc.HTTPOk.code, res.status_int)"},{"line_number":238,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_4a686ef3","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":35},"updated":"2017-03-30 07:12:29.000000000","message":"shouldn\u0027t this be BadRequest?","commit_id":"0e99b057dff08b37bd48bbd4f3aaf970ced2dffd"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"cd7858cc4ee0d41b71b499585fbdcb549672bfbf","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                         action\u003d\"add_router_interface\","},{"line_number":235,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":236,"context_line":"        res \u003d self.api.put(path)"},{"line_number":237,"context_line":"        self.assertEqual(exc.HTTPOk.code, res.status_int)"},{"line_number":238,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_c2c45762","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":35},"in_reply_to":"ffe62b97_45e29fd6","updated":"2017-03-30 12:44:52.000000000","message":"Yes, this test will fail without the fix.","commit_id":"0e99b057dff08b37bd48bbd4f3aaf970ced2dffd"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"fb976498ce17bce811554b04fee3628ba6f02bca","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                         action\u003d\"add_router_interface\","},{"line_number":235,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":236,"context_line":"        res \u003d self.api.put(path)"},{"line_number":237,"context_line":"        self.assertEqual(exc.HTTPOk.code, res.status_int)"},{"line_number":238,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_c53d8fbb","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":35},"in_reply_to":"ffe62b97_4a686ef3","updated":"2017-03-30 07:18:50.000000000","message":"This is just the extension unit test, it didn\u0027t actually call the db api. so can\u0027t catch bad request here..","commit_id":"0e99b057dff08b37bd48bbd4f3aaf970ced2dffd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"4fa079811f09dae86c8c1a3fa38549674e0adf7d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                         action\u003d\"add_router_interface\","},{"line_number":235,"context_line":"                         fmt\u003dself.fmt)"},{"line_number":236,"context_line":"        res \u003d self.api.put(path)"},{"line_number":237,"context_line":"        self.assertEqual(exc.HTTPOk.code, res.status_int)"},{"line_number":238,"context_line":"        instance.add_router_interface.assert_called_with(mock.ANY, router_id)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_45e29fd6","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":35},"in_reply_to":"ffe62b97_c53d8fbb","updated":"2017-03-30 07:35:02.000000000","message":"So what does it check then? Does it fail without the fix?","commit_id":"0e99b057dff08b37bd48bbd4f3aaf970ced2dffd"}]}
