)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9f9a6c9234ebbfefa6e39152df8717d8667e2653","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"12ef181d_cf50d195","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":36},"updated":"2021-02-09 15:33:19.000000000","message":"Currently, if","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9f9a6c9234ebbfefa6e39152df8717d8667e2653","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a26887f_b004f3a4","line":11,"range":{"start_line":11,"start_character":15,"end_line":11,"end_character":16},"updated":"2021-02-09 15:33:19.000000000","message":"from","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"4b00e340_7cbf6f8e","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":36},"in_reply_to":"12ef181d_cf50d195","updated":"2021-02-22 15:12:16.000000000","message":"Done","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"625eba1c_660997cc","line":11,"range":{"start_line":11,"start_character":15,"end_line":11,"end_character":16},"in_reply_to":"7a26887f_b004f3a4","updated":"2021-02-22 15:12:16.000000000","message":"Done","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9f9a6c9234ebbfefa6e39152df8717d8667e2653","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9d360558_f56777d7","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":26},"updated":"2021-02-09 15:33:19.000000000","message":"only reads","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds from_persistent_config kwargs to get_interface_by_cfg()"},{"line_number":10,"context_line":"and get_disk() so that the caller can specify which domain config the"},{"line_number":11,"context_line":"devices is read. So far if there was both a live domain and a persistent"},{"line_number":12,"context_line":"domain then nova only read from the live domain. In a later patch during"},{"line_number":13,"context_line":"device detach these calls will be used to detach from the persistent"},{"line_number":14,"context_line":"domain separately from the live domain."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"2098a160_a83238be","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":26},"in_reply_to":"9d360558_f56777d7","updated":"2021-02-22 15:12:16.000000000","message":"Done","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"57c2436c19e517fc75bd53dbd66f6a2ec0ed6def","unresolved":true,"context_lines":[{"line_number":24036,"context_line":""},{"line_number":24037,"context_line":"        dom.XMLDesc.assert_has_calls([mock.call(0)] * 3)"},{"line_number":24038,"context_line":""},{"line_number":24039,"context_line":"    def test_get_disk_xml_from_persistent_config(self):"},{"line_number":24040,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":24041,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":24042,"context_line":"                \u003cdevices\u003e"},{"line_number":24043,"context_line":"                  \u003cdisk type\u003d\"file\"\u003e"},{"line_number":24044,"context_line":"                     \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24045,"context_line":"                     \u003ctarget dev\u003d\"vda\" bus\u003d\"virtio\"/\u003e"},{"line_number":24046,"context_line":"                     \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24047,"context_line":"                  \u003c/disk\u003e"},{"line_number":24048,"context_line":"                  \u003cdisk type\u003d\"block\"\u003e"},{"line_number":24049,"context_line":"                    \u003csource dev\u003d\"/path/to/dev/1\"/\u003e"},{"line_number":24050,"context_line":"                    \u003ctarget dev\u003d\"vdb\" bus\u003d\"virtio\" serial\u003d\"1234\"/\u003e"},{"line_number":24051,"context_line":"                  \u003c/disk\u003e"},{"line_number":24052,"context_line":"                \u003c/devices\u003e"},{"line_number":24053,"context_line":"              \u003c/domain\u003e"},{"line_number":24054,"context_line":"              \"\"\""},{"line_number":24055,"context_line":""},{"line_number":24056,"context_line":"        diska_xml \u003d \"\"\"\u003cdisk type\u003d\"file\" device\u003d\"disk\"\u003e"},{"line_number":24057,"context_line":"  \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24058,"context_line":"  \u003ctarget bus\u003d\"virtio\" dev\u003d\"vda\"/\u003e"},{"line_number":24059,"context_line":"  \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24060,"context_line":"\u003c/disk\u003e\"\"\""},{"line_number":24061,"context_line":""},{"line_number":24062,"context_line":"        dom \u003d mock.MagicMock()"},{"line_number":24063,"context_line":"        dom.XMLDesc.return_value \u003d dom_xml"},{"line_number":24064,"context_line":"        guest \u003d libvirt_guest.Guest(dom)"},{"line_number":24065,"context_line":""},{"line_number":24066,"context_line":"        actual_diska_xml \u003d guest.get_disk("},{"line_number":24067,"context_line":"            \u0027vda\u0027, from_persistent_config\u003dTrue).to_xml()"},{"line_number":24068,"context_line":"        self.assertXmlEqual(diska_xml, actual_diska_xml)"},{"line_number":24069,"context_line":"        dom.XMLDesc.assert_called_once_with("},{"line_number":24070,"context_line":"            fakelibvirt.VIR_DOMAIN_XML_INACTIVE)"},{"line_number":24071,"context_line":""},{"line_number":24072,"context_line":"    def test_vcpu_model_from_config(self):"},{"line_number":24073,"context_line":"        drv \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"526d5ecc_f9215049","line":24070,"range":{"start_line":24039,"start_character":0,"end_line":24070,"end_character":48},"updated":"2021-02-16 14:48:50.000000000","message":"Why is this here and not in nova/tests/unit/virt/libvirt/test_guest.py along with test_get_interface_by_cfg_persistent_domain?","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":true,"context_lines":[{"line_number":24036,"context_line":""},{"line_number":24037,"context_line":"        dom.XMLDesc.assert_has_calls([mock.call(0)] * 3)"},{"line_number":24038,"context_line":""},{"line_number":24039,"context_line":"    def test_get_disk_xml_from_persistent_config(self):"},{"line_number":24040,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":24041,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":24042,"context_line":"                \u003cdevices\u003e"},{"line_number":24043,"context_line":"                  \u003cdisk type\u003d\"file\"\u003e"},{"line_number":24044,"context_line":"                     \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24045,"context_line":"                     \u003ctarget dev\u003d\"vda\" bus\u003d\"virtio\"/\u003e"},{"line_number":24046,"context_line":"                     \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24047,"context_line":"                  \u003c/disk\u003e"},{"line_number":24048,"context_line":"                  \u003cdisk type\u003d\"block\"\u003e"},{"line_number":24049,"context_line":"                    \u003csource dev\u003d\"/path/to/dev/1\"/\u003e"},{"line_number":24050,"context_line":"                    \u003ctarget dev\u003d\"vdb\" bus\u003d\"virtio\" serial\u003d\"1234\"/\u003e"},{"line_number":24051,"context_line":"                  \u003c/disk\u003e"},{"line_number":24052,"context_line":"                \u003c/devices\u003e"},{"line_number":24053,"context_line":"              \u003c/domain\u003e"},{"line_number":24054,"context_line":"              \"\"\""},{"line_number":24055,"context_line":""},{"line_number":24056,"context_line":"        diska_xml \u003d \"\"\"\u003cdisk type\u003d\"file\" device\u003d\"disk\"\u003e"},{"line_number":24057,"context_line":"  \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24058,"context_line":"  \u003ctarget bus\u003d\"virtio\" dev\u003d\"vda\"/\u003e"},{"line_number":24059,"context_line":"  \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24060,"context_line":"\u003c/disk\u003e\"\"\""},{"line_number":24061,"context_line":""},{"line_number":24062,"context_line":"        dom \u003d mock.MagicMock()"},{"line_number":24063,"context_line":"        dom.XMLDesc.return_value \u003d dom_xml"},{"line_number":24064,"context_line":"        guest \u003d libvirt_guest.Guest(dom)"},{"line_number":24065,"context_line":""},{"line_number":24066,"context_line":"        actual_diska_xml \u003d guest.get_disk("},{"line_number":24067,"context_line":"            \u0027vda\u0027, from_persistent_config\u003dTrue).to_xml()"},{"line_number":24068,"context_line":"        self.assertXmlEqual(diska_xml, actual_diska_xml)"},{"line_number":24069,"context_line":"        dom.XMLDesc.assert_called_once_with("},{"line_number":24070,"context_line":"            fakelibvirt.VIR_DOMAIN_XML_INACTIVE)"},{"line_number":24071,"context_line":""},{"line_number":24072,"context_line":"    def test_vcpu_model_from_config(self):"},{"line_number":24073,"context_line":"        drv \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c04b077a_f741c3b4","line":24070,"range":{"start_line":24039,"start_character":0,"end_line":24070,"end_character":48},"in_reply_to":"526d5ecc_f9215049","updated":"2021-02-22 15:12:16.000000000","message":"I\u0027ve followed the pattern above in test_get_disk_xml(). So I can move this test but then I have to move test_get_disk_xml() as well. I will do that in a separate patch.","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf2cb17a3569c34f8f1132dc5ba31c00add229be","unresolved":false,"context_lines":[{"line_number":24036,"context_line":""},{"line_number":24037,"context_line":"        dom.XMLDesc.assert_has_calls([mock.call(0)] * 3)"},{"line_number":24038,"context_line":""},{"line_number":24039,"context_line":"    def test_get_disk_xml_from_persistent_config(self):"},{"line_number":24040,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":24041,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":24042,"context_line":"                \u003cdevices\u003e"},{"line_number":24043,"context_line":"                  \u003cdisk type\u003d\"file\"\u003e"},{"line_number":24044,"context_line":"                     \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24045,"context_line":"                     \u003ctarget dev\u003d\"vda\" bus\u003d\"virtio\"/\u003e"},{"line_number":24046,"context_line":"                     \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24047,"context_line":"                  \u003c/disk\u003e"},{"line_number":24048,"context_line":"                  \u003cdisk type\u003d\"block\"\u003e"},{"line_number":24049,"context_line":"                    \u003csource dev\u003d\"/path/to/dev/1\"/\u003e"},{"line_number":24050,"context_line":"                    \u003ctarget dev\u003d\"vdb\" bus\u003d\"virtio\" serial\u003d\"1234\"/\u003e"},{"line_number":24051,"context_line":"                  \u003c/disk\u003e"},{"line_number":24052,"context_line":"                \u003c/devices\u003e"},{"line_number":24053,"context_line":"              \u003c/domain\u003e"},{"line_number":24054,"context_line":"              \"\"\""},{"line_number":24055,"context_line":""},{"line_number":24056,"context_line":"        diska_xml \u003d \"\"\"\u003cdisk type\u003d\"file\" device\u003d\"disk\"\u003e"},{"line_number":24057,"context_line":"  \u003csource file\u003d\"disk1_file\"/\u003e"},{"line_number":24058,"context_line":"  \u003ctarget bus\u003d\"virtio\" dev\u003d\"vda\"/\u003e"},{"line_number":24059,"context_line":"  \u003cserial\u003e0e38683e-f0af-418f-a3f1-6b67ea0f919d\u003c/serial\u003e"},{"line_number":24060,"context_line":"\u003c/disk\u003e\"\"\""},{"line_number":24061,"context_line":""},{"line_number":24062,"context_line":"        dom \u003d mock.MagicMock()"},{"line_number":24063,"context_line":"        dom.XMLDesc.return_value \u003d dom_xml"},{"line_number":24064,"context_line":"        guest \u003d libvirt_guest.Guest(dom)"},{"line_number":24065,"context_line":""},{"line_number":24066,"context_line":"        actual_diska_xml \u003d guest.get_disk("},{"line_number":24067,"context_line":"            \u0027vda\u0027, from_persistent_config\u003dTrue).to_xml()"},{"line_number":24068,"context_line":"        self.assertXmlEqual(diska_xml, actual_diska_xml)"},{"line_number":24069,"context_line":"        dom.XMLDesc.assert_called_once_with("},{"line_number":24070,"context_line":"            fakelibvirt.VIR_DOMAIN_XML_INACTIVE)"},{"line_number":24071,"context_line":""},{"line_number":24072,"context_line":"    def test_vcpu_model_from_config(self):"},{"line_number":24073,"context_line":"        drv \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dd1d5782_8a38326e","line":24070,"range":{"start_line":24039,"start_character":0,"end_line":24070,"end_character":48},"in_reply_to":"c04b077a_f741c3b4","updated":"2021-02-23 15:57:11.000000000","message":"Done in the FUP https://review.opendev.org/c/openstack/nova/+/777151","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"9edf5536b4745547757872fe3578484c60777b7b","unresolved":true,"context_lines":[{"line_number":362,"context_line":"        flags \u003d 0"},{"line_number":363,"context_line":"        if from_persistent_config:"},{"line_number":364,"context_line":"            flags |\u003d libvirt.VIR_DOMAIN_XML_INACTIVE"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        try:"},{"line_number":367,"context_line":"            config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":368,"context_line":"            config.parse_str("}],"source_content_type":"text/x-python","patch_set":4,"id":"9ca14249_ae27e814","line":365,"updated":"2021-01-29 14:02:36.000000000","message":"Thanks for splitting this out into a separate patch.\n\nAnd the three lines w/ bitwise OR read clearer; instead of a one-liner  using a ternary operation, like:\n\n     flags |\u003d libvirt.VIR_DOMAIN_XML_INACTIVE if (from_persistent_config) else 0","commit_id":"2f2be57199018da234a9875c04e663a8d5186192"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9f9a6c9234ebbfefa6e39152df8717d8667e2653","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return interfaces"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_interface_by_cfg(self, cfg, from_persistent_config\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Lookup a full LibvirtConfigGuestDevice with"},{"line_number":232,"context_line":"        LibvirtConfigGuesDevice generated"},{"line_number":233,"context_line":"        by nova.virt.libvirt.vif.get_config."}],"source_content_type":"text/x-python","patch_set":5,"id":"90fdb981_a48e29ca","line":230,"updated":"2021-02-09 15:33:19.000000000","message":"nit: type hints would be nice, while we\u0027re here","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1db3046f2aee1427fb8339d44b007b5a1ec4d12","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return interfaces"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_interface_by_cfg(self, cfg, from_persistent_config\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Lookup a full LibvirtConfigGuestDevice with"},{"line_number":232,"context_line":"        LibvirtConfigGuesDevice generated"},{"line_number":233,"context_line":"        by nova.virt.libvirt.vif.get_config."}],"source_content_type":"text/x-python","patch_set":5,"id":"96270df3_817f8d14","line":230,"in_reply_to":"43adcb81_c1acf839","updated":"2021-02-23 16:34:33.000000000","message":"Done in a FUP https://review.opendev.org/c/openstack/nova/+/777159","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return interfaces"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_interface_by_cfg(self, cfg, from_persistent_config\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Lookup a full LibvirtConfigGuestDevice with"},{"line_number":232,"context_line":"        LibvirtConfigGuesDevice generated"},{"line_number":233,"context_line":"        by nova.virt.libvirt.vif.get_config."}],"source_content_type":"text/x-python","patch_set":5,"id":"43adcb81_c1acf839","line":230,"in_reply_to":"90fdb981_a48e29ca","updated":"2021-02-22 15:12:16.000000000","message":"I have to take that separately as guest.py has 51 mypy errors right now that needs to be fixed first to enable mypy on this file","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9f9a6c9234ebbfefa6e39152df8717d8667e2653","unresolved":true,"context_lines":[{"line_number":250,"context_line":"                # NOTE(gibi): LibvirtConfigGuest subtypes does a custom"},{"line_number":251,"context_line":"                # equality check based on available information on nova side"},{"line_number":252,"context_line":"                if cfg \u003d\u003d interface:"},{"line_number":253,"context_line":"                    return interface"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def get_vcpus_info(self):"},{"line_number":256,"context_line":"        \"\"\"Returns virtual cpus information of guest."}],"source_content_type":"text/x-python","patch_set":5,"id":"2e06f341_400cba42","line":253,"updated":"2021-02-09 15:33:19.000000000","message":"We really need to move all these APIs to nova.virt.libvirt.guest eventually...","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":true,"context_lines":[{"line_number":250,"context_line":"                # NOTE(gibi): LibvirtConfigGuest subtypes does a custom"},{"line_number":251,"context_line":"                # equality check based on available information on nova side"},{"line_number":252,"context_line":"                if cfg \u003d\u003d interface:"},{"line_number":253,"context_line":"                    return interface"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def get_vcpus_info(self):"},{"line_number":256,"context_line":"        \"\"\"Returns virtual cpus information of guest."}],"source_content_type":"text/x-python","patch_set":5,"id":"3293766d_bb64f488","line":253,"in_reply_to":"2e06f341_400cba42","updated":"2021-02-22 15:12:16.000000000","message":"I don\u0027t really get your comment, we are in the libvirt.guest here","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"57c2436c19e517fc75bd53dbd66f6a2ec0ed6def","unresolved":true,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return self.get_all_devices(vconfig.LibvirtConfigGuestDisk)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def get_all_devices(self, devtype\u003dNone, from_persistent_config\u003dFalse):"},{"line_number":353,"context_line":"        \"\"\"Returns all devices for a guest"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :param devtype: a LibvirtConfigGuestDevice subclass class"},{"line_number":356,"context_line":"        :param from_persistent_config: query the device from the persistent"},{"line_number":357,"context_line":"            domain (i.e. inactive XML configuration that\u0027ll be used on next"},{"line_number":358,"context_line":"            start of the domain) instead of the live domain configuration"},{"line_number":359,"context_line":"        :returns: a list of LibvirtConfigGuestDevice instances"},{"line_number":360,"context_line":"        \"\"\""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        flags \u003d 0"},{"line_number":363,"context_line":"        if from_persistent_config:"},{"line_number":364,"context_line":"            flags |\u003d libvirt.VIR_DOMAIN_XML_INACTIVE"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        try:"},{"line_number":367,"context_line":"            config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":368,"context_line":"            config.parse_str("},{"line_number":369,"context_line":"                self._domain.XMLDesc(flags))"},{"line_number":370,"context_line":"        except Exception:"},{"line_number":371,"context_line":"            return []"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        devs \u003d []"},{"line_number":374,"context_line":"        for dev in config.devices:"},{"line_number":375,"context_line":"            if (devtype is None or"},{"line_number":376,"context_line":"                isinstance(dev, devtype)):"},{"line_number":377,"context_line":"                devs.append(dev)"},{"line_number":378,"context_line":"        return devs"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def detach_device_with_retry(self, get_device_conf_func, device, live,"},{"line_number":381,"context_line":"                                 max_retry_count\u003d7, inc_sleep_time\u003d10,"}],"source_content_type":"text/x-python","patch_set":5,"id":"d703614a_9320465d","line":378,"range":{"start_line":352,"start_character":3,"end_line":378,"end_character":19},"updated":"2021-02-16 14:48:50.000000000","message":"There\u0027s no tests for this with from_persistent_config\u003dTrue right?","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac05cbae414a50e91b17cac85964e6c9c4097922","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return self.get_all_devices(vconfig.LibvirtConfigGuestDisk)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def get_all_devices(self, devtype\u003dNone, from_persistent_config\u003dFalse):"},{"line_number":353,"context_line":"        \"\"\"Returns all devices for a guest"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :param devtype: a LibvirtConfigGuestDevice subclass class"},{"line_number":356,"context_line":"        :param from_persistent_config: query the device from the persistent"},{"line_number":357,"context_line":"            domain (i.e. inactive XML configuration that\u0027ll be used on next"},{"line_number":358,"context_line":"            start of the domain) instead of the live domain configuration"},{"line_number":359,"context_line":"        :returns: a list of LibvirtConfigGuestDevice instances"},{"line_number":360,"context_line":"        \"\"\""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        flags \u003d 0"},{"line_number":363,"context_line":"        if from_persistent_config:"},{"line_number":364,"context_line":"            flags |\u003d libvirt.VIR_DOMAIN_XML_INACTIVE"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        try:"},{"line_number":367,"context_line":"            config \u003d vconfig.LibvirtConfigGuest()"},{"line_number":368,"context_line":"            config.parse_str("},{"line_number":369,"context_line":"                self._domain.XMLDesc(flags))"},{"line_number":370,"context_line":"        except Exception:"},{"line_number":371,"context_line":"            return []"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        devs \u003d []"},{"line_number":374,"context_line":"        for dev in config.devices:"},{"line_number":375,"context_line":"            if (devtype is None or"},{"line_number":376,"context_line":"                isinstance(dev, devtype)):"},{"line_number":377,"context_line":"                devs.append(dev)"},{"line_number":378,"context_line":"        return devs"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def detach_device_with_retry(self, get_device_conf_func, device, live,"},{"line_number":381,"context_line":"                                 max_retry_count\u003d7, inc_sleep_time\u003d10,"}],"source_content_type":"text/x-python","patch_set":5,"id":"aec9001d_b4082cb4","line":378,"range":{"start_line":352,"start_character":3,"end_line":378,"end_character":19},"in_reply_to":"d703614a_9320465d","updated":"2021-02-22 15:12:16.000000000","message":"Good point. Now I added a step to GuestTestCases.test_get_devices() test","commit_id":"a5dc8a635f252fbb27953fa2be0b0bebd60b3c78"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6668dabd9eab319093778942691b794d9ed07608","unresolved":true,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_disk(self, device, from_persistent_config\u003dFalse):"},{"line_number":319,"context_line":"        \"\"\"Returns the disk mounted at device"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        :returns LivirtConfigGuestDisk: mounted at device or None"},{"line_number":322,"context_line":"        \"\"\""},{"line_number":323,"context_line":"        flags \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"78217a82_49001031","line":320,"updated":"2021-02-23 11:47:31.000000000","message":"would be good to add docstrings here, even if we can\u0027t do types","commit_id":"a634103b15763d038030f9e213eea844e39553c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1db3046f2aee1427fb8339d44b007b5a1ec4d12","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_disk(self, device, from_persistent_config\u003dFalse):"},{"line_number":319,"context_line":"        \"\"\"Returns the disk mounted at device"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        :returns LivirtConfigGuestDisk: mounted at device or None"},{"line_number":322,"context_line":"        \"\"\""},{"line_number":323,"context_line":"        flags \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"8f47c402_0a1d1595","line":320,"in_reply_to":"78217a82_49001031","updated":"2021-02-23 16:34:33.000000000","message":"Done in a FUP","commit_id":"a634103b15763d038030f9e213eea844e39553c9"}]}
