)]}'
{"nova/virt/libvirt/vif.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"3e3a06bfd4d615c54d4c81962abc1f10f62961a7","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            raise exception.NovaException("},{"line_number":301,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":302,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":305,"context_line":"            return self.get_config_bridge(instance,"},{"line_number":306,"context_line":"                                          network, mapping,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F5PI%3D","line":303,"updated":"2013-06-06 15:47:50.000000000","message":"this should be an elif for consistency","commit_id":"8662f45b7a8d8c925e51f60aa687e1e8a4922df2"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"013cb50b35348bc065dc2b5f2680863c9f1b7836","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            raise exception.NovaException("},{"line_number":301,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":302,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":305,"context_line":"            return self.get_config_bridge(instance,"},{"line_number":306,"context_line":"                                          network, mapping,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F5FI%3D","line":303,"in_reply_to":"AAAAPX%2F%2F5FQ%3D","updated":"2013-06-06 16:31:06.000000000","message":"Done","commit_id":"8662f45b7a8d8c925e51f60aa687e1e8a4922df2"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"2cba9feeebbaac2976683b488f6b40fe88844967","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            raise exception.NovaException("},{"line_number":301,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":302,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        if vif_type \u003d\u003d network_model.VIF_TYPE_BRIDGE:"},{"line_number":305,"context_line":"            return self.get_config_bridge(instance,"},{"line_number":306,"context_line":"                                          network, mapping,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F5FQ%3D","line":303,"in_reply_to":"AAAAPX%2F%2F5PI%3D","updated":"2013-06-06 16:30:26.000000000","message":"I updated this and the other similar conditionals to elifs.","commit_id":"8662f45b7a8d8c925e51f60aa687e1e8a4922df2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"77671d3b44e9fcf76c43fcc237384efa067e360d","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        dev \u003d self.get_vif_devname(mapping)"},{"line_number":414,"context_line":"        linux_net.create_tap_dev(dev)"},{"line_number":415,"context_line":"        linux_net.create_ivs_vif_port(dev, iface_id, mapping[\u0027mac\u0027],"},{"line_number":416,"context_line":"                                       instance[\u0027uuid\u0027])"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def plug_ivs_hybrid(self, instance, vif):"},{"line_number":419,"context_line":"        \"\"\"Plug using hybrid strategy (same as OVS)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FteY%3D","line":416,"updated":"2013-06-12 08:23:34.000000000","message":"indentation looks a bit odd here","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"1ee0c96d288a7e207249c62a95ac679f759bf365","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        dev \u003d self.get_vif_devname(mapping)"},{"line_number":414,"context_line":"        linux_net.create_tap_dev(dev)"},{"line_number":415,"context_line":"        linux_net.create_ivs_vif_port(dev, iface_id, mapping[\u0027mac\u0027],"},{"line_number":416,"context_line":"                                       instance[\u0027uuid\u0027])"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def plug_ivs_hybrid(self, instance, vif):"},{"line_number":419,"context_line":"        \"\"\"Plug using hybrid strategy (same as OVS)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2Fsa4%3D","line":416,"in_reply_to":"AAAAPX%2F%2FteY%3D","updated":"2013-06-12 17:38:47.000000000","message":"Done","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"77671d3b44e9fcf76c43fcc237384efa067e360d","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        linux_net.create_ivs_vif_port(dev, iface_id, mapping[\u0027mac\u0027],"},{"line_number":416,"context_line":"                                       instance[\u0027uuid\u0027])"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def plug_ivs_hybrid(self, instance, vif):"},{"line_number":419,"context_line":"        \"\"\"Plug using hybrid strategy (same as OVS)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        Create a per-VIF linux bridge, then link that bridge to the OVS"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FteI%3D","line":418,"updated":"2013-06-12 08:23:34.000000000","message":"This code seems to be very similar to the plug_ovs_hybrid. The only difference being linux_net.create_ivs_vif_port and linux_net.create_ovs_vif_port.\nWould it be possible to have a generic function to do both?","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"1ee0c96d288a7e207249c62a95ac679f759bf365","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        linux_net.create_ivs_vif_port(dev, iface_id, mapping[\u0027mac\u0027],"},{"line_number":416,"context_line":"                                       instance[\u0027uuid\u0027])"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def plug_ivs_hybrid(self, instance, vif):"},{"line_number":419,"context_line":"        \"\"\"Plug using hybrid strategy (same as OVS)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        Create a per-VIF linux bridge, then link that bridge to the OVS"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FsVM%3D","line":418,"in_reply_to":"AAAAPX%2F%2FteI%3D","updated":"2013-06-12 17:38:47.000000000","message":"It would be possible, but I avoided it because it would require conditionals in each function to handle IVS/OVS and it would also require passing the vif type all of the way down. The functions would then have to be renamed to something more generic, and the unit tests for both types would have to be adjusted accordingly. I assumed that type of tight relationship between the types would not be preferred. \n\nThis would also have the side effect that as features of OVS and IVS change, developers would then have to worry about handling both of the VIF types as they implement necessary changes here. \n\nLet me know which direction you think would be preferred.","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"77671d3b44e9fcf76c43fcc237384efa067e360d","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            linux_net.create_ivs_vif_port(v2_name, iface_id, mapping[\u0027mac\u0027],"},{"line_number":444,"context_line":"                                          instance[\u0027uuid\u0027])"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def plug_ivs(self, instance, vif):"},{"line_number":447,"context_line":"        if self.get_firewall_required():"},{"line_number":448,"context_line":"            self.plug_ivs_hybrid(instance, vif)"},{"line_number":449,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FteE%3D","line":446,"updated":"2013-06-12 08:23:34.000000000","message":"Same here.","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"77671d3b44e9fcf76c43fcc237384efa067e360d","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":549,"context_line":"            LOG.exception(_(\"Failed while unplugging vif\"), instance\u003dinstance)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def unplug_ivs_hybrid(self, instance, vif):"},{"line_number":552,"context_line":"        \"\"\"UnPlug using hybrid strategy (same as OVS)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        Unhook port from IVS, unhook port from bridge, delete"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FteA%3D","line":551,"updated":"2013-06-12 08:23:34.000000000","message":"similar issue here.","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"77671d3b44e9fcf76c43fcc237384efa067e360d","unresolved":false,"context_lines":[{"line_number":568,"context_line":"            utils.execute(\u0027brctl\u0027, \u0027delbr\u0027, br_name, run_as_root\u003dTrue)"},{"line_number":569,"context_line":"            linux_net.delete_ivs_vif_port(v2_name)"},{"line_number":570,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":571,"context_line":"            LOG.exception(_(\"Failed while unplugging vif\"), instance\u003dinstance)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def unplug_ivs(self, instance, vif):"},{"line_number":574,"context_line":"        if self.get_firewall_required():"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2Ftd0%3D","line":571,"updated":"2013-06-12 08:23:34.000000000","message":"Should this not be:\nLOG.exception(_(\"Failed while unplugging vif for %s\"), instance)","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"1ee0c96d288a7e207249c62a95ac679f759bf365","unresolved":false,"context_lines":[{"line_number":568,"context_line":"            utils.execute(\u0027brctl\u0027, \u0027delbr\u0027, br_name, run_as_root\u003dTrue)"},{"line_number":569,"context_line":"            linux_net.delete_ivs_vif_port(v2_name)"},{"line_number":570,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":571,"context_line":"            LOG.exception(_(\"Failed while unplugging vif\"), instance\u003dinstance)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def unplug_ivs(self, instance, vif):"},{"line_number":574,"context_line":"        if self.get_firewall_required():"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FtcQ%3D","line":571,"in_reply_to":"AAAAPX%2F%2Ftd0%3D","updated":"2013-06-12 17:38:47.000000000","message":"The logging facility expects the instance as a separate argument so it can format the instance object according to the configured standard. \n\nHere is the configuration for the option:\nhttps://github.com/openstack/nova/blob/master/nova/openstack/common/log.py#L147\n\nHere is where the process function checks for the instance argument:\nhttps://github.com/openstack/nova/blob/master/nova/openstack/common/log.py#L262","commit_id":"df9b9ce801d441c08acf5a0ea9e67a9c50b0fe00"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"59ea0193f2a84719c43f0dda3c5214526df37b8c","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                      image_meta)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def get_config_ivs_ethernet(self, instance, network, mapping, image_meta):"},{"line_number":240,"context_line":"        conf \u003d super(LibvirtGenericVIFDriver,"},{"line_number":241,"context_line":"                     self).get_config(instance,"},{"line_number":242,"context_line":"                                      network,"},{"line_number":243,"context_line":"                                      mapping,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F4uE%3D","line":240,"updated":"2013-06-18 23:35:10.000000000","message":"This line wrap appears to be superfluous for pep8 purposes.","commit_id":"6caadd1c1badee8da046a42c796490d010e4e83f"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0e1cd9dca77697e937fda714eae7b94added28f2","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                      image_meta)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def get_config_ivs_ethernet(self, instance, network, mapping, image_meta):"},{"line_number":240,"context_line":"        conf \u003d super(LibvirtGenericVIFDriver,"},{"line_number":241,"context_line":"                     self).get_config(instance,"},{"line_number":242,"context_line":"                                      network,"},{"line_number":243,"context_line":"                                      mapping,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F4rk%3D","line":240,"in_reply_to":"AAAAPn%2F%2F4uE%3D","updated":"2013-06-18 23:52:26.000000000","message":"This was done to follow the conventions used by the ovs functions. \nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L183\n\nI did it that way so it would be consistent from a readability standpoint.","commit_id":"6caadd1c1badee8da046a42c796490d010e4e83f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"59ea0193f2a84719c43f0dda3c5214526df37b8c","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        of the veth device just like a normal IVS port.  Then boot the"},{"line_number":424,"context_line":"        VIF on the linux bridge using standard libvirt mechanisms."},{"line_number":425,"context_line":"        \"\"\""},{"line_number":426,"context_line":"        super(LibvirtGenericVIFDriver,"},{"line_number":427,"context_line":"              self).plug(instance, vif)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        network, mapping \u003d vif"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F4ts%3D","line":426,"updated":"2013-06-18 23:35:10.000000000","message":"This line wrap also appears to be superfluous","commit_id":"6caadd1c1badee8da046a42c796490d010e4e83f"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0e1cd9dca77697e937fda714eae7b94added28f2","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        of the veth device just like a normal IVS port.  Then boot the"},{"line_number":424,"context_line":"        VIF on the linux bridge using standard libvirt mechanisms."},{"line_number":425,"context_line":"        \"\"\""},{"line_number":426,"context_line":"        super(LibvirtGenericVIFDriver,"},{"line_number":427,"context_line":"              self).plug(instance, vif)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        network, mapping \u003d vif"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2F4rc%3D","line":426,"in_reply_to":"AAAAPn%2F%2F4ts%3D","updated":"2013-06-18 23:52:26.000000000","message":"Same with this one.\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L345","commit_id":"6caadd1c1badee8da046a42c796490d010e4e83f"}]}
