)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"vif_security has following child properties"},{"line_number":17,"context_line":"- require_iptables quantum require iptables support"},{"line_number":18,"context_line":"- prevent_mac_spoofing quantum require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing quantum require preventing ip spoofing support"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing quantum require preventing dhcp kspoofing support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAASn%2F%2FniM%3D","line":17,"updated":"2013-09-02 12:15:03.000000000","message":"quantum -\u003e neutron, here and below","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"vif_security has following child properties"},{"line_number":17,"context_line":"- require_iptables quantum require iptables support"},{"line_number":18,"context_line":"- prevent_mac_spoofing quantum require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing quantum require preventing ip spoofing support"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing quantum require preventing dhcp kspoofing support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAASn%2F%2Fl4E%3D","line":17,"in_reply_to":"AAAASn%2F%2FniM%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adding following attributes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"AAAATn%2F97%2Bc%3D","line":12,"updated":"2013-12-04 09:34:05.000000000","message":"s/adding/adds the/","commit_id":"349c4442c8223e536a9986465dd7ecf1a28041ca"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adding following attributes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"AAAATn%2F9tg4%3D","line":12,"in_reply_to":"AAAATn%2F97%2Bc%3D","updated":"2013-12-06 20:55:45.000000000","message":"Done","commit_id":"349c4442c8223e536a9986465dd7ecf1a28041ca"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"unresolved":false,"context_lines":[{"line_number":17,"context_line":"- require_iptables neutron require iptables support"},{"line_number":18,"context_line":"- prevent_mac_spoofing neutron require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing neutron require preventing ip spoofing support"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing neutron require preventing dhcp kspoofing support"},{"line_number":21,"context_line":"- require_securitygroup neutron require security group support"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ib9b68561e5d5a9a8c4767e32a91b354c1313259e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"AAAATn%2F97%2Bs%3D","line":20,"updated":"2013-12-04 09:34:05.000000000","message":"s/kspoofing/spoofing/","commit_id":"349c4442c8223e536a9986465dd7ecf1a28041ca"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":17,"context_line":"- require_iptables neutron require iptables support"},{"line_number":18,"context_line":"- prevent_mac_spoofing neutron require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing neutron require preventing ip spoofing support"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing neutron require preventing dhcp kspoofing support"},{"line_number":21,"context_line":"- require_securitygroup neutron require security group support"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ib9b68561e5d5a9a8c4767e32a91b354c1313259e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"AAAATn%2F9tgw%3D","line":20,"in_reply_to":"AAAATn%2F97%2Bs%3D","updated":"2013-12-06 20:55:45.000000000","message":"Done","commit_id":"349c4442c8223e536a9986465dd7ecf1a28041ca"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adds following attributes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- vif_security"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"AAAATn%2F9oHQ%3D","line":11,"updated":"2013-12-09 15:07:59.000000000","message":"Does removing capability and adding vif_security need to be in the same patch?  Or, are they independent enough that they could be in separate patches?","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adds following attributes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- vif_security"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"AAAATn%2F9nUQ%3D","line":11,"in_reply_to":"AAAATn%2F9oHQ%3D","updated":"2013-12-09 16:54:02.000000000","message":"vif_security replaces and enhances \"capability\" attribute, so I think it is okay in one patch. At first \"capability\" is introduced to let nova know neutron supports security group but it turns out it is not sufficient and more detail information is needed.","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"vif_security has following child properties"},{"line_number":17,"context_line":"- require_iptables neutron require iptables support"},{"line_number":18,"context_line":"- prevent_mac_spoofing neutron require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing neutron require preventing ip spoofing support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"AAAATn%2F9nTM%3D","line":16,"updated":"2013-12-09 16:54:02.000000000","message":"I would like to add a colon after attribute name like:\n\n  require_iptables:","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"- prevent_mac_spoofing neutron require preventing mac spoofing support"},{"line_number":19,"context_line":"- prevent_ip_spoofing neutron require preventing ip spoofing support"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing neutron require preventing dhcp spoofing support"},{"line_number":21,"context_line":"- require_securitygroup neutron require security group support"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ib9b68561e5d5a9a8c4767e32a91b354c1313259e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"AAAATn%2F9nSA%3D","line":21,"updated":"2013-12-09 16:54:02.000000000","message":"L18-21\n\nPrecisely speaking, these descriptions are ambiguous. \nNeutron requires an external system to support XXXX / prevent XXXXX.","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"- vif_security"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"vif_security has following child properties"},{"line_number":17,"context_line":"- require_iptables: Neutron requires an external service to supprot iptables"},{"line_number":18,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":19,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":20,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"AAAAUH%2F%2F9G0%3D","line":17,"updated":"2014-01-06 09:17:03.000000000","message":"s/supprot/support/","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve vif attributes related with firewalling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adds following attributes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"AAAAUH%2F%2Fsmg%3D","line":9,"updated":"2014-01-10 00:30:06.000000000","message":"refer the wiki https://wiki.openstack.org/GitCommitMessages to promote the commit message here.","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve vif attributes related with firewalling"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug #1112912"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch removes capability attribute and"},{"line_number":12,"context_line":"adds following attributes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"AAAAUH%2F%2FkO0%3D","line":9,"in_reply_to":"AAAAUH%2F%2Fsmg%3D","updated":"2014-01-11 00:27:32.000000000","message":"Done","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":19,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"},{"line_number":20,"context_line":"- require_securitygroup: Neutron requires an external service to support security group"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1112912"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"AAAAU3%2F%2Fe2g%3D","line":19,"updated":"2014-02-26 11:27:33.000000000","message":"Why add a properties for each spoofing stuff?\n\nI opened a bug: #1274034 about lack of basic security mechanisms. In particularity on the lack of ARP poisoning but I though we could need more basic security rules especially for IPv6 (like it\u0027s done with physical equipment). I still need to ask the sub-team IPv6.\n\nI draft a first version to solve that and I based it on your patch. Should I add a vif attribute for each new basic security? Or could replace all spoofing attributes by one vif attribute to notify if Neutron prevent basic security rule (like prevent_first_hop_security)?\n\n[1] http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6553/aag_c45-707354.pdf","commit_id":"cf1f60d1de21c9c4e3315e7df2b4ca5759aa32b9"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":19,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"},{"line_number":20,"context_line":"- require_securitygroup: Neutron requires an external service to support security group"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1112912"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"AAAAVX%2F%2F%2FME%3D","line":19,"in_reply_to":"AAAAU3%2F%2Fe2g%3D","updated":"2014-02-27 00:27:41.000000000","message":"The reason is we wanna express spoofing capabilities expressly.\nIf your spoofing may be provided by nova, please add it on the new atttribute","commit_id":"cf1f60d1de21c9c4e3315e7df2b4ca5759aa32b9"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":19,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"},{"line_number":20,"context_line":"- require_securitygroup: Neutron requires an external service to support security group"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1112912"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"AAAAVX%2F%2F7wg%3D","line":19,"in_reply_to":"AAAAVX%2F%2F%2FME%3D","updated":"2014-02-27 09:20:36.000000000","message":"So for example, it\u0027s possible to set MAC spoofing by Neutron and IP spoofing by Nova?","commit_id":"cf1f60d1de21c9c4e3315e7df2b4ca5759aa32b9"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":19,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"},{"line_number":20,"context_line":"- require_securitygroup: Neutron requires an external service to support security group"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1112912"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"AAAAVX%2F%2FyvU%3D","line":19,"in_reply_to":"AAAAVX%2F%2F2qM%3D","updated":"2014-02-28 08:32:42.000000000","message":"You mean \u0027However we are going to support to use nova side arp spoofing protection and MAC/IP spoofing by NEUTRON\u0027 ?\n\nI don\u0027t understand and found a use case to separate the support of basic security between Nova and Neutron. I think it\u0027s better to just prevent if all basic securities are supported by Neutron and if not, Nova must support all of them.","commit_id":"cf1f60d1de21c9c4e3315e7df2b4ca5759aa32b9"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"},{"line_number":19,"context_line":"- prevent_dhcp_spoofing: Neutron requires an external service to prevent dhcp spoofing"},{"line_number":20,"context_line":"- require_securitygroup: Neutron requires an external service to support security group"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1112912"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"AAAAVX%2F%2F2qM%3D","line":19,"in_reply_to":"AAAAVX%2F%2F7wg%3D","updated":"2014-02-27 20:04:57.000000000","message":"No\nThat combination isn\u0027t supported yet.\nHowever we are going to support to use nova side arp spoofing protection and MAC/IP spoofing by nova","commit_id":"cf1f60d1de21c9c4e3315e7df2b4ca5759aa32b9"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":12,"context_line":"- vif_security"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"vif_security has following child properties"},{"line_number":15,"context_line":"- require_iptables: Neutron requires an external service to support iptables"},{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":39,"id":"AAAAWH%2F%2BsCA%3D","line":15,"updated":"2014-03-25 03:03:23.000000000","message":"- What does it mean by \"support iptables\"? \n- Should this kind of explanation go inside the codebase? I found something similar (but not exactly the same in portbindings.py)\n- how does it relate to portsecurity extension?","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":12,"context_line":"- vif_security"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"vif_security has following child properties"},{"line_number":15,"context_line":"- require_iptables: Neutron requires an external service to support iptables"},{"line_number":16,"context_line":"- prevent_arp_spoofing: Neutron requires an external service to prevent arp spoofing"},{"line_number":17,"context_line":"- prevent_mac_spoofing: Neutron requires an external service to prevent mac spoofing"},{"line_number":18,"context_line":"- prevent_ip_spoofing: Neutron requires an external service to prevent ip spoofing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":39,"id":"AAAAWH%2F%2BrtQ%3D","line":15,"in_reply_to":"AAAAWH%2F%2BsCA%3D","updated":"2014-03-25 05:31:00.000000000","message":"This is used in VIF driver in nova side.\nIn nova side, OVS don\u0027t support iptables, so we need hybrid driver for that case.","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"}],"neutron/agent/firewall.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"658db82c212ef8a288a610964fd3259e96439b38","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.filter_defer_apply_off()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def extend_port_binding(self, port):"},{"line_number":124,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqIE%3D","line":124,"updated":"2013-09-01 03:28:57.000000000","message":"This is code which is supposed to be running on the agent (it\u0027s in neutron/agent), however you invoke it from the server as a way for having a drver specifying its driver\u0027s properties.\nThis feels strange, but I do not have a strong opinion on the matter.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.filter_defer_apply_off()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def extend_port_binding(self, port):"},{"line_number":124,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FpjA%3D","line":124,"in_reply_to":"AAAASn%2F%2Fp0Q%3D","updated":"2013-09-01 15:37:49.000000000","message":"Thank you for your pointing this.\nI\u0027ll do\n- agent-based plugin  ---\u003e use this code\n- Not agent-based one  --\u003e update logic on port binding.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.filter_defer_apply_off()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def extend_port_binding(self, port):"},{"line_number":124,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fp0Q%3D","line":124,"in_reply_to":"AAAASn%2F%2FqGI%3D","updated":"2013-09-01 11:38:51.000000000","message":"It looks strange to me too since extending VIF_SECURITY port-binding is required even for a plugin without agent such NVP plugin. Such plugin should not depends on agent code and agent configuration, e.g., the behavior of NVP plugin should not be affected with firewall_driver configuration.\n\nIt is no problem to delegate extend_port_binding to agent-based code for plugins using firewall_driver.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.filter_defer_apply_off()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def extend_port_binding(self, port):"},{"line_number":124,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqGI%3D","line":124,"in_reply_to":"AAAASn%2F%2FqIE%3D","updated":"2013-09-01 04:44:57.000000000","message":"This driver is configured both of server and agent from now, because we need consistent configuration between server and agent and nova side.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"658db82c212ef8a288a610964fd3259e96439b38","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            portbindings.PREVENT_IP_SPOOFING: True,"},{"line_number":162,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: True,"},{"line_number":163,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqIg%3D","line":164,"updated":"2013-09-01 03:28:57.000000000","message":"I quite do not understand why a firewall driver which does nothing would require everything...","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"            portbindings.PREVENT_IP_SPOOFING: True,"},{"line_number":162,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: True,"},{"line_number":163,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fpis%3D","line":164,"in_reply_to":"AAAASn%2F%2Fp0k%3D","updated":"2013-09-01 15:37:49.000000000","message":"yeah,, but both way will make confusion in one the other project.\nIf we choose, REQUIRE_SECURITY_GROUP, the code in nova will get easy to read, but neutron side get confusing.\nPROVIDE_SECURITY_GROUP is vise versa.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"            portbindings.PREVENT_IP_SPOOFING: True,"},{"line_number":162,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: True,"},{"line_number":163,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fp0k%3D","line":164,"in_reply_to":"AAAASn%2F%2FqGQ%3D","updated":"2013-09-01 11:38:51.000000000","message":"I think it is a discussion about the naming of attributes. When dan, nachi and I chatted about this, dan prefers to inform what nova should do. Daniel who refactored Nova libvirt VIF dirver seems to prefer to inform what neutron provides. I didn\u0027t have a strong opinion at that time.\n\nHowever, as Salvatore commented, it may not be easier to understand and it may be better to renaming. I think it is the last and good chance to discuss.\n\nWhat do you think?\n\n- REQUIRE_SECURITY_GROUP vs PROVIDE_SECURITY_GORUP,\n- REQUIRE_IPTABLES vs NEEDS_IPTABLES","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"            portbindings.PREVENT_IP_SPOOFING: True,"},{"line_number":162,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: True,"},{"line_number":163,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqGQ%3D","line":164,"in_reply_to":"AAAASn%2F%2FqIg%3D","updated":"2013-09-01 04:44:57.000000000","message":"This can be read as the Neutron saying\n\"hey, nova, I don\u0027t have any security function! so i need them from you\"","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"658db82c212ef8a288a610964fd3259e96439b38","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"},{"line_number":168,"context_line":"    global FIREWALL_DRIVER"},{"line_number":169,"context_line":"    if not FIREWALL_DRIVER:"},{"line_number":170,"context_line":"        FIREWALL_DRIVER \u003d importutils.import_class("},{"line_number":171,"context_line":"            cfg.CONF.SECURITYGROUP.firewall_driver)"},{"line_number":172,"context_line":"    FIREWALL_DRIVER.extend_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqIQ%3D","line":169,"updated":"2013-09-01 03:28:57.000000000","message":"I reckong it is safe to execute importutils.import_class several time as the import is actually performed only once.\nThis check might therefore be not necessary.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"def extend_port_binding(port):"},{"line_number":168,"context_line":"    global FIREWALL_DRIVER"},{"line_number":169,"context_line":"    if not FIREWALL_DRIVER:"},{"line_number":170,"context_line":"        FIREWALL_DRIVER \u003d importutils.import_class("},{"line_number":171,"context_line":"            cfg.CONF.SECURITYGROUP.firewall_driver)"},{"line_number":172,"context_line":"    FIREWALL_DRIVER.extend_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqGM%3D","line":169,"in_reply_to":"AAAASn%2F%2FqIQ%3D","updated":"2013-09-01 04:44:57.000000000","message":"Thanks! I\u0027m grad to know that","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":147,"context_line":"    def ports(self):"},{"line_number":148,"context_line":"        return {}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @classmethod"},{"line_number":151,"context_line":"    def extend_port_binding(cls, port):"},{"line_number":152,"context_line":"        port[portbindings.VIF_SECURITY] \u003d {"},{"line_number":153,"context_line":"            portbindings.REQUIRE_SECURITYGROUP: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fo58%3D","line":150,"updated":"2013-09-02 00:59:16.000000000","message":"Why is the noop driver activating security?","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":147,"context_line":"    def ports(self):"},{"line_number":148,"context_line":"        return {}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @classmethod"},{"line_number":151,"context_line":"    def extend_port_binding(cls, port):"},{"line_number":152,"context_line":"        port[portbindings.VIF_SECURITY] \u003d {"},{"line_number":153,"context_line":"            portbindings.REQUIRE_SECURITYGROUP: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl40%3D","line":150,"in_reply_to":"AAAASn%2F%2Fo58%3D","updated":"2013-09-03 02:33:49.000000000","message":"This means,\n\nNeutron is saying \"Hey Nova, I have no security function. so this port needs security function on your side\"","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.extensions import portbindings"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"FIREWALL_DRIVER \u003d None"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@six.add_metaclass(abc.ABCMeta)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2BB0Y%3D","line":26,"updated":"2013-12-03 10:16:55.000000000","message":"forgot to delete? This isn\u0027t used anywhere.","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.extensions import portbindings"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"FIREWALL_DRIVER \u003d None"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@six.add_metaclass(abc.ABCMeta)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9%2B5g%3D","line":26,"in_reply_to":"AAAATn%2F%2BB0Y%3D","updated":"2013-12-03 19:34:03.000000000","message":"Done","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"        finally:"},{"line_number":113,"context_line":"            self.filter_defer_apply_off()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def extend_port_binding(self, port):"},{"line_number":116,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2BBy0%3D","line":115,"updated":"2013-12-03 10:16:55.000000000","message":"@classmethod?","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":112,"context_line":"        finally:"},{"line_number":113,"context_line":"            self.filter_defer_apply_off()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def extend_port_binding(self, port):"},{"line_number":116,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9%2B5Y%3D","line":115,"in_reply_to":"AAAATn%2F%2BBy0%3D","updated":"2013-12-03 19:34:03.000000000","message":"No this is not a classmethod","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_port_binding(self, port):"},{"line_number":113,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class NoopFirewallDriver(FirewallDriver):"},{"line_number":117,"context_line":"    \"\"\"Noop Firewall Driver."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9fzI%3D","line":114,"updated":"2013-12-10 22:28:38.000000000","message":"pass","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_port_binding(self, port):"},{"line_number":113,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class NoopFirewallDriver(FirewallDriver):"},{"line_number":117,"context_line":"    \"\"\"Noop Firewall Driver."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9E1U%3D","line":114,"in_reply_to":"AAAATn%2F9SMo%3D","updated":"2013-12-17 01:47:20.000000000","message":"I got it. fixed","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_port_binding(self, port):"},{"line_number":113,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class NoopFirewallDriver(FirewallDriver):"},{"line_number":117,"context_line":"    \"\"\"Noop Firewall Driver."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9SMo%3D","line":114,"in_reply_to":"AAAATn%2F9fi8%3D","updated":"2013-12-16 19:11:19.000000000","message":"Seems like we should do it for convention as we do it on all the ones above?","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_port_binding(self, port):"},{"line_number":113,"context_line":"        \"\"\"Extend port binding dict.\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class NoopFirewallDriver(FirewallDriver):"},{"line_number":117,"context_line":"    \"\"\"Noop Firewall Driver."}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9fi8%3D","line":114,"in_reply_to":"AAAATn%2F9fzI%3D","updated":"2013-12-10 23:09:30.000000000","message":"There is no need to put \u0027pass\u0027 when we have doc string","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"}],"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":332,"context_line":"            self.iptables.defer_apply_off()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @classmethod"},{"line_number":335,"context_line":"    def extend_port_binding(cls, port):"},{"line_number":336,"context_line":"        port[portbindings.VIF_SECURITY] \u003d {"},{"line_number":337,"context_line":"            portbindings.REQUIRE_SECURITYGROUP: False,"},{"line_number":338,"context_line":"            portbindings.PREVENT_MAC_SPOOFING: False,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fo5w%3D","line":335,"updated":"2013-09-02 00:59:16.000000000","message":"Shouldn\u0027t these be true?","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":332,"context_line":"            self.iptables.defer_apply_off()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @classmethod"},{"line_number":335,"context_line":"    def extend_port_binding(cls, port):"},{"line_number":336,"context_line":"        port[portbindings.VIF_SECURITY] \u003d {"},{"line_number":337,"context_line":"            portbindings.REQUIRE_SECURITYGROUP: False,"},{"line_number":338,"context_line":"            portbindings.PREVENT_MAC_SPOOFING: False,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4w%3D","line":335,"in_reply_to":"AAAASn%2F%2Fo5w%3D","updated":"2013-09-03 02:33:49.000000000","message":"no opposit","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"unresolved":false,"context_lines":[{"line_number":360,"context_line":"            portbindings.PREVENT_MAC_SPOOFING: False,"},{"line_number":361,"context_line":"            portbindings.PREVENT_IP_SPOOFING: False,"},{"line_number":362,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: False,"},{"line_number":363,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":364,"context_line":"        }"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F%2Bqw%3D","line":363,"updated":"2014-01-05 15:54:46.000000000","message":"This is probably me just being dense, but I\u0027m having a hard time understanding why the iptables firewall agent requires iptables to be managed externally... can someone clarify please?","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":360,"context_line":"            portbindings.PREVENT_MAC_SPOOFING: False,"},{"line_number":361,"context_line":"            portbindings.PREVENT_IP_SPOOFING: False,"},{"line_number":362,"context_line":"            portbindings.PREVENT_DHCP_SPOOFING: False,"},{"line_number":363,"context_line":"            portbindings.REQUIRE_IPTABLES: True,"},{"line_number":364,"context_line":"        }"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F9kY%3D","line":363,"in_reply_to":"AAAAUH%2F%2F%2Bqw%3D","updated":"2014-01-06 06:35:21.000000000","message":"REQUIRE_IPTALBES means this firewall agents requires iptables functions.\nSome nova side VIF configuration didn\u0027t support iptables (OVS VIF driver etc), so this flag enforces nova side to select iptables compatible vif driver.","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"}],"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"SG_RPC_VERSION \u003d \"1.1\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#Need to be stay here"},{"line_number":29,"context_line":"#because agent didn\u0027t load firewall module directly"},{"line_number":30,"context_line":"security_group_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fnhs%3D","line":28,"updated":"2013-09-02 12:15:03.000000000","message":"nit: # Need to leave here","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"SG_RPC_VERSION \u003d \"1.1\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#Need to be stay here"},{"line_number":29,"context_line":"#because agent didn\u0027t load firewall module directly"},{"line_number":30,"context_line":"security_group_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4k%3D","line":28,"in_reply_to":"AAAASn%2F%2Fnhs%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.openstack.common import importutils"},{"line_number":23,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":24,"context_line":"#needed to register security group config"},{"line_number":25,"context_line":"from neutron.plugins.common import security_group  # noqa"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"SG_RPC_VERSION \u003d \"1.1\""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2BQkg%3D","line":25,"updated":"2013-11-28 11:22:42.000000000","message":"remove \"# noqa\"?","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.openstack.common import importutils"},{"line_number":23,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":24,"context_line":"#needed to register security group config"},{"line_number":25,"context_line":"from neutron.plugins.common import security_group  # noqa"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"SG_RPC_VERSION \u003d \"1.1\""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2BNg4%3D","line":25,"in_reply_to":"AAAATn%2F%2BQkg%3D","updated":"2013-11-29 04:28:17.000000000","message":"security_group is imported but it is not referred anywhere in this module, so we need \"noqa\" to silence flake8.","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.plugins.common import security_group  # noqa"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def is_firewall_enabled():"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATn%2F9oIA%3D","line":28,"updated":"2013-12-09 15:07:59.000000000","message":"This part seems a bit more like refactoring than fixing a defect.  Is the refactor necessary for the defect fix?  If it is, could the refactoring be committed as a patch before the defect fix?  If it isn\u0027t, could this be done as a follow-on to this patch?","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.openstack.common import importutils"},{"line_number":23,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":24,"context_line":"#needed to register security group config"},{"line_number":25,"context_line":"from neutron.plugins.common import security_group  # noqa"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"SG_RPC_VERSION \u003d \"1.1\""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F%2Bqg%3D","line":25,"updated":"2014-01-05 15:54:46.000000000","message":"Alternately, you could do this, below:\n\ncfg.CONF.import_group(\u0027SECURITYGROUPS\u0027, \u0027neutron.plugins.common.security_group\u0027)\n\nSee: https://github.com/openstack/oslo.config/blob/master/oslo/config/cfg.py#L1841","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.openstack.common import importutils"},{"line_number":23,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":24,"context_line":"#needed to register security group config"},{"line_number":25,"context_line":"from neutron.plugins.common import security_group  # noqa"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"SG_RPC_VERSION \u003d \"1.1\""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F9kM%3D","line":25,"in_reply_to":"AAAAUH%2F%2F%2Bqg%3D","updated":"2014-01-06 06:35:21.000000000","message":"nice! I\u0027ll use this way in next patch set","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"}],"neutron/db/migration/alembic_migrations/versions/837bce41a2d_remove_portfilter_fr.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":42,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":43,"context_line":"        return"},{"line_number":44,"context_line":"    op.drop_column(\u0027ml2_port_bindings\u0027, u\u0027cap_port_filter\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BTg0%3D","line":44,"updated":"2013-11-27 16:13:51.000000000","message":"unicode (u\u0027xxx\u0027) needs not be specified.","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":42,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":43,"context_line":"        return"},{"line_number":44,"context_line":"    op.drop_column(\u0027ml2_port_bindings\u0027, u\u0027cap_port_filter\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BTC4%3D","line":44,"in_reply_to":"AAAATn%2F%2BTg0%3D","updated":"2013-11-27 18:37:45.000000000","message":"Done","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":52,"context_line":"                  sa.Column(u\u0027cap_port_filter\u0027,"},{"line_number":53,"context_line":"                  mysql.TINYINT(display_width\u003d1), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BThA%3D","line":53,"updated":"2013-11-27 16:13:51.000000000","message":"mysql should be avoided. It should be:\n\n   sa.Boolean()\n\nIn addition, the indent level needs to be fixed.","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    op.add_column(\u0027ml2_port_bindings\u0027,"},{"line_number":52,"context_line":"                  sa.Column(u\u0027cap_port_filter\u0027,"},{"line_number":53,"context_line":"                  mysql.TINYINT(display_width\u003d1), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BTCo%3D","line":53,"in_reply_to":"AAAATn%2F%2BThA%3D","updated":"2013-11-27 18:37:45.000000000","message":"Done","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2Fsks%3D","line":3,"updated":"2014-01-10 00:30:06.000000000","message":"2013 -\u003e 2014","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FkOw%3D","line":3,"in_reply_to":"AAAAUH%2F%2Fsks%3D","updated":"2014-01-11 00:27:32.000000000","message":"Done","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"}],"neutron/db/portbindings_base.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"# @author: Yong Sheng Gong, UnitedStack Inc."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.agent import firewall"},{"line_number":20,"context_line":"from neutron.api.v2 import attributes"},{"line_number":21,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":22,"context_line":"from neutron.extensions import portbindings as pbin"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fo5g%3D","line":19,"updated":"2013-09-02 00:59:16.000000000","message":"Seems strange to import agent code into the server.","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"# @author: Yong Sheng Gong, UnitedStack Inc."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.agent import firewall"},{"line_number":20,"context_line":"from neutron.api.v2 import attributes"},{"line_number":21,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":22,"context_line":"from neutron.extensions import portbindings as pbin"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4g%3D","line":19,"in_reply_to":"AAAASn%2F%2Fo5g%3D","updated":"2013-09-03 02:33:49.000000000","message":"This is for plugins which depends on agent configration","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"}],"neutron/db/portbindings_db.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return"},{"line_number":108,"context_line":"    plugin.extend_port_dict_binding(port_res, port_db)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"# Register dict extend functions for ports"},{"line_number":112,"context_line":"db_base_plugin_v2.NeutronDbPluginV2.register_dict_extend_funcs("},{"line_number":113,"context_line":"    attributes.PORTS, [_extend_port_dict_binding])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fp0A%3D","side":"PARENT","line":110,"updated":"2013-09-01 11:38:51.000000000","message":"Needs to remove this line?","commit_id":"c96d32281fd98721bcdcf5c90fdc1c9cfd977817"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return"},{"line_number":108,"context_line":"    plugin.extend_port_dict_binding(port_res, port_db)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"# Register dict extend functions for ports"},{"line_number":112,"context_line":"db_base_plugin_v2.NeutronDbPluginV2.register_dict_extend_funcs("},{"line_number":113,"context_line":"    attributes.PORTS, [_extend_port_dict_binding])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fpig%3D","side":"PARENT","line":110,"in_reply_to":"AAAASn%2F%2Fp0A%3D","updated":"2013-09-01 15:37:49.000000000","message":"Done","commit_id":"c96d32281fd98721bcdcf5c90fdc1c9cfd977817"}],"neutron/extensions/portbindings.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"658db82c212ef8a288a610964fd3259e96439b38","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":80,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqIM%3D","line":80,"updated":"2013-09-01 03:28:57.000000000","message":"Is there the case to provide a strategy for backward compatibility for this API change? Like supporting in deprectated form the CAPABILITIES attribute?\n\nOr, due to its nature, it is not worth for this api?","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":80,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fp6Q%3D","line":80,"in_reply_to":"AAAASn%2F%2FqF8%3D","updated":"2013-09-01 11:38:51.000000000","message":"I think we don\u0027t need to consider backward compatibility of CAPABITIES attribute.\n\nAs Nachi says, nobody uses CAPABILITIES attribute. This attribute is introduced to inform Nova whether Neutron supports security group or not. At first we thought this information is sufficient, but it turned out that it is not enough for OVS hybrid VIF driver and we need to pass information about whether iptables is required or not. As a result, nova side code does not use CAPABILITIES information so far.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":80,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FqF8%3D","line":80,"in_reply_to":"AAAASn%2F%2FqIM%3D","updated":"2013-09-01 04:44:57.000000000","message":"Nova support is never implemented for CAPABILITIES. so\nAFIK, no one is using CAPABILITIES.\nFor this attribute, I think we can safely deprecated this attribute.\n\nBut if you think it is needed, i\u0027ll add \nCAPABILITIES:[]\nfor port.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FnhU%3D","line":32,"updated":"2013-09-02 12:15:03.000000000","message":"blank line not needed","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4c%3D","line":32,"in_reply_to":"AAAASn%2F%2FnhU%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"},{"line_number":36,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":37,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FnhM%3D","line":34,"updated":"2013-09-02 12:15:03.000000000","message":"has","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"},{"line_number":36,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":37,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4U%3D","line":34,"in_reply_to":"AAAASn%2F%2FnhM%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"},{"line_number":36,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":37,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"},{"line_number":38,"context_line":"PREVENT_MAC_SPOOFING \u003d \u0027prevent_mac_spoofing\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FnhI%3D","line":35,"updated":"2013-09-02 12:15:03.000000000","message":"boolean","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":34,"context_line":"# vif_security dict have following three parameters"},{"line_number":35,"context_line":"# 1) boolen: require security groups in host side or not"},{"line_number":36,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":37,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"},{"line_number":38,"context_line":"PREVENT_MAC_SPOOFING \u003d \u0027prevent_mac_spoofing\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4Q%3D","line":35,"in_reply_to":"AAAASn%2F%2FnhI%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                  \u0027enforce_policy\u0027: True,"},{"line_number":74,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":75,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":76,"context_line":"        #VIF_SECURITY is a read-only parameter, so no need to validate"},{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fng0%3D","line":76,"updated":"2013-09-02 12:15:03.000000000","message":"nit: the comment seems redundant","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                  \u0027enforce_policy\u0027: True,"},{"line_number":74,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":75,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":76,"context_line":"        #VIF_SECURITY is a read-only parameter, so no need to validate"},{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4M%3D","line":76,"in_reply_to":"AAAASn%2F%2Fng0%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":80,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F%2BBv0%3D","line":81,"updated":"2013-12-03 10:16:55.000000000","message":"Unnecessary code churn. If this is for consistency, all the order should be matched. at least in this file.","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":80,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F9%2B40%3D","line":81,"in_reply_to":"AAAATn%2F%2BBv0%3D","updated":"2013-12-03 19:34:03.000000000","message":"Done","commit_id":"ab8784ca2265d4e9da1b030adc756f3cb6a58dd7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"EXTENDED_ATTRIBUTES_2_0 \u003d {"},{"line_number":63,"context_line":"    \u0027ports\u0027: {"},{"line_number":64,"context_line":"        VIF_TYPE: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":65,"context_line":"                   \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":66,"context_line":"                   \u0027enforce_policy\u0027: True,"},{"line_number":67,"context_line":"                   \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATn%2F9sBE%3D","line":64,"updated":"2013-12-09 16:54:02.000000000","message":"read-only attribute does not require \"default\".","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":75,"context_line":"                  \u0027validate\u0027: {\u0027type:dict_or_none\u0027: None},"},{"line_number":76,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":77,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":79,"context_line":"                       \u0027enforce_policy\u0027: True,"},{"line_number":80,"context_line":"                       \u0027is_visible\u0027: True}"},{"line_number":81,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATn%2F9sBA%3D","line":78,"updated":"2013-12-09 16:54:02.000000000","message":"Same as the above.","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"},{"line_number":37,"context_line":"PREVENT_MAC_SPOOFING \u003d \u0027prevent_mac_spoofing\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9fwc%3D","line":34,"updated":"2013-12-10 22:28:38.000000000","message":"Why do we need to have: REQUIRE_SECURITYGROUP and REQUIRE_IPTABLES . Both of those seem to be on the client side?","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"},{"line_number":37,"context_line":"PREVENT_MAC_SPOOFING \u003d \u0027prevent_mac_spoofing\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAATn%2F9fiY%3D","line":34,"in_reply_to":"AAAATn%2F9fwc%3D","updated":"2013-12-10 23:09:30.000000000","message":"The purpose of this patch is to prevent host side configuration.\nTo server decide agent configuration helps operator.\n \nPlease see bug report for more detailed discussion.","commit_id":"d3b53a1f57ff0f9de8ebdc82ba65604ef77d5247"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FqRs%3D","line":33,"updated":"2014-01-10 00:30:06.000000000","message":"seems the number is five rather than three","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FkOs%3D","line":33,"in_reply_to":"AAAAUH%2F%2FqRs%3D","updated":"2014-01-11 00:27:32.000000000","message":"my bad.. Thanks","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUH%2F%2FQrU%3D","line":33,"updated":"2014-01-15 19:08:22.000000000","message":"it seems that you forgot to change it to five  :-)","commit_id":"b2ab4c53cb01de708f8d8c1fbf33dbc26bfee500"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict has following three parameters"},{"line_number":34,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":35,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":36,"context_line":"# 2)_boolean: require preventing mac spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUH%2F%2FQoQ%3D","line":33,"in_reply_to":"AAAAUH%2F%2FQrU%3D","updated":"2014-01-15 19:12:54.000000000","message":"Done","commit_id":"b2ab4c53cb01de708f8d8c1fbf33dbc26bfee500"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"# The keys below are used in the VIF_DETAILS attribute to convey"},{"line_number":38,"context_line":"# information to the VIF driver."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# VIF Security related parameters"},{"line_number":41,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":42,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":43,"context_line":"# 2)_boolean: require preventing arp spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAWH%2F%2Br%2F0%3D","line":40,"updated":"2014-03-25 03:03:23.000000000","message":"Could you elaborate on how these parameters are consumed and interpreted? \nI\u0027m guessing that vif driver in nova-compute would read these config and set up the host accordingly, but it\u0027s not clearly explained.","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"# The keys below are used in the VIF_DETAILS attribute to convey"},{"line_number":38,"context_line":"# information to the VIF driver."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# VIF Security related parameters"},{"line_number":41,"context_line":"# 1) boolean: require security groups in host side or not"},{"line_number":42,"context_line":"REQUIRE_SECURITYGROUP \u003d \u0027require_securitygroup\u0027"},{"line_number":43,"context_line":"# 2)_boolean: require preventing arp spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAWH%2F%2BrtE%3D","line":40,"in_reply_to":"AAAAWH%2F%2Br%2F0%3D","updated":"2014-03-25 05:31:00.000000000","message":"Sure. i\u0027ll update comment","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"},{"author":{"_account_id":7317,"name":"Bo Lin","email":"linb@vmware.com","username":"berlin"},"change_message_id":"2fd6f7f4969b3058ee7f4708e7f2c6108c3a102d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# 5)_boolean: require preventing dhcp spoofing in host side or not"},{"line_number":52,"context_line":"PREVENT_DHCP_SPOOFING \u003d \u0027prevent_dhcp_spoofing\u0027"},{"line_number":53,"context_line":"# 6) boolean: require iptables in host side or not."},{"line_number":54,"context_line":"# Some VIF impmeneation such as OVS don\u0027t support iptables. We need to used"},{"line_number":55,"context_line":"# hyvrid briding in that case. Nova will use this value for the decision."},{"line_number":56,"context_line":"REQUIRE_IPTABLES \u003d \u0027require_iptables\u0027"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAWH%2F%2Bhl0%3D","line":54,"updated":"2014-03-26 07:15:53.000000000","message":"nit: \"need to use\"","commit_id":"ef5598a29b5a710202670575a9022e644879025a"},{"author":{"_account_id":13670,"name":"ANish","email":"anish2good@yahoo.co.in"},"change_message_id":"932f6a9f5a2aa8571cbb4aabb51773e386a34581","unresolved":false,"context_lines":[{"line_number":54,"context_line":"# Some VIF impmeneation such as OVS don\u0027t support iptables. We need to used"},{"line_number":55,"context_line":"# hyvrid briding in that case. Nova will use this value for the decision."},{"line_number":56,"context_line":"REQUIRE_IPTABLES \u003d \u0027require_iptables\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"VIF_TYPE_UNBOUND \u003d \u0027unbound\u0027"},{"line_number":60,"context_line":"VIF_TYPE_BINDING_FAILED \u003d \u0027binding_failed\u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a890539_5e7f2666","line":57,"updated":"2014-11-24 06:10:29.000000000","message":"Do we required to prevent DNS Spoofing or Port Stealing here ?","commit_id":"ef5598a29b5a710202670575a9022e644879025a"}],"neutron/plugins/bigswitch/plugin.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"from neutron.plugins.bigswitch import extensions"},{"line_number":81,"context_line":"from neutron.plugins.bigswitch import routerrule_db"},{"line_number":82,"context_line":"from neutron.plugins.bigswitch.version import version_string_with_vcs"},{"line_number":83,"context_line":"from neutron.plugins.common import security_group"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9gmw%3D","line":83,"updated":"2013-12-10 19:45:02.000000000","message":"L83 can be removed if the latter suggestion is used.","commit_id":"ccdf21213d7ddb3bdc021e8ec50a9f92f8e9d986"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"from neutron.plugins.bigswitch import extensions"},{"line_number":81,"context_line":"from neutron.plugins.bigswitch import routerrule_db"},{"line_number":82,"context_line":"from neutron.plugins.bigswitch.version import version_string_with_vcs"},{"line_number":83,"context_line":"from neutron.plugins.common import security_group"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9gHk%3D","line":83,"in_reply_to":"AAAATn%2F9gmw%3D","updated":"2013-12-10 21:31:46.000000000","message":"Done","commit_id":"ccdf21213d7ddb3bdc021e8ec50a9f92f8e9d986"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":1296,"context_line":"            if override:"},{"line_number":1297,"context_line":"                cfg_vif_type \u003d override"},{"line_number":1298,"context_line":"        port[portbindings.VIF_TYPE] \u003d cfg_vif_type"},{"line_number":1299,"context_line":"        security_group.extend_port_binding(port)"},{"line_number":1300,"context_line":"        return port"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"    def _check_hostvif_override(self, hostid):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9gnI%3D","line":1299,"updated":"2013-12-10 19:45:02.000000000","message":"It might be better to directly set here:\n \n port[portbindings.VIF_SECURITY] \u003d {\n   portbindings.REQUIRE_SECURITYGROUP: True,\n   portbindings.PREVENT_MAC_SPOOFING: True,\n   portbindings.PREVENT_IP_SPOOFING: True,\n    portbindings.PREVENT_DHCP_SPOOFING: True,\n    portbindings.REQUIRE_IPTABLES: True,\n }","commit_id":"ccdf21213d7ddb3bdc021e8ec50a9f92f8e9d986"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":1296,"context_line":"            if override:"},{"line_number":1297,"context_line":"                cfg_vif_type \u003d override"},{"line_number":1298,"context_line":"        port[portbindings.VIF_TYPE] \u003d cfg_vif_type"},{"line_number":1299,"context_line":"        security_group.extend_port_binding(port)"},{"line_number":1300,"context_line":"        return port"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"    def _check_hostvif_override(self, hostid):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAATn%2F9gHg%3D","line":1299,"in_reply_to":"AAAATn%2F9gnI%3D","updated":"2013-12-10 21:31:46.000000000","message":"Done","commit_id":"ccdf21213d7ddb3bdc021e8ec50a9f92f8e9d986"}],"neutron/plugins/common/security_group.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAATn%2F9nRI%3D","line":1,"updated":"2013-12-09 16:54:02.000000000","message":"This file is only related to agent-based security group implementation. How about renaming it to agent_security_group.py?","commit_id":"8d4dea41b3cf45daa0a90bffe843e3b606825955"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"def extend_port_binding(port):"},{"line_number":37,"context_line":"    driver \u003d importutils.import_class("},{"line_number":38,"context_line":"        cfg.CONF.SECURITYGROUP.firewall_driver)"},{"line_number":39,"context_line":"    driver.extend_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2F1cY%3D","line":39,"updated":"2014-01-07 22:14:38.000000000","message":"This still seems to require agent-side configuration to be available on the server. That might be OK for monolithic plugins, but what about when ml2 is simultaneously using multiple types of L2 agents?","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FslE%3D","line":3,"updated":"2014-01-10 00:30:06.000000000","message":"2013 -\u003e 2014","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FkOk%3D","line":3,"in_reply_to":"AAAAUH%2F%2FslE%3D","updated":"2014-01-11 00:27:32.000000000","message":"Done","commit_id":"1cef195927c33d9479b389506af3621f52d28e84"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUH%2F%2FQrM%3D","line":3,"updated":"2014-01-15 19:08:22.000000000","message":"same comment","commit_id":"b2ab4c53cb01de708f8d8c1fbf33dbc26bfee500"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUH%2F%2FQoA%3D","line":3,"in_reply_to":"AAAAUH%2F%2FQrM%3D","updated":"2014-01-15 19:12:54.000000000","message":"Done","commit_id":"b2ab4c53cb01de708f8d8c1fbf33dbc26bfee500"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"unresolved":false,"context_lines":[{"line_number":51,"context_line":"    if not is_firewall_enabled():"},{"line_number":52,"context_line":"        LOG.debug(_(\u0027Disabled security-group extension.\u0027))"},{"line_number":53,"context_line":"        _ensure_extension_not_exist(\u0027security-group\u0027, aliases)"},{"line_number":54,"context_line":"        _ensure_extension_not_exist(\u0027allowed-address-pairs\u0027, aliases)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# Neutron requires all vif security functionalites on nova side"},{"line_number":57,"context_line":"ALL_VIF_SECURITY_CONFIG \u003d {"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAVn%2F%2B7qs%3D","line":54,"updated":"2014-03-11 07:37:38.000000000","message":"This extension should also be disable if one of PREVENT_MAC_SPOOFING or PREVENT_IP_SPOOFING is False independently of the firewalling is enabled.","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":51,"context_line":"    if not is_firewall_enabled():"},{"line_number":52,"context_line":"        LOG.debug(_(\u0027Disabled security-group extension.\u0027))"},{"line_number":53,"context_line":"        _ensure_extension_not_exist(\u0027security-group\u0027, aliases)"},{"line_number":54,"context_line":"        _ensure_extension_not_exist(\u0027allowed-address-pairs\u0027, aliases)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# Neutron requires all vif security functionalites on nova side"},{"line_number":57,"context_line":"ALL_VIF_SECURITY_CONFIG \u003d {"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAWH%2F%2Bsdw%3D","line":54,"in_reply_to":"AAAAVn%2F%2B7qs%3D","updated":"2014-03-25 01:10:24.000000000","message":"This fix is merged (This patch only moves the localtion), and I think it depends on each plugins decision.","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# IPtables based vif security configuration"},{"line_number":67,"context_line":"IPTABLES_BASED_VIF_SECURITY_CONFIG \u003d {"},{"line_number":68,"context_line":"    portbindings.REQUIRE_SECURITYGROUP: False,"},{"line_number":69,"context_line":"    portbindings.PREVENT_ARP_SPOOFING: True,"},{"line_number":70,"context_line":"    portbindings.PREVENT_MAC_SPOOFING: False,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAVn%2F%2F1IQ%3D","line":67,"updated":"2014-03-03 22:07:51.000000000","message":"Personally I think it\u0027s a little confusing to put the technology in the variable name here that \u0027might\u0027 be enforcing it","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# IPtables based vif security configuration"},{"line_number":67,"context_line":"IPTABLES_BASED_VIF_SECURITY_CONFIG \u003d {"},{"line_number":68,"context_line":"    portbindings.REQUIRE_SECURITYGROUP: False,"},{"line_number":69,"context_line":"    portbindings.PREVENT_ARP_SPOOFING: True,"},{"line_number":70,"context_line":"    portbindings.PREVENT_MAC_SPOOFING: False,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAWH%2F%2BseE%3D","line":67,"in_reply_to":"AAAAVn%2F%2F1IQ%3D","updated":"2014-03-25 01:10:24.000000000","message":"I agree, but this is issue from current architecture. We need specify iptables is needed or not.","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"    portbindings.PREVENT_MAC_SPOOFING: False,"},{"line_number":71,"context_line":"    portbindings.PREVENT_IP_SPOOFING: False,"},{"line_number":72,"context_line":"    portbindings.PREVENT_DHCP_SPOOFING: False,"},{"line_number":73,"context_line":"    portbindings.REQUIRE_IPTABLES: False"},{"line_number":74,"context_line":"}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"# No Iptables based vif security configuration"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAVn%2F%2Fqek%3D","line":73,"updated":"2014-03-04 19:30:05.000000000","message":"portbindings.REQUIRE_IPTABLES is not \u0027True\u0027 here?","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"    portbindings.PREVENT_MAC_SPOOFING: False,"},{"line_number":71,"context_line":"    portbindings.PREVENT_IP_SPOOFING: False,"},{"line_number":72,"context_line":"    portbindings.PREVENT_DHCP_SPOOFING: False,"},{"line_number":73,"context_line":"    portbindings.REQUIRE_IPTABLES: False"},{"line_number":74,"context_line":"}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"# No Iptables based vif security configuration"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAWH%2F%2BsdM%3D","line":73,"in_reply_to":"AAAAVn%2F%2Fqek%3D","updated":"2014-03-25 01:10:24.000000000","message":"Done","commit_id":"a82a5af74bc447e4fb8a19296bcab0aa148a9597"}],"neutron/plugins/midonet/plugin.py":[{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.base_binding_dict \u003d {"},{"line_number":237,"context_line":"            portbindings.VIF_TYPE: portbindings.VIF_TYPE_MIDONET,"},{"line_number":238,"context_line":"            portbindings.VIF_DETAILS: security_group.vif_security()}"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _get_provider_router(self):"},{"line_number":241,"context_line":"        if self.provider_router is None:"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAWH%2F%2Br9w%3D","line":238,"updated":"2014-03-25 03:03:23.000000000","message":"Thank you for taking care of changing our plugin. I appreciate it. \nWe don\u0027t need iptables to ensure those security.\nSo, I think NO_IPTABLES_VIF_SECURITY_CONFIG would do.","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.base_binding_dict \u003d {"},{"line_number":237,"context_line":"            portbindings.VIF_TYPE: portbindings.VIF_TYPE_MIDONET,"},{"line_number":238,"context_line":"            portbindings.VIF_DETAILS: security_group.vif_security()}"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _get_provider_router(self):"},{"line_number":241,"context_line":"        if self.provider_router is None:"}],"source_content_type":"text/x-python","patch_set":39,"id":"AAAAWH%2F%2BrtA%3D","line":238,"in_reply_to":"AAAAWH%2F%2Br9w%3D","updated":"2014-03-25 05:31:00.000000000","message":"Thanks! I\u0027ll update the code","commit_id":"e28b6514b14527a749398852e3e53311e34cecda"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"            record \u003d models.PortBinding("},{"line_number":71,"context_line":"                port_id\u003dport_id,"},{"line_number":72,"context_line":"                host\u003d\u0027\u0027,"},{"line_number":73,"context_line":"                vif_type\u003dportbindings.VIF_TYPE_UNBOUND)"},{"line_number":74,"context_line":"            session.add(record)"},{"line_number":75,"context_line":"        return record"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2F1dQ%3D","line":73,"updated":"2014-01-07 22:14:38.000000000","message":"I\u0027d get rid of vif_type too, and use extend_port_dict() on the bound MechanismDriver for this instead.","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"}],"neutron/plugins/ml2/driver_api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"unresolved":false,"context_lines":[{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        \"returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called when we return port dict to"},{"line_number":603,"context_line":"        user. Driver can add additional attributes for port_dict"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F%2Bp8%3D","line":600,"updated":"2014-01-05 15:54:46.000000000","message":"s/\"returns/:returns/","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        \"returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called when we return port dict to"},{"line_number":603,"context_line":"        user. Driver can add additional attributes for port_dict"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F9kI%3D","line":600,"in_reply_to":"AAAAUH%2F%2F%2Bp8%3D","updated":"2014-01-06 06:35:21.000000000","message":"Done","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        :returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called when we return port dict to"},{"line_number":603,"context_line":"        user. Driver can add additional attributes for port_dict"},{"line_number":604,"context_line":"        \"\"\""},{"line_number":605,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2F1es%3D","line":602,"updated":"2014-01-07 22:14:38.000000000","message":"This method is only called on the port\u0027s bound mechanism driver, right? The comment needs to make this clear with something like \"This method will be called on the bound MechanismDriver when ...\".","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        :returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called when we return port dict to"},{"line_number":603,"context_line":"        user. Driver can add additional attributes for port_dict"},{"line_number":604,"context_line":"        \"\"\""},{"line_number":605,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2FwLA%3D","line":602,"in_reply_to":"AAAAUH%2F%2F1es%3D","updated":"2014-01-08 22:34:41.000000000","message":"Done","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":596,"context_line":"        \"\"\"Extend port_dict"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        :returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called on the bound MechanismDriver when"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2BNVs%3D","line":599,"updated":"2014-01-29 04:27:11.000000000","message":"No need to pass port_dict since its available a context.current.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":599,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":600,"context_line":"        :returns: Return extend port dict"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        This method will be called on the bound MechanismDriver when"},{"line_number":603,"context_line":"        we return port dict to user."}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2FPCI%3D","line":600,"updated":"2014-01-29 04:27:11.000000000","message":"No need to return the port dictionary.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"neutron/plugins/ml2/driver_context.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def set_binding(self, segment_id, vif_type):"},{"line_number":110,"context_line":"        # REVISIT(rkukura): Pass extensible list of capabilities? Move"},{"line_number":111,"context_line":"        # vif_type and capabilities to methods on the bound mechanism"},{"line_number":112,"context_line":"        # driver?"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # TODO(rkukura) Verify binding allowed, segment in network"},{"line_number":115,"context_line":"        self._binding.segment \u003d segment_id"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2F1eM%3D","line":112,"updated":"2014-01-07 22:14:38.000000000","message":"This patch seems to address part of this REVISIT, so the comment should be updated. Also, why not address the entire REVISIT by having the mechanism drivers set VIF_TYPE as well as VIF_SECURITY in extend_port_dict()?","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def set_binding(self, segment_id, vif_type):"},{"line_number":110,"context_line":"        # REVISIT(rkukura): Pass extensible list of capabilities? Move"},{"line_number":111,"context_line":"        # vif_type and capabilities to methods on the bound mechanism"},{"line_number":112,"context_line":"        # driver?"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # TODO(rkukura) Verify binding allowed, segment in network"},{"line_number":115,"context_line":"        self._binding.segment \u003d segment_id"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2BNVM%3D","line":112,"updated":"2014-01-29 04:27:11.000000000","message":"This patch resolves at least part of this REVISIT.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"neutron/plugins/ml2/drivers/mech_agent.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def extend_port_dict(self, context, port_dict):"},{"line_number":108,"context_line":"        security_group.extend_port_binding("},{"line_number":109,"context_line":"            port_dict)"},{"line_number":110,"context_line":"        return port_dict"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2F1dk%3D","line":109,"updated":"2014-01-07 22:14:38.000000000","message":"How does this code know which MechanismDriver to return the proper VIF_SECURITY value for?","commit_id":"abee4179cfb2200814e7083c008262f5bee5fb9c"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":521,"context_line":"            try:"},{"line_number":522,"context_line":"                return driver.obj.extend_port_dict(context, port_dict)"},{"line_number":523,"context_line":"            except Exception:"},{"line_number":524,"context_line":"                LOG.exception(_(\"Mechanism driver %s failed in \""},{"line_number":525,"context_line":"                                \"extend port dict\"),"},{"line_number":526,"context_line":"                              driver.name)"},{"line_number":527,"context_line":"        return port_dict"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BT0s%3D","line":524,"updated":"2013-11-27 16:13:51.000000000","message":"failed in -\u003e failed to","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":521,"context_line":"            try:"},{"line_number":522,"context_line":"                return driver.obj.extend_port_dict(context, port_dict)"},{"line_number":523,"context_line":"            except Exception:"},{"line_number":524,"context_line":"                LOG.exception(_(\"Mechanism driver %s failed in \""},{"line_number":525,"context_line":"                                \"extend port dict\"),"},{"line_number":526,"context_line":"                              driver.name)"},{"line_number":527,"context_line":"        return port_dict"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BTCg%3D","line":524,"in_reply_to":"AAAATn%2F%2BT0s%3D","updated":"2013-11-27 18:37:45.000000000","message":"Done","commit_id":"4b07dcf8d2d5fe7d8e25db647d1cbdd077f5cabf"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":511,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":512,"context_line":"        \"returns: Return extend port dict"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        This method will be called when we return port dict to"},{"line_number":515,"context_line":"        user. Let MechanismDriver add additional attributes for port_dict"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F9Fo%3D","line":512,"updated":"2014-01-06 09:17:03.000000000","message":"s/\"returns/:returns/","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":511,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":512,"context_line":"        \"returns: Return extend port dict"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        This method will be called when we return port dict to"},{"line_number":515,"context_line":"        user. Let MechanismDriver add additional attributes for port_dict"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F%2F6as%3D","line":512,"in_reply_to":"AAAAUH%2F%2F9Fo%3D","updated":"2014-01-06 21:24:10.000000000","message":"Done","commit_id":"171ea7677dedc714d0f788b7c65e821da872894c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":508,"context_line":"        \"\"\"Extend port_dict"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":511,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":512,"context_line":"        :returns: Return extend port dict"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        This method will be called when we return port dict to"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2B0IA%3D","line":511,"updated":"2014-01-29 04:27:11.000000000","message":"The port_dict is accessible as context._port, so doesn\u0027t need to be passed separately.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        :param context: PortContext instance describing the port"},{"line_number":511,"context_line":"        :param port_dict: Port Dict returning to the client"},{"line_number":512,"context_line":"        :returns: Return extend port dict"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        This method will be called when we return port dict to"},{"line_number":515,"context_line":"        user. Let MechanismDriver add additional attributes for port_dict"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2FPEI%3D","line":512,"updated":"2014-01-29 04:27:11.000000000","message":"No need to return the port dict.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":700,"context_line":"        mech_context \u003d driver_context.PortContext("},{"line_number":701,"context_line":"            self, context, port_dict,"},{"line_number":702,"context_line":"            {\u0027id\u0027: port.network_id},"},{"line_number":703,"context_line":"            binding\u003dbinding)"},{"line_number":704,"context_line":"        return self.mechanism_manager.extend_port_dict("},{"line_number":705,"context_line":"            mech_context,"},{"line_number":706,"context_line":"            port_dict)"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2BNLw%3D","line":703,"updated":"2014-01-29 04:27:11.000000000","message":"Passing in the binding from the initial query is a good idea. It seems this can be done everywhere a PortContext is constructed, except maybe in create_port().","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":701,"context_line":"            self, context, port_dict,"},{"line_number":702,"context_line":"            {\u0027id\u0027: port.network_id},"},{"line_number":703,"context_line":"            binding\u003dbinding)"},{"line_number":704,"context_line":"        return self.mechanism_manager.extend_port_dict("},{"line_number":705,"context_line":"            mech_context,"},{"line_number":706,"context_line":"            port_dict)"},{"line_number":707,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2BguI%3D","line":704,"updated":"2014-01-29 04:27:11.000000000","message":"Doesn\u0027t self._fields() need to be called before returning the result, so that binding-supplied fields can be filtered?","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"neutron/plugins/mlnx/mlnx_plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"from neutron.plugins.mlnx.common import constants"},{"line_number":46,"context_line":"from neutron.plugins.mlnx.db import mlnx_db_v2 as db"},{"line_number":47,"context_line":"from neutron.plugins.mlnx import rpc_callbacks"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fngc%3D","line":48,"updated":"2013-09-02 12:15:03.000000000","message":"nit: unrelated","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"from neutron.plugins.mlnx.common import constants"},{"line_number":46,"context_line":"from neutron.plugins.mlnx.db import mlnx_db_v2 as db"},{"line_number":47,"context_line":"from neutron.plugins.mlnx import rpc_callbacks"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2Fl4I%3D","line":48,"in_reply_to":"AAAASn%2F%2Fngc%3D","updated":"2013-09-03 02:33:49.000000000","message":"Done","commit_id":"df01fedce6eef1cd960536d65265ec0107f67b64"}],"neutron/plugins/nicira/NeutronPlugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                          self.nvp_opts.nvp_gen_timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.base_binding_dict \u003d {"},{"line_number":205,"context_line":"            pbin.VIF_TYPE: pbin.VIF_TYPE_OVS}"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        db.configure_db()"},{"line_number":208,"context_line":"        # Extend the fault map"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fp0E%3D","line":205,"updated":"2013-09-01 11:38:51.000000000","message":"NVP plugin supports portbinding_db, so the common extend_port_binding_dict is called. The default firewall_driver is NoopDriver and as a result NVP plugin returns VIF_SECUIRTY REQUIRE_SECURITYGROUP returns True. It is not correct. NVP plugin supports security group.\n\nWe need to consider a case where a plugin does not use a plugin agent.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                          self.nvp_opts.nvp_gen_timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.base_binding_dict \u003d {"},{"line_number":205,"context_line":"            pbin.VIF_TYPE: pbin.VIF_TYPE_OVS}"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        db.configure_db()"},{"line_number":208,"context_line":"        # Extend the fault map"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fpgo%3D","line":205,"in_reply_to":"AAAASn%2F%2Fp0E%3D","updated":"2013-09-01 15:37:49.000000000","message":"Thanks\nI\u0027ll work on this.","commit_id":"2a4f16317d8a59f2cdafb1d84e127916d1d10ea4"}],"neutron/plugins/vmware/plugins/base.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"658db82c212ef8a288a610964fd3259e96439b38","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            self.nsx_opts.nsx_gen_timeout)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self.base_binding_dict \u003d {"},{"line_number":163,"context_line":"            pbin.VIF_TYPE: pbin.VIF_TYPE_OVS,"},{"line_number":164,"context_line":"            pbin.VIF_DETAILS: security_group.vif_security("},{"line_number":165,"context_line":"                security_group.NO_IPTABLES_VIF_SECURITY_CONFIG)}"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAWH%2F%2Bj2M%3D","line":163,"updated":"2014-03-25 22:28:04.000000000","message":"to me this information would be enough to let nova discriminate whether do \"normal\" or \"hybrid\" plugging.\n\nWe can take care of anti spoofing later.","commit_id":"ef5598a29b5a710202670575a9022e644879025a"}],"neutron/tests/unit/ml2/drivers/mechanism_logger.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self._log_port_call(\"unbind_port\", context)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def extend_port_dict(self, context, port_dict):"},{"line_number":121,"context_line":"        return port_dict"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2FPB4%3D","line":121,"updated":"2014-01-29 04:27:11.000000000","message":"Not needed if no return value","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"neutron/tests/unit/ml2/drivers/mechanism_test.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def unbind_port(self, context):"},{"line_number":128,"context_line":"        self._check_port_context(context, False)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def extend_port_dict(self, context, port_dict):"},{"line_number":131,"context_line":"        return port_dict"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAUH%2F%2BNMo%3D","line":130,"updated":"2014-01-29 04:27:11.000000000","message":"Not needed if no return value.","commit_id":"4b61f9f0c41f905e091c89cc75c719a9b2f2461d"}],"quantum/agent/firewall.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            self.filter_defer_apply_off()"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def extend_port_binding(self, port):"},{"line_number":112,"context_line":"        \"\"\" extend port binding dict\"\"\""},{"line_number":113,"context_line":"        pass"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B5XA%3D","line":112,"updated":"2013-02-15 05:36:04.000000000","message":"Remove a space before \"extend\" and capitalize the first work.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            self.filter_defer_apply_off()"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def extend_port_binding(self, port):"},{"line_number":112,"context_line":"        \"\"\" extend port binding dict\"\"\""},{"line_number":113,"context_line":"        pass"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4Ms%3D","line":112,"in_reply_to":"AAAAM3%2F%2B5XA%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":143,"context_line":"        return {}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def extend_port_binding(self, port):"},{"line_number":146,"context_line":"        \"\"\" If the port hasn\u0027t have binding:vif_security attributes,"},{"line_number":147,"context_line":"        it means quantum requires securitygroup and preventing spoofing"},{"line_number":148,"context_line":"        support on client side."},{"line_number":149,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B2WU%3D","line":146,"updated":"2013-02-17 06:03:29.000000000","message":"hasn\u0027t -\u003e doesn\u0027t","commit_id":"bdb387fb9a40c781fbd44d070b286d536f2f9e48"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"def extend_port_binding(port):"},{"line_number":154,"context_line":"    firewall \u003d importutils.import_object("},{"line_number":155,"context_line":"        cfg.CONF.SECURITYGROUP.firewall_driver)"},{"line_number":156,"context_line":"    firewall.extend_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B2UM%3D","line":155,"updated":"2013-02-17 06:51:51.000000000","message":"This instances a firewall driver object, is that needed? How about use static method for all driver\u0027s \u0027extend_port_binding\u0027? Then we just \u0027import_class\u0027 at here.","commit_id":"bdb387fb9a40c781fbd44d070b286d536f2f9e48"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4395504f1e9960f17fafe2b1d19417efaba202d2","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def extend_port_binding(self, port):"},{"line_number":111,"context_line":"        \"\"\"Extend port binding dict\"\"\""},{"line_number":112,"context_line":"        pass"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Bjmk%3D","line":112,"updated":"2013-02-27 15:36:52.000000000","message":"If you use a docstring you don\u0027t need pass","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"b99d8c30b31840c2994125a2482df4a6da064147","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def extend_port_binding(self, port):"},{"line_number":111,"context_line":"        \"\"\"Extend port binding dict\"\"\""},{"line_number":112,"context_line":"        pass"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class NoopFirewallDriver(FirewallDriver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F%2Bjg%3D","line":112,"in_reply_to":"AAAAM3%2F%2Bjmk%3D","updated":"2013-02-28 20:06:52.000000000","message":"Done","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4395504f1e9960f17fafe2b1d19417efaba202d2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        it means quantum requires securitygroup and preventing spoofing"},{"line_number":148,"context_line":"        support on client side."},{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        pass"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Bjms%3D","line":150,"updated":"2013-02-27 15:36:52.000000000","message":"If you use a docstring, you don\u0027t need pass","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"b99d8c30b31840c2994125a2482df4a6da064147","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        it means quantum requires securitygroup and preventing spoofing"},{"line_number":148,"context_line":"        support on client side."},{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        pass"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F%2Bjc%3D","line":150,"in_reply_to":"AAAAM3%2F%2Bjms%3D","updated":"2013-02-28 20:06:52.000000000","message":"Done","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c08139f90ddeb4fd09b6e48ce671174fa5e4d131","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\"If the port dosen\u0027t have binding:vif_security attributes,"},{"line_number":149,"context_line":"        it means quantum requires securitygroup and preventing spoofing"},{"line_number":150,"context_line":"        support on client side."},{"line_number":151,"context_line":"        \"\"\""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def extend_port_binding(port):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2F0Tw%3D","line":151,"updated":"2013-05-22 12:07:00.000000000","message":"I don\u0027t think binding:vif_security attribute is optional. Why don\u0027t we return vif_security attribute?\n\nThe comment does not follow the docstring convention: summary at the first line, then an empty line and detail description at the third line or below.","commit_id":"ea4f3086253dacfa2b5058c4ddc9ce8277091128"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c08139f90ddeb4fd09b6e48ce671174fa5e4d131","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def extend_port_binding(port):"},{"line_number":155,"context_line":"    firewall \u003d importutils.import_class("},{"line_number":156,"context_line":"        cfg.CONF.SECURITYGROUP.firewall_driver)"},{"line_number":157,"context_line":"    firewall.extend_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2F0TA%3D","line":156,"updated":"2013-05-22 12:07:00.000000000","message":"It costs very much since it is called whenever port operation is called. It is better to cache a reference to a corresponding method.\n\nIn addition, this module now depends on firewall_driver configuration. It is better to move the definition here from agent/securitygroups_rpc.py.","commit_id":"ea4f3086253dacfa2b5058c4ddc9ce8277091128"}],"quantum/db/portbindings_db.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c08139f90ddeb4fd09b6e48ce671174fa5e4d131","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import sqlalchemy as sa"},{"line_number":20,"context_line":"from sqlalchemy import orm"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from quantum.agent import firewall"},{"line_number":23,"context_line":"from quantum.api.v2 import attributes"},{"line_number":24,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":25,"context_line":"from quantum.db import model_base"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2F0W4%3D","line":22,"updated":"2013-05-22 12:07:00.000000000","message":"It is a little tricky to import a module under \"agent\" directory, though all related things in one place is good....","commit_id":"ea4f3086253dacfa2b5058c4ddc9ce8277091128"}],"quantum/extensions/portbindings.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2856757f84247c1d680f285daaa6c8056e07d054","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# The profile will be a dictionary that enables the application running"},{"line_number":28,"context_line":"# on the specific host to pass and receive vif port specific information to"},{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# require iptables in host side or not"},{"line_number":32,"context_line":"VIF_REQUIRE_IPTABLES \u003d \u0027binding:vif_require_iptables\u0027"},{"line_number":33,"context_line":"# require preventing spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B7Ho%3D","line":30,"updated":"2013-02-14 09:30:56.000000000","message":"Maybe we should consider this to be a diction that has the vif_security policy? Similar to the vif profile?\nI think that it could be cleaner","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# The profile will be a dictionary that enables the application running"},{"line_number":28,"context_line":"# on the specific host to pass and receive vif port specific information to"},{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# require iptables in host side or not"},{"line_number":32,"context_line":"VIF_REQUIRE_IPTABLES \u003d \u0027binding:vif_require_iptables\u0027"},{"line_number":33,"context_line":"# require preventing spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4NU%3D","line":30,"in_reply_to":"AAAAM3%2F%2B5X8%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# The profile will be a dictionary that enables the application running"},{"line_number":28,"context_line":"# on the specific host to pass and receive vif port specific information to"},{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# require iptables in host side or not"},{"line_number":32,"context_line":"VIF_REQUIRE_IPTABLES \u003d \u0027binding:vif_require_iptables\u0027"},{"line_number":33,"context_line":"# require preventing spoofing in host side or not"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B5X8%3D","line":30,"in_reply_to":"AAAAM3%2F%2B7Ho%3D","updated":"2013-02-15 05:36:04.000000000","message":"dict is easier to understand. I second it.\n\nIn addition, we have now dict validation, so we can validate members of a dict","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# require preventing spoofing in host side or not"},{"line_number":34,"context_line":"VIF_PREVENT_SPOOFING \u003d \u0027binding:vif_prevent_spoofing\u0027"},{"line_number":35,"context_line":"# require security groups in host side or not"},{"line_number":36,"context_line":"VIF_REQUIRE_SECURITYGROUP \u003d \u0027binding:vif_require_securitygroup\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"CAP_PORT_FILTER \u003d \u0027port_filter\u0027"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B5V4%3D","line":36,"updated":"2013-02-15 05:36:04.000000000","message":"In all other files, the order of these attributes is SECURITYGROUP, SPOOFING, IPTABLES.\nCould you change the order for consistency?","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# require preventing spoofing in host side or not"},{"line_number":34,"context_line":"VIF_PREVENT_SPOOFING \u003d \u0027binding:vif_prevent_spoofing\u0027"},{"line_number":35,"context_line":"# require security groups in host side or not"},{"line_number":36,"context_line":"VIF_REQUIRE_SECURITYGROUP \u003d \u0027binding:vif_require_securitygroup\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"CAP_PORT_FILTER \u003d \u0027port_filter\u0027"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4NI%3D","line":36,"in_reply_to":"AAAAM3%2F%2B5V4%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":59,"context_line":"        VIF_REQUIRE_IPTABLES: {\u0027allow_post\u0027: False,"},{"line_number":60,"context_line":"                               \u0027allow_put\u0027: False,"},{"line_number":61,"context_line":"                               \u0027default\u0027: True,"},{"line_number":62,"context_line":"                               \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":63,"context_line":"                               \u0027is_visible\u0027: True},"},{"line_number":64,"context_line":"        VIF_PREVENT_SPOOFING: {\u0027allow_post\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B6VQ%3D","line":61,"updated":"2013-02-15 05:36:04.000000000","message":"I think ATTR_NOT_SPECIFIED is more suitable.\nThis attribute is read-only, thus the default value here does not have meaning so much.\nThe default value should be determined by each plugin.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":59,"context_line":"        VIF_REQUIRE_IPTABLES: {\u0027allow_post\u0027: False,"},{"line_number":60,"context_line":"                               \u0027allow_put\u0027: False,"},{"line_number":61,"context_line":"                               \u0027default\u0027: True,"},{"line_number":62,"context_line":"                               \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":63,"context_line":"                               \u0027is_visible\u0027: True},"},{"line_number":64,"context_line":"        VIF_PREVENT_SPOOFING: {\u0027allow_post\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4M8%3D","line":61,"in_reply_to":"AAAAM3%2F%2B6VQ%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        VIF_REQUIRE_IPTABLES: {\u0027allow_post\u0027: False,"},{"line_number":60,"context_line":"                               \u0027allow_put\u0027: False,"},{"line_number":61,"context_line":"                               \u0027default\u0027: True,"},{"line_number":62,"context_line":"                               \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":63,"context_line":"                               \u0027is_visible\u0027: True},"},{"line_number":64,"context_line":"        VIF_PREVENT_SPOOFING: {\u0027allow_post\u0027: False,"},{"line_number":65,"context_line":"                               \u0027allow_put\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B6VM%3D","line":62,"updated":"2013-02-15 05:36:04.000000000","message":"Convert_to is unnecessary since it is read-only.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        VIF_REQUIRE_IPTABLES: {\u0027allow_post\u0027: False,"},{"line_number":60,"context_line":"                               \u0027allow_put\u0027: False,"},{"line_number":61,"context_line":"                               \u0027default\u0027: True,"},{"line_number":62,"context_line":"                               \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":63,"context_line":"                               \u0027is_visible\u0027: True},"},{"line_number":64,"context_line":"        VIF_PREVENT_SPOOFING: {\u0027allow_post\u0027: False,"},{"line_number":65,"context_line":"                               \u0027allow_put\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4M4%3D","line":62,"in_reply_to":"AAAAM3%2F%2B6VM%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"52a7d9acae95ffe550c200b456fa8e67e0a3fcfa","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# on the specific host to pass and receive vif port specific information to"},{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict have following three parameters"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B2%2BI%3D","line":31,"updated":"2013-02-17 05:50:57.000000000","message":"L.31-40 are related vif_security, so it is better to add a blank line before L.31 (and remove the blank line at L.34). It help us read the code.","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"e8c5acce37961ac2a4e6e2a5a3d96e83bbd07ffe","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# on the specific host to pass and receive vif port specific information to"},{"line_number":29,"context_line":"# the plugin."},{"line_number":30,"context_line":"PROFILE \u003d \u0027binding:profile\u0027"},{"line_number":31,"context_line":"# Security requirement for the vif"},{"line_number":32,"context_line":"VIF_SECURITY \u003d \u0027binding:vif_security\u0027"},{"line_number":33,"context_line":"# vif_security dict have following three parameters"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B100%3D","line":31,"in_reply_to":"AAAAM3%2F%2B2%2BI%3D","updated":"2013-02-17 21:43:13.000000000","message":"Done","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"52a7d9acae95ffe550c200b456fa8e67e0a3fcfa","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                  \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":59,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":60,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":61,"context_line":"        #VIF_SECURITY is a read-only parameter, so no need to validate"},{"line_number":62,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":63,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":64,"context_line":"                       \u0027is_visible\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B2%2BE%3D","line":61,"updated":"2013-02-17 05:50:57.000000000","message":"Agree with you.","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"e8c5acce37961ac2a4e6e2a5a3d96e83bbd07ffe","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                  \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":59,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":60,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":61,"context_line":"        #VIF_SECURITY is a read-only parameter, so no need to validate"},{"line_number":62,"context_line":"        VIF_SECURITY: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":63,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":64,"context_line":"                       \u0027is_visible\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B10w%3D","line":61,"in_reply_to":"AAAAM3%2F%2B2%2BE%3D","updated":"2013-02-17 21:43:13.000000000","message":"Done","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4395504f1e9960f17fafe2b1d19417efaba202d2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                  \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":55,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":56,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":57,"context_line":"        CAPABILITIES: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":58,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":59,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":60,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Bjm4%3D","side":"PARENT","line":57,"updated":"2013-02-27 15:36:52.000000000","message":"I agree with adding the new attributes, but probably this does not necessarily mean we need to remove capabilities, which could be a useful blob of key-value pairs aniway","commit_id":"7634287b10ad928f5aafc5cbfc1484a3856540a0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"b99d8c30b31840c2994125a2482df4a6da064147","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                  \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":55,"context_line":"                  \u0027validate\u0027: {\u0027type:dict\u0027: None},"},{"line_number":56,"context_line":"                  \u0027is_visible\u0027: True},"},{"line_number":57,"context_line":"        CAPABILITIES: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":58,"context_line":"                       \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":59,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":60,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F%2BjA%3D","side":"PARENT","line":57,"in_reply_to":"AAAAM3%2F%2Bjm4%3D","updated":"2013-02-28 20:06:52.000000000","message":"Needs discussion. I\u0027m tend to agree with you point. However CAPABILITIES is not used anymore, so Is that good thing to keep unused properties in the code? We can add this property if it is needed later.","commit_id":"7634287b10ad928f5aafc5cbfc1484a3856540a0"}],"quantum/plugins/nec/nec_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            port[portbindings.VIF_TYPE] \u003d portbindings.VIF_TYPE_OVS"},{"line_number":332,"context_line":"            port[portbindings.VIF_REQUIRE_SECURITYGROUP] \u003d True"},{"line_number":333,"context_line":"            port[portbindings.VIF_PREVENT_SPOOFING] \u003d True"},{"line_number":334,"context_line":"            port[portbindings.VIF_REQUIRE_IPTABLES] \u003d False"},{"line_number":335,"context_line":"        return port"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def create_port(self, context, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B6Uo%3D","line":334,"updated":"2013-02-15 05:36:04.000000000","message":"iptables patch has been merged, so these values should be same as OVS plugin. NEC plugin now uses iptables-based security group, so hybrid vif driver is required.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            port[portbindings.VIF_TYPE] \u003d portbindings.VIF_TYPE_OVS"},{"line_number":332,"context_line":"            port[portbindings.VIF_REQUIRE_SECURITYGROUP] \u003d True"},{"line_number":333,"context_line":"            port[portbindings.VIF_PREVENT_SPOOFING] \u003d True"},{"line_number":334,"context_line":"            port[portbindings.VIF_REQUIRE_IPTABLES] \u003d False"},{"line_number":335,"context_line":"        return port"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def create_port(self, context, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4MA%3D","line":334,"in_reply_to":"AAAAM3%2F%2B6Uo%3D","updated":"2013-02-15 18:56:16.000000000","message":"Done","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"}],"quantum/tests/unit/_test_extension_portbindings.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"import contextlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#Needed for registring conf"},{"line_number":24,"context_line":"from quantum.agent import securitygroups_rpc"},{"line_number":25,"context_line":"from quantum import context"},{"line_number":26,"context_line":"from quantum.extensions import portbindings"},{"line_number":27,"context_line":"from quantum.manager import QuantumManager"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B2cw%3D","line":24,"updated":"2013-02-17 02:09:23.000000000","message":"This is the incorrect way to register that config option is in use.  You\u0027ll need the latest cfg from Oslo:\n\ncfg.CONF.import_opt(\u0027firewall_driver\u0027, \u0027quantum.agent.securitygroups_rpc\u0027, group\u003d\u0027SECURITYGROUP\u0027)","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"adfd82d00fdbb91ec1c8d5927238deda0cf57301","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import contextlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#Needed for registring conf"},{"line_number":24,"context_line":"from quantum.agent import securitygroups_rpc"},{"line_number":25,"context_line":"from quantum import context"},{"line_number":26,"context_line":"from quantum.extensions import portbindings"},{"line_number":27,"context_line":"from quantum.manager import QuantumManager"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B2Xg%3D","line":24,"in_reply_to":"AAAAM3%2F%2B2cw%3D","updated":"2013-02-17 05:16:06.000000000","message":"I got it. Thanks!","commit_id":"6288373f79ff55a5fe53015d2bb88d3b98e5504d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4395504f1e9960f17fafe2b1d19417efaba202d2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    # VIF_TYPE must be overridden according to plugin vif_type"},{"line_number":49,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_OTHER"},{"line_number":50,"context_line":"    # Expected value of VIF security requirements"},{"line_number":51,"context_line":"    VIF_SECURITY_EXPECTED \u003d False"},{"line_number":52,"context_line":"    # FirewallDrivers"},{"line_number":53,"context_line":"    SUPPORTED_FIREWALL_DRIVERS \u003d []"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2BjmA%3D","line":51,"updated":"2013-02-27 15:36:52.000000000","message":"Where is this set to true? It looks always False to me.\nIt this is true, line 61-62 and 120-124 are never hit.","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"b99d8c30b31840c2994125a2482df4a6da064147","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    # VIF_TYPE must be overridden according to plugin vif_type"},{"line_number":49,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_OTHER"},{"line_number":50,"context_line":"    # Expected value of VIF security requirements"},{"line_number":51,"context_line":"    VIF_SECURITY_EXPECTED \u003d False"},{"line_number":52,"context_line":"    # FirewallDrivers"},{"line_number":53,"context_line":"    SUPPORTED_FIREWALL_DRIVERS \u003d []"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAANH%2F%2F%2BjM%3D","line":51,"in_reply_to":"AAAAM3%2F%2BjmA%3D","updated":"2013-02-28 20:06:52.000000000","message":"Subclass of this testcase will set it True.","commit_id":"36ce37874fab68577bed49ee4d4bd2317e675f00"}],"quantum/tests/unit/linuxbridge/test_linuxbridge_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                             LinuxBridgePluginV2TestCase,"},{"line_number":44,"context_line":"                             test_bindings.PortBindingsTestCase):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_BRIDGE"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_update_port_status_build(self):"},{"line_number":49,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B5V0%3D","line":46,"updated":"2013-02-15 05:36:04.000000000","message":"Please see my comment in test ovs plugin.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                             LinuxBridgePluginV2TestCase,"},{"line_number":44,"context_line":"                             test_bindings.PortBindingsTestCase):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_BRIDGE"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_update_port_status_build(self):"},{"line_number":49,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4ME%3D","line":46,"in_reply_to":"AAAAM3%2F%2B5V0%3D","updated":"2013-02-15 18:56:16.000000000","message":"gotcha","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"}],"quantum/tests/unit/openvswitch/test_openvswitch_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"84f396c2e3e3a4b732a5a6c0111933e5cba6f4bc","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                             OpenvswitchPluginV2TestCase,"},{"line_number":43,"context_line":"                             test_bindings.PortBindingsTestCase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_OVS"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_update_port_status_build(self):"},{"line_number":48,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B5Xs%3D","line":45,"updated":"2013-02-15 05:36:04.000000000","message":"Don\u0027t we need to override VIF_EXPECTED here?\nI am afraid the test actually does not work.\n\niptables_firewall.py\nport[portbindings.VIF_REQUIRE_SECURITYGROUP] \u003d False\nport[portbindings.VIF_PREVENT_SPOOFING] \u003d False\nport[portbindings.VIF_REQUIRE_IPTABLES] \u003d True\n\n_test_extension_portbindings.py\nportbindings.VIF_REQUIRE_SECURITYGROUP: True\nportbindings.VIF_REQUIRE_IPTABLES: False\nportbindings.VIF_PREVENT_SPOOFING: True","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b808093e99dedb52443e700e9f745199c19818fb","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                             OpenvswitchPluginV2TestCase,"},{"line_number":43,"context_line":"                             test_bindings.PortBindingsTestCase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_OVS"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_update_port_status_build(self):"},{"line_number":48,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4GY%3D","line":45,"in_reply_to":"AAAAM3%2F%2B4MI%3D","updated":"2013-02-15 19:18:13.000000000","message":"I got it. It sounds nice to add tests for each firewall drivers","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"d02249109eaf8e4007e7ccdb18aee3051b9903ed","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                             OpenvswitchPluginV2TestCase,"},{"line_number":43,"context_line":"                             test_bindings.PortBindingsTestCase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    VIF_TYPE \u003d portbindings.VIF_TYPE_OVS"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_update_port_status_build(self):"},{"line_number":48,"context_line":"        with self.port() as port:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B4MI%3D","line":45,"in_reply_to":"AAAAM3%2F%2B5Xs%3D","updated":"2013-02-15 18:56:16.000000000","message":"For testing, we are using Noopfirewall driver now.\nso the Test is working.\nHowever I\u0027ll add test for each firewall filters.","commit_id":"ed12f29e7667c0f38ac8d176e8a3511cf650b6ef"}]}
