)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8084d497eef81c8bf402a49508a282eeb6f3c2e2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-03-02 14:22:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVX%2F%2Fozo%3D","line":7,"updated":"2014-03-02 08:14:49.000000000","message":"I think the headline should be more specific, for example:\n\"Remove ability of deleting dhcp port manually\"","commit_id":"5658c67beadc8eee2526c9c8ad1d0cf62baa4b8d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"23d4b5e20e26a3a8408839f94327ee2d7f1b7114","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-03-02 14:22:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2F%2BxM%3D","line":7,"in_reply_to":"AAAAVX%2F%2Fozo%3D","updated":"2014-03-03 01:03:59.000000000","message":"thank for your suggestion","commit_id":"5658c67beadc8eee2526c9c8ad1d0cf62baa4b8d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8084d497eef81c8bf402a49508a282eeb6f3c2e2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia8cd420beaa70ac7c041e9f380bd38d50befb1b9"},{"line_number":14,"context_line":"Closes-bug: #1279683"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVX%2F%2FozQ%3D","line":11,"updated":"2014-03-02 08:14:49.000000000","message":"Following the bug description it\u0027s not obvious why deleting dhcp port should be an API limitation. why not to fix issue with deleting tap interface?","commit_id":"5658c67beadc8eee2526c9c8ad1d0cf62baa4b8d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"23d4b5e20e26a3a8408839f94327ee2d7f1b7114","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia8cd420beaa70ac7c041e9f380bd38d50befb1b9"},{"line_number":14,"context_line":"Closes-bug: #1279683"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2F%2BxI%3D","line":11,"in_reply_to":"AAAAVX%2F%2FozQ%3D","updated":"2014-03-03 01:03:59.000000000","message":"Done","commit_id":"5658c67beadc8eee2526c9c8ad1d0cf62baa4b8d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"93aa89a860b82293ed46ddb13e4830c21bd443b4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia8cd420beaa70ac7c041e9f380bd38d50befb1b9"},{"line_number":14,"context_line":"Closes-bug: #1279683"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2FuaA%3D","line":11,"in_reply_to":"AAAAVn%2F%2F%2BxI%3D","updated":"2014-03-04 13:21:19.000000000","message":"if it is allowed delete dhcp port via API before network is deleted, in the dhcp namespace, it will create two VIF tap, the vm in this network can not get IP!","commit_id":"5658c67beadc8eee2526c9c8ad1d0cf62baa4b8d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-03-13 08:57:58 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAWH%2F%2FmJA%3D","line":7,"updated":"2014-03-15 14:43:13.000000000","message":"It is better the summary line provides more more specific description.\n\n Prevent dhcp port deletion from the API","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f51ab2b970e31118ff9fde7ae9d3987e1d0e0275","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-03-13 08:57:58 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAWH%2F%2FatY%3D","line":7,"in_reply_to":"AAAAWH%2F%2FmJA%3D","updated":"2014-03-18 01:15:51.000000000","message":"thanks for you suggestion!","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAWH%2F%2FmI0%3D","line":9,"updated":"2014-03-15 14:43:13.000000000","message":"It is not specific to ML2 and OVS plugin. It is true for all plugins.","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f51ab2b970e31118ff9fde7ae9d3987e1d0e0275","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problem of deleting dhcp port"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"AAAAWH%2F%2Fass%3D","line":9,"in_reply_to":"AAAAWH%2F%2FmI0%3D","updated":"2014-03-18 01:15:51.000000000","message":"I am not sure whether other plugins exist the problem","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"cd8cc066a7d31435e58609678c3401703daa453a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Prevent dhcp port deletion from the API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAWH%2F%2FZ3M%3D","line":9,"updated":"2014-03-18 04:08:24.000000000","message":"this needs to be added for all plugins not just ML2 and openvswitch. Can\u0027t you just add this to the db_base_class so you don\u0027t have to sprinkle this code everywhere ?\n\nAlso please see Akihiro Motoki\t comment on patch set 5.","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"256aa0adbf70782f14425dc348d77295d3a68e00","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Prevent dhcp port deletion from the API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAWH%2F%2FF8Y%3D","line":9,"in_reply_to":"AAAAWH%2F%2FGJo%3D","updated":"2014-03-20 10:17:27.000000000","message":"I have tried to modify it in db_base_class in patch 9, but many unit tests failed, for example \u0027test_metadata_dhcp_host_route\u0027 in  \u0027vmware/test_nsx_plugin.py\u0027, it delete dhcp port directly, I hava to modify these unit test","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"b8a043bd314700cb82a8ef34f3b46506ef50122b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Prevent dhcp port deletion from the API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAWH%2F%2FZu8%3D","line":9,"in_reply_to":"AAAAWH%2F%2FZ3M%3D","updated":"2014-03-18 04:49:04.000000000","message":"I have tried to such changes, but there are many unit tests which delete dhcp port directly, if I do that in db_base_class , I must modify many unit tests, so  by each plugins is responsible for the change is better except ml2?openvswitch?linux bridge","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d4447589255a22dad527d1c006e3080f0b2c342e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Prevent dhcp port deletion from the API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"dhcp port is a internal port, with the plugin ML2 and openvswitch,"},{"line_number":10,"context_line":"deleting it will cause the problem of creating two VIF TAP in dhcp"},{"line_number":11,"context_line":"namespace, it should not allowed be deleted via API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAWH%2F%2FGJo%3D","line":9,"in_reply_to":"AAAAWH%2F%2FZu8%3D","updated":"2014-03-20 09:55:24.000000000","message":"what\u0027s wrong with modifying many unit tests?\nadding the dhcp port specific checks to each plugins does not seem scale.","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"}],"neutron/common/exceptions.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"class DhcpPortInUse(InUse):"},{"line_number":316,"context_line":"    message \u003d _(\"Port %(port_id)s has owner %(device_owner)s and therefore\""},{"line_number":317,"context_line":"                \" cannot be deleted directly via the port API.\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2FmKM%3D","line":317,"updated":"2014-03-15 14:43:13.000000000","message":"Please consider rewording:\n\n  Port %(port_id)s is owned by %(device_owner)s and\n  cannot be deleted directly via API.","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f924c2f2f09b7f5a6605f667c3869b16a498b242","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"class DhcpPortInUse(InUse):"},{"line_number":316,"context_line":"    message \u003d _(\"Port %(port_id)s has owner %(device_owner)s and therefore\""},{"line_number":317,"context_line":"                \" cannot be deleted directly via the port API.\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2FjgU%3D","line":317,"in_reply_to":"AAAAWH%2F%2FmKM%3D","updated":"2014-03-17 06:13:56.000000000","message":"thanks, I agree with you!","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cd121cf94c34dacc851bccb1be7974d39afe5eb4","unresolved":false,"context_lines":[{"line_number":1370,"context_line":"                    LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1371,"context_line":"                                \"but no IP address, so it can be deleted\"),"},{"line_number":1372,"context_line":"                              {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1373,"context_line":"                               \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":1376,"context_line":"            self._delete_port(context, id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2FpIc%3D","line":1373,"updated":"2014-03-02 06:00:37.000000000","message":"Please make L.1360-1373 to a separate method. There are plugins which want to call dhcp_port_check before calling db_plugin.delete_port in plugin.delete_port..","commit_id":"f68d36c8dbfa405bf70b00892c0d45a84b76910f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2cc8022fc6d76df254c45c5fc165e0313bbef718","unresolved":false,"context_lines":[{"line_number":1370,"context_line":"                    LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1371,"context_line":"                                \"but no IP address, so it can be deleted\"),"},{"line_number":1372,"context_line":"                              {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1373,"context_line":"                               \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":1376,"context_line":"            self._delete_port(context, id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2FpB0%3D","line":1373,"in_reply_to":"AAAAVX%2F%2FpIc%3D","updated":"2014-03-02 06:19:13.000000000","message":"Done","commit_id":"f68d36c8dbfa405bf70b00892c0d45a84b76910f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"        if port[\u0027device_owner\u0027] \u003d\u003d constants.DEVICE_OWNER_DHCP:"},{"line_number":1442,"context_line":"        # Raise port in use only if the port has IP addresses"},{"line_number":1443,"context_line":"        # Otherwise it\u0027s a stale port that can be removed"},{"line_number":1444,"context_line":"            fixed_ips \u003d port[\u0027fixed_ips\u0027]"},{"line_number":1445,"context_line":"            if fixed_ips:"},{"line_number":1446,"context_line":"                raise n_exc.DhcpPortInUse("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2FmKI%3D","line":1443,"updated":"2014-03-15 14:43:13.000000000","message":"Please align the indent level of L.1442-1443 with L.1444. It is inside of if-clause.","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f924c2f2f09b7f5a6605f667c3869b16a498b242","unresolved":false,"context_lines":[{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"        if port[\u0027device_owner\u0027] \u003d\u003d constants.DEVICE_OWNER_DHCP:"},{"line_number":1442,"context_line":"        # Raise port in use only if the port has IP addresses"},{"line_number":1443,"context_line":"        # Otherwise it\u0027s a stale port that can be removed"},{"line_number":1444,"context_line":"            fixed_ips \u003d port[\u0027fixed_ips\u0027]"},{"line_number":1445,"context_line":"            if fixed_ips:"},{"line_number":1446,"context_line":"                raise n_exc.DhcpPortInUse("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2Fjf8%3D","line":1443,"in_reply_to":"AAAAWH%2F%2FmKI%3D","updated":"2014-03-17 06:13:56.000000000","message":"Done","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":1446,"context_line":"                raise n_exc.DhcpPortInUse("},{"line_number":1447,"context_line":"                    port_id\u003dport_id, device_owner\u003dport[\u0027device_owner\u0027])"},{"line_number":1448,"context_line":"            else:"},{"line_number":1449,"context_line":"                LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1450,"context_line":"                            \"but no IP address, so it can be deleted\"),"},{"line_number":1451,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1452,"context_line":"                           \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2FmJ8%3D","line":1449,"updated":"2014-03-15 14:43:13.000000000","message":"Is it a usual case? Isn\u0027t it better to be LOG.warning (or info)?","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f924c2f2f09b7f5a6605f667c3869b16a498b242","unresolved":false,"context_lines":[{"line_number":1446,"context_line":"                raise n_exc.DhcpPortInUse("},{"line_number":1447,"context_line":"                    port_id\u003dport_id, device_owner\u003dport[\u0027device_owner\u0027])"},{"line_number":1448,"context_line":"            else:"},{"line_number":1449,"context_line":"                LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1450,"context_line":"                            \"but no IP address, so it can be deleted\"),"},{"line_number":1451,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1452,"context_line":"                           \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2Fjfw%3D","line":1449,"in_reply_to":"AAAAWH%2F%2FmJ8%3D","updated":"2014-03-17 06:13:56.000000000","message":"yes,  LOG.warning is better","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"495b0e245795babad28c0a4305cbbd7dbd965e0c","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"            else:"},{"line_number":1449,"context_line":"                LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1450,"context_line":"                            \"but no IP address, so it can be deleted\"),"},{"line_number":1451,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1452,"context_line":"                           \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2FmJw%3D","line":1451,"updated":"2014-03-15 14:43:13.000000000","message":"Nit: port_id instead of port[\u0027id\u0027]. It is consistent with L.1447.","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f924c2f2f09b7f5a6605f667c3869b16a498b242","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"            else:"},{"line_number":1449,"context_line":"                LOG.debug(_(\"Port %(port_id)s has owner %(port_owner)s, \""},{"line_number":1450,"context_line":"                            \"but no IP address, so it can be deleted\"),"},{"line_number":1451,"context_line":"                          {\u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":1452,"context_line":"                           \u0027port_owner\u0027: port[\u0027device_owner\u0027]})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2Fjf4%3D","line":1451,"in_reply_to":"AAAAWH%2F%2FmJw%3D","updated":"2014-03-17 06:13:56.000000000","message":"Done","commit_id":"473d8bfa42e857006ee1e2b2ebe068a04f901e89"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d21766787e8034e1d3d9507bafe6cb628c1a9f58","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"    def get_ports_count(self, context, filters\u003dNone):"},{"line_number":1433,"context_line":"        return self._get_ports_query(context, filters).count()"},{"line_number":1434,"context_line":""},{"line_number":1435,"context_line":"    def prevent_dhcp_port_deletion(self, context, port_id):"},{"line_number":1436,"context_line":"        try:"},{"line_number":1437,"context_line":"            port \u003d self._get_port(context, port_id)"},{"line_number":1438,"context_line":"        except n_exc.PortNotFound:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2Fhsg%3D","line":1435,"updated":"2014-03-17 10:28:50.000000000","message":"nit:\n\nMay be it\u0027s more descriptive to use \n   prevent_used_dhcp_port_deletion ?\n\n(I know we have prevent_l3_port_deletion name too, but we can do it better incrementally..)","commit_id":"44ba0bde6915c8ba1aaf598a555b9de5bd836ddb"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"d5380a9728a09f837f33f69ce044ba0a8d42c35f","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"    def get_ports_count(self, context, filters\u003dNone):"},{"line_number":1433,"context_line":"        return self._get_ports_query(context, filters).count()"},{"line_number":1434,"context_line":""},{"line_number":1435,"context_line":"    def prevent_dhcp_port_deletion(self, context, port_id):"},{"line_number":1436,"context_line":"        try:"},{"line_number":1437,"context_line":"            port \u003d self._get_port(context, port_id)"},{"line_number":1438,"context_line":"        except n_exc.PortNotFound:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2Fhds%3D","line":1435,"in_reply_to":"AAAAWH%2F%2Fhsg%3D","updated":"2014-03-17 11:01:41.000000000","message":"thanks for your good suggestion","commit_id":"44ba0bde6915c8ba1aaf598a555b9de5bd836ddb"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cd121cf94c34dacc851bccb1be7974d39afe5eb4","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"            for a in allocated:"},{"line_number":591,"context_line":"                self._delete_ip_allocation(context, subnet[\u0027network_id\u0027], id,"},{"line_number":592,"context_line":"                                           a.ip_address)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        try:"},{"line_number":595,"context_line":"            self.mechanism_manager.delete_subnet_postcommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2FpJA%3D","line":592,"updated":"2014-03-02 06:00:37.000000000","message":"self.delete_port is required to allow mechanism drivers to do delete-port related operation such as talking with an external system. If _delete_ip_allocation is called directly, there is no chance for mechanism drivers to do so.","commit_id":"f68d36c8dbfa405bf70b00892c0d45a84b76910f"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2cc8022fc6d76df254c45c5fc165e0313bbef718","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"            for a in allocated:"},{"line_number":591,"context_line":"                self._delete_ip_allocation(context, subnet[\u0027network_id\u0027], id,"},{"line_number":592,"context_line":"                                           a.ip_address)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        try:"},{"line_number":595,"context_line":"            self.mechanism_manager.delete_subnet_postcommit(mech_context)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2FpCk%3D","line":592,"in_reply_to":"AAAAVX%2F%2FpJA%3D","updated":"2014-03-02 06:19:13.000000000","message":"I agree with you, thanks for your suggestion.","commit_id":"f68d36c8dbfa405bf70b00892c0d45a84b76910f"}],"neutron/tests/unit/ml2/test_ml2_plugin.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"37c2d05259a2fa70ac734b0646e339c350483d98","unresolved":false,"context_lines":[{"line_number":92,"context_line":"class TestMl2NetworksV2(test_plugin.TestNetworksV2,"},{"line_number":93,"context_line":"                        Ml2PluginV2TestCase):"},{"line_number":94,"context_line":"    pass"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAVn%2F%2B564%3D","line":95,"updated":"2014-03-11 12:24:31.000000000","message":"I think an obvious test to add would be a test that tries to delete a DHCP port and (should) fail.","commit_id":"1815e1144fd069a73b62686e7ab2b5b2a7633670"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"49810e10637016d7ac9c21af668ed2caea7edeae","unresolved":false,"context_lines":[{"line_number":92,"context_line":"class TestMl2NetworksV2(test_plugin.TestNetworksV2,"},{"line_number":93,"context_line":"                        Ml2PluginV2TestCase):"},{"line_number":94,"context_line":"    pass"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAVn%2F%2B0AU%3D","line":95,"in_reply_to":"AAAAVn%2F%2B564%3D","updated":"2014-03-12 00:45:05.000000000","message":"Done","commit_id":"1815e1144fd069a73b62686e7ab2b5b2a7633670"}],"neutron/tests/unit/test_db_plugin.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"cd8cc066a7d31435e58609678c3401703daa453a","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"        self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code)"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"    def test_prevent_used_dhcp_port_deletion(self):"},{"line_number":1143,"context_line":"        with self.network(do_delete\u003dFalse) as network:"},{"line_number":1144,"context_line":"            port_res \u003d self._create_port(self.fmt,"},{"line_number":1145,"context_line":"                              network[\u0027network\u0027][\u0027id\u0027],"},{"line_number":1146,"context_line":"                              webob.exc.HTTPCreated.code,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAWH%2F%2FZ3c%3D","line":1143,"updated":"2014-03-18 04:08:24.000000000","message":"we want the tests to actually cleanup the network as well so you should drop do_delete\u003dFalse unless there is an reason for this","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"b8a043bd314700cb82a8ef34f3b46506ef50122b","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"        self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code)"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"    def test_prevent_used_dhcp_port_deletion(self):"},{"line_number":1143,"context_line":"        with self.network(do_delete\u003dFalse) as network:"},{"line_number":1144,"context_line":"            port_res \u003d self._create_port(self.fmt,"},{"line_number":1145,"context_line":"                              network[\u0027network\u0027][\u0027id\u0027],"},{"line_number":1146,"context_line":"                              webob.exc.HTTPCreated.code,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAWH%2F%2FZ1o%3D","line":1143,"in_reply_to":"AAAAWH%2F%2FZ3c%3D","updated":"2014-03-18 04:49:04.000000000","message":"Done","commit_id":"3f92596f860e0a408962875089eb2ccff141d1d3"}]}
