)]}'
{"nova/virt/libvirt/vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"72b6603302b1ce3dd3b2a4065924737f5a8acfc6","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":695,"context_line":"            LOG.exception(\"Failed while plugging vif\", instance\u003dinstance)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def plug_tap(self, instance, vif):"},{"line_number":698,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface.\"\"\""},{"line_number":699,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":700,"context_line":"        mac \u003d vif[\u0027details\u0027].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_057f6cab","line":697,"range":{"start_line":697,"start_character":2,"end_line":697,"end_character":38},"updated":"2020-09-02 18:55:37.000000000","message":"by the way we should move this into os-vif at some point.","commit_id":"4e696e1f68f7ab5e23cfd4d6a101b7b32a9a7c18"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"72b6603302b1ce3dd3b2a4065924737f5a8acfc6","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface.\"\"\""},{"line_number":699,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":700,"context_line":"        mac \u003d vif[\u0027details\u0027].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)"},{"line_number":701,"context_line":"        multiqueue \u003d True if instance.system_metadata.get("},{"line_number":702,"context_line":"            \u0027image_hw_vif_multiqueue_enabled\u0027) else False"},{"line_number":703,"context_line":"        nova.privsep.linux_net.create_tap_dev(dev, mac, multiqueue\u003dmultiqueue)"},{"line_number":704,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":705,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_25bf1061","line":702,"range":{"start_line":701,"start_character":30,"end_line":702,"end_character":47},"updated":"2020-09-02 18:55:37.000000000","message":"you should not be checking this via the system_metadata directly you should be using the image metadata object which you can do via instance.image_meta\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance.py#L250\n\nyou also need to confirm that the vif model is virtio\nso in the case of the libvirt driver either hw_vif_model should be unset or virtio.","commit_id":"4e696e1f68f7ab5e23cfd4d6a101b7b32a9a7c18"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"42b3df9314b443b3d32a967e71b73a08ad60af2d","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface.\"\"\""},{"line_number":699,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":700,"context_line":"        mac \u003d vif[\u0027details\u0027].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)"},{"line_number":701,"context_line":"        multiqueue \u003d True if instance.system_metadata.get("},{"line_number":702,"context_line":"            \u0027image_hw_vif_multiqueue_enabled\u0027) else False"},{"line_number":703,"context_line":"        nova.privsep.linux_net.create_tap_dev(dev, mac, multiqueue\u003dmultiqueue)"},{"line_number":704,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":705,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_262f163f","line":702,"range":{"start_line":701,"start_character":30,"end_line":702,"end_character":47},"in_reply_to":"9f560f44_25bf1061","updated":"2020-09-02 21:42:09.000000000","message":"Done","commit_id":"4e696e1f68f7ab5e23cfd4d6a101b7b32a9a7c18"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c182279b72f8375159c24a21f4c6590335ff4e2a","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        rx_queue_size \u003d CONF.libvirt.rx_queue_size"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # If the user has specified a \u0027vif_model\u0027 against the"},{"line_number":183,"context_line":"        # image then honour that model"},{"line_number":184,"context_line":"        if image_meta:"},{"line_number":185,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if self._is_virtio(vif_model\u003dmodel):"},{"line_number":188,"context_line":"            model \u003d network_model.VIF_MODEL_VIRTIO"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e12dfea8","line":185,"range":{"start_line":182,"start_character":6,"end_line":185,"end_character":71},"updated":"2020-09-03 12:23:14.000000000","message":"this im hoping to remove in the future by the way.\ni want to remove all use of os_info form nova.","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c182279b72f8375159c24a21f4c6590335ff4e2a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        if image_meta:"},{"line_number":185,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if self._is_virtio(vif_model\u003dmodel):"},{"line_number":188,"context_line":"            model \u003d network_model.VIF_MODEL_VIRTIO"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        if not is_vif_model_valid_for_virt(virt_type, model):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_042ac07c","line":187,"range":{"start_line":187,"start_character":6,"end_line":187,"end_character":44},"updated":"2020-09-03 12:23:14.000000000","message":"im not  a fan of the way you did the refactoring.\n\ninstead of creating a bool function you should create a fu nciton that returns the model and then check if that is virtio.","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ffdc57aed1fb75bc04e75a9c289653ee6e9bd379","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        if image_meta:"},{"line_number":185,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if self._is_virtio(vif_model\u003dmodel):"},{"line_number":188,"context_line":"            model \u003d network_model.VIF_MODEL_VIRTIO"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        if not is_vif_model_valid_for_virt(virt_type, model):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_b88cccd7","line":187,"range":{"start_line":187,"start_character":6,"end_line":187,"end_character":44},"in_reply_to":"9f560f44_042ac07c","updated":"2020-09-03 19:48:09.000000000","message":"Done","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c182279b72f8375159c24a21f4c6590335ff4e2a","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        model \u003d None"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # honour image_meta first if present,"},{"line_number":239,"context_line":"        # otherwise check supplied parameter"},{"line_number":240,"context_line":"        if image_meta:"},{"line_number":241,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":242,"context_line":"        if model is None:"},{"line_number":243,"context_line":"            model \u003d vif_model"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_843530de","line":241,"range":{"start_line":238,"start_character":6,"end_line":241,"end_character":71},"updated":"2020-09-03 12:23:14.000000000","message":"the way you have done it now you have to check this twice","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ffdc57aed1fb75bc04e75a9c289653ee6e9bd379","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        model \u003d None"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # honour image_meta first if present,"},{"line_number":239,"context_line":"        # otherwise check supplied parameter"},{"line_number":240,"context_line":"        if image_meta:"},{"line_number":241,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":242,"context_line":"        if model is None:"},{"line_number":243,"context_line":"            model \u003d vif_model"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_afcacd4b","line":241,"range":{"start_line":238,"start_character":6,"end_line":241,"end_character":71},"in_reply_to":"9f560f44_843530de","updated":"2020-09-03 19:48:09.000000000","message":"actually I don\u0027t. If image_meta is not passed, then it is not checked.","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c182279b72f8375159c24a21f4c6590335ff4e2a","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        return (driver, vhost_queues)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _is_image_meta_with_multiqueue(self, image_meta):"},{"line_number":277,"context_line":"        \"\"\"Check if multiqueue property is set in the image metadata.\"\"\""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_044f606a","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":38},"updated":"2020-09-03 12:23:14.000000000","message":"requests_multiqueue","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ffdc57aed1fb75bc04e75a9c289653ee6e9bd379","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        return (driver, vhost_queues)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _is_image_meta_with_multiqueue(self, image_meta):"},{"line_number":277,"context_line":"        \"\"\"Check if multiqueue property is set in the image metadata.\"\"\""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_afce4d80","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":38},"in_reply_to":"9f560f44_044f606a","updated":"2020-09-03 19:48:09.000000000","message":"Done","commit_id":"0d092b527a4fb4ff30fe5520a4eaa5d38a969bb9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8154c1f22d10ccc18d3ab462d52ec6301b1584db","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        return conf"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_vif_model(self, image_meta\u003dNone, vif_model\u003dNone):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_2168281f","line":228,"range":{"start_line":228,"start_character":8,"end_line":228,"end_character":22},"updated":"2020-09-10 13:50:23.000000000","message":"Could you group this above with \u0027get_vif_devname\u0027 and drop the leading underscore. We use too many underscores in the libvirt driver :)","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7b36b536e1a38bf6cb96e316df4ccd93988f6629","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        return conf"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_vif_model(self, image_meta\u003dNone, vif_model\u003dNone):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ca1faa6d","line":228,"range":{"start_line":228,"start_character":8,"end_line":228,"end_character":22},"in_reply_to":"9f560f44_2168281f","updated":"2020-09-11 15:41:58.000000000","message":"Done","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8154c1f22d10ccc18d3ab462d52ec6301b1584db","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_vif_model(self, image_meta\u003dNone, vif_model\u003dNone):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        model \u003d vif_model"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_61f50051","line":230,"range":{"start_line":230,"start_character":20,"end_line":230,"end_character":42},"updated":"2020-09-10 13:50:23.000000000","message":"nit: could inline this now","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7b36b536e1a38bf6cb96e316df4ccd93988f6629","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_vif_model(self, image_meta\u003dNone, vif_model\u003dNone):"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        model \u003d vif_model"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ea0d4e3e","line":230,"range":{"start_line":230,"start_character":20,"end_line":230,"end_character":42},"in_reply_to":"9f560f44_61f50051","updated":"2020-09-11 15:41:58.000000000","message":"If I\u0027m interpreting your comment correctly, you are suggesting to use CONF.libvirt.virt_type directly in the comparison below. Done.","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0b3efcb9c787fba9a02fb5e23168bb05c3645760","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        model \u003d vif_model"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        # If the user has specified a \u0027vif_model\u0027 against the"},{"line_number":235,"context_line":"        # image then honour that model"},{"line_number":236,"context_line":"        if image_meta:"},{"line_number":237,"context_line":"            model \u003d osinfo.HardwareProperties(image_meta).network_model"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        # If the virt type is KVM/QEMU/VZ(Parallels), then use virtio according"},{"line_number":240,"context_line":"        # to the global config parameter"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_5d37ddb0","line":237,"range":{"start_line":234,"start_character":6,"end_line":237,"end_character":71},"updated":"2020-09-11 19:04:04.000000000","message":"by the way its really not obvious that this is using the vif model set in the image but it is\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/osinfo.py#L139-L142\n\n@property\n    def network_model(self):\n        return self.img_props.get(\u0027hw_vif_model\u0027,\n                                  self.os_info_obj.network_model)\n\nso this gets the vif model form the image properties and if that is not set then it fall back to osinfo to try and set a default which tries to set it based on the distro name.\n\nso the  comment is correct its just not readily  apparent that that is what is happening.","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8154c1f22d10ccc18d3ab462d52ec6301b1584db","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        image_meta \u003d instance.image_meta"},{"line_number":667,"context_line":"        vif_model \u003d self._get_vif_model(image_meta\u003dimage_meta)"},{"line_number":668,"context_line":"        multiqueue \u003d (self._requests_multiqueue(image_meta) and"},{"line_number":669,"context_line":"                      vif_model \u003d\u003d network_model.VIF_MODEL_VIRTIO)"},{"line_number":670,"context_line":"        nova.privsep.linux_net.create_tap_dev(dev, mac, multiqueue\u003dmultiqueue)"},{"line_number":671,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":672,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_c1be8c63","line":669,"updated":"2020-09-10 13:50:23.000000000","message":"It wasn\u0027t entirely clear to me from the commit message whether this is because virtio is the only one that supports multiqueue, or because it\u0027s the only one you\u0027ve tested. If it\u0027s the former, could you add a context comment explaining why we can only use multiqueue with virtio-based tap devices? If it\u0027s the latter, could you add a TODO to explore support for other VIF models?\n\nI also wonder if we should log if the user requested multiqueue but isn\u0027t using a virtio interface? This is pure misconfiguration at present, right?","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7b36b536e1a38bf6cb96e316df4ccd93988f6629","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        image_meta \u003d instance.image_meta"},{"line_number":667,"context_line":"        vif_model \u003d self._get_vif_model(image_meta\u003dimage_meta)"},{"line_number":668,"context_line":"        multiqueue \u003d (self._requests_multiqueue(image_meta) and"},{"line_number":669,"context_line":"                      vif_model \u003d\u003d network_model.VIF_MODEL_VIRTIO)"},{"line_number":670,"context_line":"        nova.privsep.linux_net.create_tap_dev(dev, mac, multiqueue\u003dmultiqueue)"},{"line_number":671,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":672,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_2d8e4078","line":669,"in_reply_to":"9f560f44_c1be8c63","updated":"2020-09-11 15:41:58.000000000","message":"Hi Stephen. It is not only the only one I tested, but as requested by Sean Mooney in his comment, I added extra checks to only allow virtio devices access to the new behavior.\n\nI am myself not familiar with all the code paths that go through here. \n\nYes, as I have stumbled across this bug, the virtio devices work perfectly with multiqueue, but the code wasn\u0027t including the parameter to the interface creation. This is what this fix addresses.\n\nThis is the commit that added support for multiqueue but nobody was invoking it with the parameter:\n\nhttps://github.com/openstack/nova/commit/41d601851dc01c5ed1058ffedd23e7856200b628","commit_id":"b25ffb284bd9ec629a764162deb1257d3c4ef358"}],"releasenotes/notes/bug-1893263-769acadc4b6141d0.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"72b6603302b1ce3dd3b2a4065924737f5a8acfc6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Addressed an issue that prevented instances using multiqueue feature from"},{"line_number":5,"context_line":"    being created successfully when their vif_type is TAP."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"9f560f44_e5a4f84d","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":58},"updated":"2020-09-02 18:55:37.000000000","message":"nit this is boarderline a feature but im pretty sure we just overlooked it so im ok with treating this as a bug.\nwe will see what other think but i think its ok.","commit_id":"4e696e1f68f7ab5e23cfd4d6a101b7b32a9a7c18"}]}
