)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"0fe5a77bb282b183e9d71110a612ba0ed461d94f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-11-29 00:38:55 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support binding:vif_security parameter in neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Configure filtering rule based on port binding configration"},{"line_number":10,"context_line":"in neturon"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F9Ldo%3D","line":8,"updated":"2013-12-15 16:46:56.000000000","message":"I\u0027d like to see a much clearer commit message on what is being changed and why.  This is brief to the point of almost meaningless to a reviewer.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e19c5c00dc73475dd44758e5874c2d34681f59c3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support binding:vif_security parameter in neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Configure filtering rule based on port binding configration"},{"line_number":10,"context_line":"in neturon. nova can say to libvirt which type of spoofing (ip, mac,"},{"line_number":11,"context_line":"dhcp) should be used."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes creation of qbr bridge and veth pairs on neutron demands by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2ByR8%3D","line":10,"updated":"2014-03-12 06:35:04.000000000","message":"typo: neturon--\u003eneutron","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support binding:vif_security parameter in neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Configure filtering rule based on port binding configration"},{"line_number":10,"context_line":"in neturon. nova can say to libvirt which type of spoofing (ip, mac,"},{"line_number":11,"context_line":"dhcp) should be used."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes creation of qbr bridge and veth pairs on neutron demands by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAWH%2F%2Bltw%3D","line":10,"in_reply_to":"AAAAVn%2F%2ByR8%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"}],"nova/network/model.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"22116aeceeb909b2ff168afc1f3e1ba259085f66","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    def __init__(self, id\u003dNone, address\u003dNone, network\u003dNone, type\u003dNone,"},{"line_number":234,"context_line":"                 devname\u003dNone, ovs_interfaceid\u003dNone,"},{"line_number":235,"context_line":"                 qbh_params\u003dNone, qbg_params\u003dNone,"},{"line_number":236,"context_line":"                 require_security_group\u003dTrue,"},{"line_number":237,"context_line":"                 require_iptables\u003dTrue,"},{"line_number":238,"context_line":"                 prevent_mac_spoofing\u003dTrue,"},{"line_number":239,"context_line":"                 prevent_ip_spoofing\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2Fqaw%3D","line":236,"updated":"2013-08-31 20:49:29.000000000","message":"why do we need this in nova? This all seems like neutrons job to handle","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    def __init__(self, id\u003dNone, address\u003dNone, network\u003dNone, type\u003dNone,"},{"line_number":234,"context_line":"                 devname\u003dNone, ovs_interfaceid\u003dNone,"},{"line_number":235,"context_line":"                 qbh_params\u003dNone, qbg_params\u003dNone,"},{"line_number":236,"context_line":"                 require_security_group\u003dTrue,"},{"line_number":237,"context_line":"                 require_iptables\u003dTrue,"},{"line_number":238,"context_line":"                 prevent_mac_spoofing\u003dTrue,"},{"line_number":239,"context_line":"                 prevent_ip_spoofing\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqHc%3D","line":236,"in_reply_to":"AAAASn%2F%2Fqaw%3D","updated":"2013-09-01 04:18:22.000000000","message":"This can be read as neutron saying,\n\"Hey Nova, please enable your security group function\"\nPlease also check discussions in bug report","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"181759421cdfded336cc07ccb501b9e8206a4cba","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self[\u0027ovs_interfaceid\u0027] \u003d ovs_interfaceid"},{"line_number":251,"context_line":"        self[\u0027qbh_params\u0027] \u003d qbh_params"},{"line_number":252,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":253,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":254,"context_line":"        self[\u0027require_security_group\u0027] \u003d require_security_group"},{"line_number":255,"context_line":"        self[\u0027require_iptables\u0027] \u003d require_iptables"},{"line_number":256,"context_line":"        self[\u0027prevent_mac_spoofing\u0027] \u003d prevent_mac_spoofing"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqpU%3D","line":253,"updated":"2013-08-31 17:18:57.000000000","message":"this line appears twice","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self[\u0027ovs_interfaceid\u0027] \u003d ovs_interfaceid"},{"line_number":251,"context_line":"        self[\u0027qbh_params\u0027] \u003d qbh_params"},{"line_number":252,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":253,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":254,"context_line":"        self[\u0027require_security_group\u0027] \u003d require_security_group"},{"line_number":255,"context_line":"        self[\u0027require_iptables\u0027] \u003d require_iptables"},{"line_number":256,"context_line":"        self[\u0027prevent_mac_spoofing\u0027] \u003d prevent_mac_spoofing"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqHY%3D","line":253,"in_reply_to":"AAAASn%2F%2FqpU%3D","updated":"2013-09-01 04:18:22.000000000","message":"Done","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"181759421cdfded336cc07ccb501b9e8206a4cba","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        self[\u0027prevent_mac_spoofing\u0027] \u003d prevent_mac_spoofing"},{"line_number":257,"context_line":"        self[\u0027prevent_ip_spoofing\u0027] \u003d prevent_ip_spoofing"},{"line_number":258,"context_line":"        self[\u0027prevent_dhcp_spoofing\u0027] \u003d prevent_dhcp_spoofing"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self._set_meta(kwargs)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def __eq__(self, other):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqpM%3D","line":259,"updated":"2013-08-31 17:18:57.000000000","message":"would it be worth considering putting lines 254-259 in a dictionary here. \nself[\u0027nw_fileter\u0027 \u003d {\u0027require_security_group\u0027: require_security_group,...]","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        self[\u0027prevent_mac_spoofing\u0027] \u003d prevent_mac_spoofing"},{"line_number":257,"context_line":"        self[\u0027prevent_ip_spoofing\u0027] \u003d prevent_ip_spoofing"},{"line_number":258,"context_line":"        self[\u0027prevent_dhcp_spoofing\u0027] \u003d prevent_dhcp_spoofing"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self._set_meta(kwargs)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def __eq__(self, other):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqHU%3D","line":259,"in_reply_to":"AAAASn%2F%2FqpM%3D","updated":"2013-09-01 04:18:22.000000000","message":"done","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8962c17d6a4e15963a4ac4bf1ba3315751940fc7","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        if not vif_security:"},{"line_number":253,"context_line":"            vif_security \u003d {"},{"line_number":254,"context_line":"                \u0027require_iptables\u0027: True,"},{"line_number":255,"context_line":"                \u0027require_security_group\u0027: True,"},{"line_number":256,"context_line":"                \u0027prevent_mac_spoofing\u0027: True,"},{"line_number":257,"context_line":"                \u0027prevent_ip_spoofing\u0027: True,"},{"line_number":258,"context_line":"                \u0027prevent_dhcp_spoofing\u0027: True"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9jKc%3D","line":255,"updated":"2013-12-10 11:27:05.000000000","message":"In Neutron \"require_securitygroup\" (w/o underscore) and in nova \"require_security_group\" (with underscore). As a result, VM launch will fail. After I changed all require_security_group to require_securitygroup, I succeeded to boot a VM.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"606db96de78bf65248c6d6f3f7e185991aa78543","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                \u0027prevent_ip_spoofing\u0027: True,"},{"line_number":258,"context_line":"                \u0027prevent_dhcp_spoofing\u0027: True"},{"line_number":259,"context_line":"            }"},{"line_number":260,"context_line":"        self[\u0027vif_security\u0027] \u003d vif_security"},{"line_number":261,"context_line":"        self._set_meta(kwargs)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def __eq__(self, other):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMqI%3D","line":260,"updated":"2013-11-29 10:20:19.000000000","message":"Can you add formal documentation block for the __init__ method describing the semantics of each field in this new parameter.  Bonus points if you want to also document the existing parameters we have in this method.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"606db96de78bf65248c6d6f3f7e185991aa78543","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        return (self[\u0027vif_security\u0027][\u0027prevent_mac_spoofing\u0027] or"},{"line_number":321,"context_line":"                self[\u0027vif_security\u0027][\u0027prevent_ip_spoofing\u0027] or"},{"line_number":322,"context_line":"                self[\u0027vif_security\u0027][\u0027prevent_dhcp_spoofing\u0027] or"},{"line_number":323,"context_line":"                self[\u0027vif_security\u0027][\u0027require_security_group\u0027])"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"def get_netmask(ip, subnet):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMo0%3D","line":323,"updated":"2013-11-29 10:20:19.000000000","message":"\u0027nw_filter\u0027 is really libvirt specific terminology. You\u0027re also hardcoding in the model here an assumption that all 4 of these parameters must be treated the same way.\n\nI think you should just expose each vif_security parameter directly as its own method.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8962c17d6a4e15963a4ac4bf1ba3315751940fc7","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        return (self[\u0027vif_security\u0027][\u0027prevent_mac_spoofing\u0027] or"},{"line_number":321,"context_line":"                self[\u0027vif_security\u0027][\u0027prevent_ip_spoofing\u0027] or"},{"line_number":322,"context_line":"                self[\u0027vif_security\u0027][\u0027prevent_dhcp_spoofing\u0027] or"},{"line_number":323,"context_line":"                self[\u0027vif_security\u0027][\u0027require_security_group\u0027])"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"def get_netmask(ip, subnet):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9jJc%3D","line":323,"in_reply_to":"AAAATn%2F%2BMo0%3D","updated":"2013-12-10 11:27:05.000000000","message":"Agree. this model is shared by all virt drivers.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                \u0027require_securitygroup\u0027: True,"},{"line_number":270,"context_line":"                \u0027prevent_mac_spoofing\u0027: True,"},{"line_number":271,"context_line":"                \u0027prevent_ip_spoofing\u0027: True,"},{"line_number":272,"context_line":"                \u0027prevent_dhcp_spoofing\u0027: True"},{"line_number":273,"context_line":"            }"},{"line_number":274,"context_line":"        self[\u0027vif_security\u0027] \u003d vif_security"},{"line_number":275,"context_line":"        self._set_meta(kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFJY%3D","line":272,"updated":"2014-01-17 17:59:24.000000000","message":"It is not clear to me why 5 distinct attributes would be required.\n\nI have a few quetions.\n\n1) What would be a case in which require_iptables is True but require_securitygroup is False?\n\n2) What does require_securitygroup means at all? In the neutron case, this is something which should be retrieved from port information. I guess that even in the nova case it is not needed to have an attribute on the vif to specify that the security group is required.\n\n3) Are there cases for doing IP spoofing but not MAC spoofing or viceversa? Also, in the neutron case, why would nova be interested in this at all - since neutron is supposed (and does) that? Moreover, in the nova case, I thought anti-spooging rules were applied by default. Isn\u0027t that the case anymore?","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                \u0027require_securitygroup\u0027: True,"},{"line_number":270,"context_line":"                \u0027prevent_mac_spoofing\u0027: True,"},{"line_number":271,"context_line":"                \u0027prevent_ip_spoofing\u0027: True,"},{"line_number":272,"context_line":"                \u0027prevent_dhcp_spoofing\u0027: True"},{"line_number":273,"context_line":"            }"},{"line_number":274,"context_line":"        self[\u0027vif_security\u0027] \u003d vif_security"},{"line_number":275,"context_line":"        self._set_meta(kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FYws%3D","line":272,"in_reply_to":"AAAAUH%2F%2FFJY%3D","updated":"2014-02-26 23:58:09.000000000","message":"1) When we use neutron side basic security group, we should setup require_security_group\u003dFalse and require_iptables\u003dTrue.\nso this is a valid use case. \n2) it means require nova side security group\n3) The combination isn\u0027t supported yet. I think it is good to show the list of supported anch-spoofing list.\nAlso, I\u0027m going to add arp-spoofing and, we are going to use nova side function for this.","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @property"},{"line_number":345,"context_line":"    def require_securitygroup(self):"},{"line_number":346,"context_line":"        return self[\u0027vif_security\u0027][\u0027require_securitygroup\u0027]"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_netmask(ip, subnet):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFI8%3D","line":346,"updated":"2014-01-17 17:59:24.000000000","message":"I am wondering if there is any particular reasons for not having all these attribute as first level attributes.","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @property"},{"line_number":345,"context_line":"    def require_securitygroup(self):"},{"line_number":346,"context_line":"        return self[\u0027vif_security\u0027][\u0027require_securitygroup\u0027]"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_netmask(ip, subnet):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVH%2F%2F%2F%2F4%3D","line":346,"in_reply_to":"AAAAUH%2F%2FFI8%3D","updated":"2014-02-26 23:58:09.000000000","message":"you are right","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"515d760164c6720c45907715afe4b94bee9d07b6","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        self[\u0027ovs_interfaceid\u0027] \u003d ovs_interfaceid"},{"line_number":264,"context_line":"        self[\u0027qbh_params\u0027] \u003d qbh_params"},{"line_number":265,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":266,"context_line":"        if vif_security:"},{"line_number":267,"context_line":"            for key, value in vif_security.items():"},{"line_number":268,"context_line":"                setattr(self, key, value)"},{"line_number":269,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B2zY%3D","line":266,"updated":"2014-03-11 17:49:26.000000000","message":"Can we just store the entire vif_details dictionary in the VIF model, and let the vif_type-specific code in vif.py look for whatever details it needs? That would reduce the code churn when new details need to be passed from a neutron plugin (or ML2 mechanism driver) to the VIF driver, such as for SR-IOV.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        self[\u0027ovs_interfaceid\u0027] \u003d ovs_interfaceid"},{"line_number":264,"context_line":"        self[\u0027qbh_params\u0027] \u003d qbh_params"},{"line_number":265,"context_line":"        self[\u0027qbg_params\u0027] \u003d qbg_params"},{"line_number":266,"context_line":"        if vif_security:"},{"line_number":267,"context_line":"            for key, value in vif_security.items():"},{"line_number":268,"context_line":"                setattr(self, key, value)"},{"line_number":269,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlaA%3D","line":266,"in_reply_to":"AAAAVn%2F%2B2zY%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"60f54b7a574f33c99d45f9d823c7ef469688edbe","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            for key, value in vif_security.items():"},{"line_number":268,"context_line":"                setattr(self, key, value)"},{"line_number":269,"context_line":"        else:"},{"line_number":270,"context_line":"            self.require_iptables \u003d True"},{"line_number":271,"context_line":"            self.require_securitygroup \u003d True"},{"line_number":272,"context_line":"            self.prevent_arp_spoofing \u003d True"},{"line_number":273,"context_line":"            self.prevent_mac_spoofing \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2F1Nw%3D","line":270,"updated":"2014-03-03 22:02:42.000000000","message":"I think the defaults here should be False as now the default behavior is changing?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            for key, value in vif_security.items():"},{"line_number":268,"context_line":"                setattr(self, key, value)"},{"line_number":269,"context_line":"        else:"},{"line_number":270,"context_line":"            self.require_iptables \u003d True"},{"line_number":271,"context_line":"            self.require_securitygroup \u003d True"},{"line_number":272,"context_line":"            self.prevent_arp_spoofing \u003d True"},{"line_number":273,"context_line":"            self.prevent_mac_spoofing \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlTo%3D","line":270,"in_reply_to":"AAAAVn%2F%2F1Nw%3D","updated":"2014-03-25 18:28:59.000000000","message":"IMO, default behavior should be to enable nova\u0027s security group","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            for key, value in vif_security.items():"},{"line_number":268,"context_line":"                setattr(self, key, value)"},{"line_number":269,"context_line":"        else:"},{"line_number":270,"context_line":"            self.require_iptables \u003d True"},{"line_number":271,"context_line":"            self.require_securitygroup \u003d True"},{"line_number":272,"context_line":"            self.prevent_arp_spoofing \u003d True"},{"line_number":273,"context_line":"            self.prevent_mac_spoofing \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bj7k%3D","line":270,"in_reply_to":"AAAAWH%2F%2BlTo%3D","updated":"2014-03-25 22:25:28.000000000","message":"Even if they\u0027re not technically part of the core neutron API security groups have been around for 18 months now.\nthe default plugin implemented them as well, so I don\u0027t know why we would still default to nova when neutron is enabled.\n\nOn another note... I think require_iptables\u003dtrue is used to tell the vif driver to do hybrid plugging. I read this as a paremeter informing the vif driver that neutron will use iptables to do sec groups.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"181759421cdfded336cc07ccb501b9e8206a4cba","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        if bridge is not None:"},{"line_number":921,"context_line":"            bridge \u003d bridge[:network_model.NIC_NAME_LEN]"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":924,"context_line":"        network \u003d network_model.Network("},{"line_number":925,"context_line":"            id\u003dport[\u0027network_id\u0027],"},{"line_number":926,"context_line":"            bridge\u003dbridge,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2Fqo8%3D","line":923,"updated":"2013-08-31 17:18:57.000000000","message":"looks like you are missing the data from the vif type regarding the security, if not then the line above is not needed","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        if bridge is not None:"},{"line_number":921,"context_line":"            bridge \u003d bridge[:network_model.NIC_NAME_LEN]"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"        vif_type \u003d port.get(\u0027binding:vif_type\u0027)"},{"line_number":924,"context_line":"        network \u003d network_model.Network("},{"line_number":925,"context_line":"            id\u003dport[\u0027network_id\u0027],"},{"line_number":926,"context_line":"            bridge\u003dbridge,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqHQ%3D","line":923,"in_reply_to":"AAAASn%2F%2Fqo8%3D","updated":"2013-09-01 04:18:22.000000000","message":"Done","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"181759421cdfded336cc07ccb501b9e8206a4cba","unresolved":false,"context_lines":[{"line_number":949,"context_line":"                                                    instance[\u0027project_id\u0027])"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        # ensure ports are in preferred network order, and filter out"},{"line_number":952,"context_line":"        #"},{"line_number":953,"context_line":"        # those not attached to one of the provided list of networks"},{"line_number":954,"context_line":"        else:"},{"line_number":955,"context_line":"            net_ids \u003d [n[\u0027id\u0027] for n in networks]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2Fqo4%3D","line":952,"updated":"2013-08-31 17:18:57.000000000","message":"is this related to the current change?","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":949,"context_line":"                                                    instance[\u0027project_id\u0027])"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        # ensure ports are in preferred network order, and filter out"},{"line_number":952,"context_line":"        #"},{"line_number":953,"context_line":"        # those not attached to one of the provided list of networks"},{"line_number":954,"context_line":"        else:"},{"line_number":955,"context_line":"            net_ids \u003d [n[\u0027id\u0027] for n in networks]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqHM%3D","line":952,"in_reply_to":"AAAASn%2F%2Fqo4%3D","updated":"2013-09-01 04:18:22.000000000","message":"Done","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"566c7932351e0cdf1e0b05928dacb6e38d18002d","unresolved":false,"context_lines":[{"line_number":926,"context_line":"            injected\u003dCONF.flat_injected,"},{"line_number":927,"context_line":"            label\u003dnetwork_name,"},{"line_number":928,"context_line":"            tenant_id\u003dnet[\u0027tenant_id\u0027]"},{"line_number":929,"context_line":"        )"},{"line_number":930,"context_line":"        network[\u0027subnets\u0027] \u003d subnets"},{"line_number":931,"context_line":"        if should_create_bridge is not None:"},{"line_number":932,"context_line":"            network[\u0027should_create_bridge\u0027] \u003d should_create_bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FqCc%3D","line":929,"updated":"2013-09-01 07:35:13.000000000","message":"this change is not part of the patch set","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"c7a32f3ef21516a605d15e53606f9d071ea619e4","unresolved":false,"context_lines":[{"line_number":926,"context_line":"            injected\u003dCONF.flat_injected,"},{"line_number":927,"context_line":"            label\u003dnetwork_name,"},{"line_number":928,"context_line":"            tenant_id\u003dnet[\u0027tenant_id\u0027]"},{"line_number":929,"context_line":"        )"},{"line_number":930,"context_line":"        network[\u0027subnets\u0027] \u003d subnets"},{"line_number":931,"context_line":"        if should_create_bridge is not None:"},{"line_number":932,"context_line":"            network[\u0027should_create_bridge\u0027] \u003d should_create_bridge"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FpgI%3D","line":929,"in_reply_to":"AAAASn%2F%2FqCc%3D","updated":"2013-09-01 15:42:49.000000000","message":"Done","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"566c7932351e0cdf1e0b05928dacb6e38d18002d","unresolved":false,"context_lines":[{"line_number":971,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":972,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"},{"line_number":973,"context_line":"                #TODO(nati): support any combination"},{"line_number":974,"context_line":"                LOG.exception("},{"line_number":975,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":976,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":977,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FqCY%3D","line":974,"updated":"2013-09-01 07:35:13.000000000","message":"Can you please clarify why this is LOG.exception and not warning?","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"c7a32f3ef21516a605d15e53606f9d071ea619e4","unresolved":false,"context_lines":[{"line_number":971,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":972,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"},{"line_number":973,"context_line":"                #TODO(nati): support any combination"},{"line_number":974,"context_line":"                LOG.exception("},{"line_number":975,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":976,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":977,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FpgM%3D","line":974,"in_reply_to":"AAAASn%2F%2FqCY%3D","updated":"2013-09-01 15:42:49.000000000","message":"Thanks. It looks like we are using waring for this kind of error.\nI\u0027ll use waring.","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"                #TODO(nati): support any combination"},{"line_number":1048,"context_line":"                LOG.warning("},{"line_number":1049,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":1050,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"            nw_info.append(network_model.VIF("},{"line_number":1053,"context_line":"                id\u003dport[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFFY%3D","line":1050,"updated":"2014-01-17 17:59:24.000000000","message":"I think that this is pretty much saying that you\u0027re adding three attributes instead of one for \u0027potential future developments\u0027, which might or might not happen.\n\nThis unless you have already something else on the roadmap. Is ti the case?","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"                #TODO(nati): support any combination"},{"line_number":1048,"context_line":"                LOG.warning("},{"line_number":1049,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":1050,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"            nw_info.append(network_model.VIF("},{"line_number":1053,"context_line":"                id\u003dport[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FYv4%3D","line":1050,"in_reply_to":"AAAAUH%2F%2FFFY%3D","updated":"2014-02-26 23:58:09.000000000","message":"Could you have a comment on bug report?\nhttps://bugs.launchpad.net/nova/+bug/1112912\n\nInitially, my proposal was having prevent_spoofing option only.\nPlease take a look following comments in the bug report.\nDaniel Berrange (berrange) wrote on 2013-02-18\ndan wendlandt (danwent) wrote on 2013-02-18:","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"515d760164c6720c45907715afe4b94bee9d07b6","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            network, ovs_interfaceid \u003d self._nw_info_build_network(port,"},{"line_number":1061,"context_line":"                                                                   networks,"},{"line_number":1062,"context_line":"                                                                   subnets)"},{"line_number":1063,"context_line":"            vif_detail \u003d port.get(\u0027binding:vif_detail\u0027, {})"},{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B22s%3D","line":1063,"updated":"2014-03-11 17:49:26.000000000","message":"The portbindings extension attribute is \u0027binding:vif_details\u0027, not \u0027binding:vif_detail\u0027.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            network, ovs_interfaceid \u003d self._nw_info_build_network(port,"},{"line_number":1061,"context_line":"                                                                   networks,"},{"line_number":1062,"context_line":"                                                                   subnets)"},{"line_number":1063,"context_line":"            vif_detail \u003d port.get(\u0027binding:vif_detail\u0027, {})"},{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlZ4%3D","line":1063,"in_reply_to":"AAAAVn%2F%2B22s%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            network, ovs_interfaceid \u003d self._nw_info_build_network(port,"},{"line_number":1061,"context_line":"                                                                   networks,"},{"line_number":1062,"context_line":"                                                                   subnets)"},{"line_number":1063,"context_line":"            vif_detail \u003d port.get(\u0027binding:vif_detail\u0027, {})"},{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bj7Q%3D","line":1063,"in_reply_to":"AAAAWH%2F%2BlZ4%3D","updated":"2014-03-25 22:25:28.000000000","message":"so this patch never actually worked?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"515d760164c6720c45907715afe4b94bee9d07b6","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                                                                   networks,"},{"line_number":1062,"context_line":"                                                                   subnets)"},{"line_number":1063,"context_line":"            vif_detail \u003d port.get(\u0027binding:vif_detail\u0027, {})"},{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":1067,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B22I%3D","line":1064,"updated":"2014-03-11 17:49:26.000000000","message":"I strongly recommend just storing the VIF security properties directly in the binding:vif_details dictionary rather than adding another vif_security dictionary.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                                                                   networks,"},{"line_number":1062,"context_line":"                                                                   subnets)"},{"line_number":1063,"context_line":"            vif_detail \u003d port.get(\u0027binding:vif_detail\u0027, {})"},{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":1067,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlZ0%3D","line":1064,"in_reply_to":"AAAAVn%2F%2B22I%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"60f54b7a574f33c99d45f9d823c7ef469688edbe","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":1067,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"},{"line_number":1068,"context_line":"                #TODO(nati): support any combination"},{"line_number":1069,"context_line":"                LOG.warning("},{"line_number":1070,"context_line":"                    _(\"Unsupported neutron vif_security\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2F1MU%3D","line":1067,"updated":"2014-03-03 22:02:42.000000000","message":"Seems kind of odd that dhcp_spoofing also needs to be true here to prevent mac and ip spoofing.  What happens here if there values aren\u0027t valid? Does libvirt raise an error?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":1067,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"},{"line_number":1068,"context_line":"                #TODO(nati): support any combination"},{"line_number":1069,"context_line":"                LOG.warning("},{"line_number":1070,"context_line":"                    _(\"Unsupported neutron vif_security\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlZY%3D","line":1067,"in_reply_to":"AAAAVn%2F%2F1MU%3D","updated":"2014-03-25 18:28:59.000000000","message":"No currently it is only some set of parameter is supported, other wise it will be deactivated","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"            vif_security \u003d vif_detail.get(\u0027vif_security\u0027, {})"},{"line_number":1065,"context_line":"            if not (vif_security.get(\u0027prevent_mac_spoofing\u0027) \u003d\u003d"},{"line_number":1066,"context_line":"                    vif_security.get(\u0027prevent_ip_spoofing\u0027) \u003d\u003d"},{"line_number":1067,"context_line":"                    vif_security.get(\u0027prevent_dhcp_spoofing\u0027)):"},{"line_number":1068,"context_line":"                #TODO(nati): support any combination"},{"line_number":1069,"context_line":"                LOG.warning("},{"line_number":1070,"context_line":"                    _(\"Unsupported neutron vif_security\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bj6c%3D","line":1067,"in_reply_to":"AAAAWH%2F%2BlZY%3D","updated":"2014-03-25 22:25:28.000000000","message":"considering your settings, I think you should then have a single anti-spoof attribute.\nwould the decision on whether to do mac spoofing or ip spoofing or both be taken on a per-port basis?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"                #TODO(nati): support any combination"},{"line_number":1069,"context_line":"                LOG.warning("},{"line_number":1070,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":1071,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"            nw_info.append(network_model.VIF("},{"line_number":1074,"context_line":"                id\u003dport[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bjvo%3D","line":1071,"updated":"2014-03-25 22:25:28.000000000","message":"I don\u0027t know. This just does not seem right.\nWhy would we allow a neutron plugin to set parameters nova won\u0027t support when nova itself is the only consumer of those parameters?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"                    _(\"Unsupported neutron vif_security\""},{"line_number":1071,"context_line":"                      \" combination: %r\"), vif_security)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"            nw_info.append(network_model.VIF("},{"line_number":1074,"context_line":"                id\u003dport[\u0027id\u0027],"},{"line_number":1075,"context_line":"                address\u003dport[\u0027mac_address\u0027],"},{"line_number":1076,"context_line":"                network\u003dnetwork,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BjvU%3D","line":1073,"updated":"2014-03-25 22:25:28.000000000","message":"is there a place where require_securitygroup and require_iptables are processed?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"65098f39198070b8da2c1ba1558724e3aa5e9c9c","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                id\u003dport[\u0027id\u0027],"},{"line_number":1075,"context_line":"                address\u003dport[\u0027mac_address\u0027],"},{"line_number":1076,"context_line":"                network\u003dnetwork,"},{"line_number":1077,"context_line":"                type\u003dport.get(\u0027binding:vif_type\u0027),"},{"line_number":1078,"context_line":"                ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":1079,"context_line":"                vif_security\u003dvif_security,"},{"line_number":1080,"context_line":"                devname\u003ddevname))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bj5g%3D","line":1077,"updated":"2014-03-25 22:25:28.000000000","message":"I would consider whether we could just use this attribute to fix the issue of ensuring security groups are not skipped because of vif misconfigurations, and then look at how neutron could tell nova how to do antispoof.\nIn my opinion however, antispoof and security groups go hand-in-hand, and it should be just a neutron bug if we ask nova to do antispoof because neutron can\u0027t","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"515d760164c6720c45907715afe4b94bee9d07b6","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"                network\u003dnetwork,"},{"line_number":1077,"context_line":"                type\u003dport.get(\u0027binding:vif_type\u0027),"},{"line_number":1078,"context_line":"                ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":1079,"context_line":"                vif_security\u003dvif_security,"},{"line_number":1080,"context_line":"                devname\u003ddevname))"},{"line_number":1081,"context_line":"        return nw_info"},{"line_number":1082,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVn%2F%2B21I%3D","line":1079,"updated":"2014-03-11 17:49:26.000000000","message":"Please just store vif_details in the VIF model, so that other VIF details, such as those needed for SR-IOV, at available too. A single-level vif_details dictionary should be all that is needed.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"                network\u003dnetwork,"},{"line_number":1077,"context_line":"                type\u003dport.get(\u0027binding:vif_type\u0027),"},{"line_number":1078,"context_line":"                ovs_interfaceid\u003dovs_interfaceid,"},{"line_number":1079,"context_line":"                vif_security\u003dvif_security,"},{"line_number":1080,"context_line":"                devname\u003ddevname))"},{"line_number":1081,"context_line":"        return nw_info"},{"line_number":1082,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlZU%3D","line":1079,"in_reply_to":"AAAAVn%2F%2B21I%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"}],"nova/tests/objects/test_instance.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"        db.instance_info_cache_update("},{"line_number":449,"context_line":"            self.context, fake_uuid,"},{"line_number":450,"context_line":"            {\u0027network_info\u0027: mox.Func(check_network_info)})"},{"line_number":451,"context_line":"        self.mox.ReplayAll()"},{"line_number":452,"context_line":"        inst \u003d instance.Instance.get_by_uuid(self.context, fake_uuid)"},{"line_number":453,"context_line":"        self.assertEqual(inst.info_cache.network_info, nwinfo1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFE0%3D","line":450,"updated":"2014-01-17 17:59:24.000000000","message":"can you provide some information about why was this change required?","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"        db.instance_info_cache_update("},{"line_number":449,"context_line":"            self.context, fake_uuid,"},{"line_number":450,"context_line":"            {\u0027network_info\u0027: mox.Func(check_network_info)})"},{"line_number":451,"context_line":"        self.mox.ReplayAll()"},{"line_number":452,"context_line":"        inst \u003d instance.Instance.get_by_uuid(self.context, fake_uuid)"},{"line_number":453,"context_line":"        self.assertEqual(inst.info_cache.network_info, nwinfo1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FYvo%3D","line":450,"in_reply_to":"AAAAUH%2F%2FFE0%3D","updated":"2014-02-26 23:58:09.000000000","message":"so, now network_info has nested dict of which order will be randomly changed. so the result string will be randomly sorted.","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"181759421cdfded336cc07ccb501b9e8206a4cba","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return conf"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"},{"line_number":186,"context_line":"                              inst_type):"},{"line_number":187,"context_line":"        conf \u003d super(LibvirtGenericVIFDriver,"},{"line_number":188,"context_line":"                     self).get_config(instance, vif,"},{"line_number":189,"context_line":"                                      image_meta, inst_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2Fqos%3D","line":186,"updated":"2013-08-31 17:18:57.000000000","message":"this change is not related to the patch set","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"70ed67b85726b899fa66c4ab16e6bf48a58aeb08","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return conf"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"},{"line_number":186,"context_line":"                              inst_type):"},{"line_number":187,"context_line":"        conf \u003d super(LibvirtGenericVIFDriver,"},{"line_number":188,"context_line":"                     self).get_config(instance, vif,"},{"line_number":189,"context_line":"                                      image_meta, inst_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FqGs%3D","line":186,"in_reply_to":"AAAASn%2F%2Fqos%3D","updated":"2013-09-01 04:18:22.000000000","message":"Done","commit_id":"a30967bc7bcfd3a24680224686fa51de4f857da8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"566c7932351e0cdf1e0b05928dacb6e38d18002d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                                      image_meta, inst_type)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def get_config_ovs(self, instance, vif, image_meta, inst_type):"},{"line_number":206,"context_line":"        if vif.require_iptables:"},{"line_number":207,"context_line":"            return self.get_config_ovs_hybrid(instance, vif,"},{"line_number":208,"context_line":"                                              image_meta,"},{"line_number":209,"context_line":"                                              inst_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FqBk%3D","line":206,"updated":"2013-09-01 07:35:13.000000000","message":"vif[\u0027vif_security\u0027][\u0027require_ip_tables\u0027]?","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"c7a32f3ef21516a605d15e53606f9d071ea619e4","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                                      image_meta, inst_type)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def get_config_ovs(self, instance, vif, image_meta, inst_type):"},{"line_number":206,"context_line":"        if vif.require_iptables:"},{"line_number":207,"context_line":"            return self.get_config_ovs_hybrid(instance, vif,"},{"line_number":208,"context_line":"                                              image_meta,"},{"line_number":209,"context_line":"                                              inst_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FpgA%3D","line":206,"in_reply_to":"AAAASn%2F%2FqBk%3D","updated":"2013-09-01 15:42:49.000000000","message":"I added method in the model","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"157f524a516885222e9409d26ac55b129fde8c6d","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":505,"context_line":"            self.plug_bridge(instance, vif)"},{"line_number":506,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":507,"context_line":"            if vif.require_iptables:"},{"line_number":508,"context_line":"                self.plug_ovs_hybrid(instance, vif)"},{"line_number":509,"context_line":"            else:"},{"line_number":510,"context_line":"                self.plug_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2Fpzw%3D","line":507,"updated":"2013-09-01 11:56:16.000000000","message":"As plug_ovs() around L.409 honors vif.require_iptables, this if-else clause is unnecessary.","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"c7a32f3ef21516a605d15e53606f9d071ea619e4","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":505,"context_line":"            self.plug_bridge(instance, vif)"},{"line_number":506,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":507,"context_line":"            if vif.require_iptables:"},{"line_number":508,"context_line":"                self.plug_ovs_hybrid(instance, vif)"},{"line_number":509,"context_line":"            else:"},{"line_number":510,"context_line":"                self.plug_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2Fpfw%3D","line":507,"in_reply_to":"AAAASn%2F%2Fpzw%3D","updated":"2013-09-01 15:42:49.000000000","message":"Done","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"157f524a516885222e9409d26ac55b129fde8c6d","unresolved":false,"context_lines":[{"line_number":653,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":654,"context_line":"            self.unplug_bridge(instance, vif)"},{"line_number":655,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":656,"context_line":"            if vif.require_iptables:"},{"line_number":657,"context_line":"                self.unplug_ovs_hybrid(instance, vif)"},{"line_number":658,"context_line":"            else:"},{"line_number":659,"context_line":"                self.unplug_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2Fpzs%3D","line":656,"updated":"2013-09-01 11:56:16.000000000","message":"Same as the comment on plug() above.","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"c7a32f3ef21516a605d15e53606f9d071ea619e4","unresolved":false,"context_lines":[{"line_number":653,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":654,"context_line":"            self.unplug_bridge(instance, vif)"},{"line_number":655,"context_line":"        elif vif_type \u003d\u003d network_model.VIF_TYPE_OVS:"},{"line_number":656,"context_line":"            if vif.require_iptables:"},{"line_number":657,"context_line":"                self.unplug_ovs_hybrid(instance, vif)"},{"line_number":658,"context_line":"            else:"},{"line_number":659,"context_line":"                self.unplug_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2Fpf0%3D","line":656,"in_reply_to":"AAAASn%2F%2Fpzs%3D","updated":"2013-09-01 15:42:49.000000000","message":"Done","commit_id":"99b512cc99d82409eeede28c070b5b6f3d2df36c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"fba8aea8c5a0822a09c580c39673b8613f3a70a6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # TODO(berrange): Extend this to use information from VIF model"},{"line_number":160,"context_line":"        # which can indicate whether the network provider (eg Neutron)"},{"line_number":161,"context_line":"        # has already applied firewall filtering itself."},{"line_number":162,"context_line":"        if CONF.firewall_driver !\u003d \"nova.virt.firewall.NoopFirewallDriver\":"},{"line_number":163,"context_line":"            return True"},{"line_number":164,"context_line":"        return False"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMoQ%3D","side":"PARENT","line":162,"updated":"2013-11-29 10:22:13.000000000","message":"I don\u0027t think it is correct to remove this. If the admin has set the NoopFirewallDriver and creates VMs with the bridge driver, then libvirt will try to use nwfilters which have not been created.","commit_id":"b432f21a4208bdeb666b72d38981fd5a65b6ade3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8962c17d6a4e15963a4ac4bf1ba3315751940fc7","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # TODO(berrange): Extend this to use information from VIF model"},{"line_number":160,"context_line":"        # which can indicate whether the network provider (eg Neutron)"},{"line_number":161,"context_line":"        # has already applied firewall filtering itself."},{"line_number":162,"context_line":"        if CONF.firewall_driver !\u003d \"nova.virt.firewall.NoopFirewallDriver\":"},{"line_number":163,"context_line":"            return True"},{"line_number":164,"context_line":"        return False"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9jBw%3D","side":"PARENT","line":162,"in_reply_to":"AAAATn%2F%2BMoQ%3D","updated":"2013-12-10 11:27:05.000000000","message":"NoopFirewallDriver and get_firewall_required is used with nova-network, so we need to keep it.","commit_id":"b432f21a4208bdeb666b72d38981fd5a65b6ade3"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"606db96de78bf65248c6d6f3f7e185991aa78543","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            self.get_vif_devname(vif))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        mac_id \u003d vif[\u0027address\u0027].replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":169,"context_line":"        if vif.require_nw_filter:"},{"line_number":170,"context_line":"            conf.filtername \u003d ("},{"line_number":171,"context_line":"                \"nova-instance-\" + instance[\u0027name\u0027] + \"-\" + mac_id)"},{"line_number":172,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMoc%3D","line":169,"updated":"2013-11-29 10:20:19.000000000","message":"You should directly check the specific vif_security parameters you care about here.","commit_id":"1c8254b11547400e0662364060330ae2ac3e96c4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        if (vif.prevent_mac_spoofing or vif.prevent_ip_spoofing or"},{"line_number":178,"context_line":"                vif.prevent_dhcp_spoofing or vif.require_securitygroup):"},{"line_number":179,"context_line":"            conf.filtername \u003d ("},{"line_number":180,"context_line":"                \"nova-instance-%s-%s\" % (instance[\u0027name\u0027], mac_id))"},{"line_number":181,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return conf"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFHw%3D","line":180,"updated":"2014-01-17 17:59:24.000000000","message":"Is this filter configured independently of whether one is running neutron or nova? I am not sure since I do not see this chain when neutron is enabled.\n\nI wonder what the goal of this change would be, perhaps you want to enable nova to do anti-spoofing in case neutron does not support it?","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        if (vif.prevent_mac_spoofing or vif.prevent_ip_spoofing or"},{"line_number":178,"context_line":"                vif.prevent_dhcp_spoofing or vif.require_securitygroup):"},{"line_number":179,"context_line":"            conf.filtername \u003d ("},{"line_number":180,"context_line":"                \"nova-instance-%s-%s\" % (instance[\u0027name\u0027], mac_id))"},{"line_number":181,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return conf"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVH%2F%2F%2F%2F8%3D","line":180,"in_reply_to":"AAAAUH%2F%2FFHw%3D","updated":"2014-02-26 23:58:09.000000000","message":"This is nova side anchi-spoofing filter","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"50d1fa277626af85492b2e91739d353238a9b617","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":192,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":193,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":194,"context_line":"        return conf"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FE3c%3D","line":193,"updated":"2014-01-17 17:10:24.000000000","message":"Why are you setting bandwidth controls here. This seems unrelated to the purpose of this patch.","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":192,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":193,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":194,"context_line":"        return conf"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVH%2F%2F%2F%2Bs%3D","line":193,"in_reply_to":"AAAAUH%2F%2FE3c%3D","updated":"2014-02-26 23:58:09.000000000","message":"This is need to get success the unit test.\nI guess this was missing and untested until this patch","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"53bca53c0d313cf56830c0fc6d92c97c18a07fc3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                                      image_meta, inst_type)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def get_config_ovs(self, instance, vif, image_meta, inst_type):"},{"line_number":219,"context_line":"        if vif.require_iptables:"},{"line_number":220,"context_line":"            return self.get_config_ovs_hybrid(instance, vif,"},{"line_number":221,"context_line":"                                              image_meta,"},{"line_number":222,"context_line":"                                              inst_type)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FFF4%3D","line":219,"updated":"2014-01-17 17:59:24.000000000","message":"In my opinion, it would have been better if neutron specified that the VIF required a hibrid plugging, rather than call the attribute \"require_iptables\".","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                                      image_meta, inst_type)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def get_config_ovs(self, instance, vif, image_meta, inst_type):"},{"line_number":219,"context_line":"        if vif.require_iptables:"},{"line_number":220,"context_line":"            return self.get_config_ovs_hybrid(instance, vif,"},{"line_number":221,"context_line":"                                              image_meta,"},{"line_number":222,"context_line":"                                              inst_type)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FYvQ%3D","line":219,"in_reply_to":"AAAAUH%2F%2FFF4%3D","updated":"2014-02-26 23:58:09.000000000","message":"Please take a look discussion on the bug report\nhttps://bugs.launchpad.net/nova/+bug/1112912\n\nIMO, it is too implementation detail.","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"50d1fa277626af85492b2e91739d353238a9b617","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":250,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":251,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":252,"context_line":"        return conf"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def get_config_ivs(self, instance, vif, image_meta, inst_type):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FE3Q%3D","line":251,"updated":"2014-01-17 17:10:24.000000000","message":"Again this appears unrelated","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":250,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":251,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":252,"context_line":"        return conf"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def get_config_ivs(self, instance, vif, image_meta, inst_type):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVH%2F%2F%2F%2Bc%3D","line":251,"in_reply_to":"AAAAUH%2F%2FE3Q%3D","updated":"2014-02-26 23:58:09.000000000","message":"diddo","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"50d1fa277626af85492b2e91739d353238a9b617","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":317,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":318,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":319,"context_line":"        return conf"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def get_config_mlnx_direct(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FE3E%3D","line":318,"updated":"2014-01-17 17:10:24.000000000","message":"And again","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1676ca0bdbef60f2f953f3bdeee88b2a39a03e78","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":317,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":318,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":319,"context_line":"        return conf"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def get_config_mlnx_direct(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVH%2F%2F%2F%2BY%3D","line":318,"in_reply_to":"AAAAUH%2F%2FE3E%3D","updated":"2014-02-26 23:58:09.000000000","message":"diddo","commit_id":"a2a8876dc750978b4f3a7312e21423ee43e8e677"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c8b1c3e8b2ff3fad2e748247d7d1167cd8f76965","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        mac_id \u003d vif[\u0027address\u0027].replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":175,"context_line":"        if (vif.prevent_mac_spoofing or vif.prevent_ip_spoofing or"},{"line_number":176,"context_line":"                vif.prevent_dhcp_spoofing or vif.require_securitygroup):"},{"line_number":177,"context_line":"            conf.filtername \u003d ("},{"line_number":178,"context_line":"                \"nova-instance-%s-%s\" % (instance[\u0027name\u0027], mac_id))"},{"line_number":179,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BseA%3D","line":176,"updated":"2014-03-25 01:21:23.000000000","message":"Nit: Maybe it\u0027s better to set a value over in the initialization of the VIF class if any of these are True?\n\nAlso, is this indented properly?","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        mac_id \u003d vif[\u0027address\u0027].replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":175,"context_line":"        if (vif.prevent_mac_spoofing or vif.prevent_ip_spoofing or"},{"line_number":176,"context_line":"                vif.prevent_dhcp_spoofing or vif.require_securitygroup):"},{"line_number":177,"context_line":"            conf.filtername \u003d ("},{"line_number":178,"context_line":"                \"nova-instance-%s-%s\" % (instance[\u0027name\u0027], mac_id))"},{"line_number":179,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlWg%3D","line":176,"in_reply_to":"AAAAWH%2F%2BseA%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c8b1c3e8b2ff3fad2e748247d7d1167cd8f76965","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":190,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":191,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":192,"context_line":"        return conf"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BsgM%3D","line":191,"updated":"2014-03-25 01:21:23.000000000","message":"This change isn\u0027t for vif_security.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":190,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":191,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":192,"context_line":"        return conf"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def get_config_ovs_bridge(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlWc%3D","line":191,"in_reply_to":"AAAAWH%2F%2BsgM%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c8b1c3e8b2ff3fad2e748247d7d1167cd8f76965","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":248,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":249,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":250,"context_line":"        return conf"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def get_config_ivs(self, instance, vif, image_meta, inst_type):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BsgI%3D","line":249,"updated":"2014-03-25 01:21:23.000000000","message":"This change isn\u0027t for vif_security.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":248,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":249,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":250,"context_line":"        return conf"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def get_config_ivs(self, instance, vif, image_meta, inst_type):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlWI%3D","line":249,"in_reply_to":"AAAAWH%2F%2BsgI%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c8b1c3e8b2ff3fad2e748247d7d1167cd8f76965","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":315,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":316,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":317,"context_line":"        return conf"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def get_config_mlnx_direct(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BsgE%3D","line":316,"updated":"2014-03-25 01:21:23.000000000","message":"This change isn\u0027t for vif_security.","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"4f589fe14bda57f489b2af0792d2c2e4c6441373","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":315,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev)"},{"line_number":316,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":317,"context_line":"        return conf"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def get_config_mlnx_direct(self, instance, vif, image_meta,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BlWE%3D","line":316,"in_reply_to":"AAAAWH%2F%2BsgE%3D","updated":"2014-03-25 18:28:59.000000000","message":"Done","commit_id":"6b701aba9620f51e44a74c930592583d5e0714e8"}]}
