)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ac3afc15e677d670697b8c2da280224ca15b516","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e0078301_ea127403","updated":"2022-06-02 17:49:52.000000000","message":"at least based on my local system iommu support is not repoted in the domain caps api\non libvirt 7.9.0\n\n\n\n[18:47:25]➜ virsh domcapabilities --machine q35 --arch x86_64^C\n~ via 🐍 v3.8.13 (.venv) \n[18:47:30]❯ virsh version --daemon \nCompiled against library: libvirt 7.9.0\nUsing library: libvirt 7.9.0\nUsing API: QEMU 7.9.0\nRunning hypervisor: QEMU 6.1.1\nRunning against daemon: 7.9.0\n\n~ via 🐍 v3.8.13 (.venv) took 3s \n[18:48:41]➜ virsh domcapabilities --machine q35 --arch x86_64\n\u003cdomainCapabilities\u003e\n  \u003cpath\u003e/run/current-system/sw/bin/qemu-system-x86_64\u003c/path\u003e\n  \u003cdomain\u003ekvm\u003c/domain\u003e\n  \u003cmachine\u003epc-q35-6.1\u003c/machine\u003e\n  \u003carch\u003ex86_64\u003c/arch\u003e\n  \u003cvcpu max\u003d\u0027288\u0027/\u003e\n  \u003ciothreads supported\u003d\u0027yes\u0027/\u003e\n  \u003cos supported\u003d\u0027yes\u0027\u003e\n    \u003cenum name\u003d\u0027firmware\u0027/\u003e\n    \u003cloader supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027type\u0027\u003e\n        \u003cvalue\u003erom\u003c/value\u003e\n        \u003cvalue\u003epflash\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027readonly\u0027\u003e\n        \u003cvalue\u003eyes\u003c/value\u003e\n        \u003cvalue\u003eno\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027secure\u0027\u003e\n        \u003cvalue\u003eno\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/loader\u003e\n  \u003c/os\u003e\n  \u003ccpu\u003e\n    \u003cmode name\u003d\u0027host-passthrough\u0027 supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027hostPassthroughMigratable\u0027\u003e\n        \u003cvalue\u003eon\u003c/value\u003e\n        \u003cvalue\u003eoff\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/mode\u003e\n    \u003cmode name\u003d\u0027maximum\u0027 supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027maximumMigratable\u0027\u003e\n        \u003cvalue\u003eon\u003c/value\u003e\n        \u003cvalue\u003eoff\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/mode\u003e\n    \u003cmode name\u003d\u0027host-model\u0027 supported\u003d\u0027yes\u0027\u003e\n      \u003cmodel fallback\u003d\u0027forbid\u0027\u003eSkylake-Client-IBRS\u003c/model\u003e\n      \u003cvendor\u003eIntel\u003c/vendor\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027ss\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027vmx\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027pdcm\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027hypervisor\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027tsc_adjust\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027clflushopt\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027umip\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027md-clear\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027stibp\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027arch-capabilities\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027ssbd\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027xsaves\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027pdpe1gb\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027invtsc\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027ibpb\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027ibrs\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027amd-stibp\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027amd-ssbd\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027rsba\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027skip-l1dfl-vmentry\u0027/\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027pschange-mc-no\u0027/\u003e\n      \u003cfeature policy\u003d\u0027disable\u0027 name\u003d\u0027hle\u0027/\u003e\n      \u003cfeature policy\u003d\u0027disable\u0027 name\u003d\u0027rtm\u0027/\u003e\n    \u003c/mode\u003e\n    \u003cmode name\u003d\u0027custom\u0027 supported\u003d\u0027yes\u0027\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eqemu64\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eqemu32\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003ephenom\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003epentium3\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003epentium2\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003epentium\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003en270\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003ekvm64\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003ekvm32\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003ecoreduo\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003ecore2duo\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eathlon\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eWestmere-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eWestmere\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSnowridge\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSkylake-Server-noTSX-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSkylake-Server-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSkylake-Server\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eSkylake-Client-noTSX-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSkylake-Client-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eSkylake-Client\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eSandyBridge-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eSandyBridge\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003ePenryn\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eOpteron_G5\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eOpteron_G4\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eOpteron_G3\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eOpteron_G2\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eOpteron_G1\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eNehalem-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eNehalem\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eIvyBridge-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eIvyBridge\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eIcelake-Server-noTSX\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eIcelake-Server\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027 deprecated\u003d\u0027yes\u0027\u003eIcelake-Client-noTSX\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027 deprecated\u003d\u0027yes\u0027\u003eIcelake-Client\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eHaswell-noTSX-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eHaswell-noTSX\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eHaswell-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eHaswell\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eEPYC-Rome\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eEPYC-Milan\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eEPYC-IBPB\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eEPYC\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eDhyana\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eCooperlake\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eConroe\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eCascadelake-Server-noTSX\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eCascadelake-Server\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eBroadwell-noTSX-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003eBroadwell-noTSX\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eBroadwell-IBRS\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027no\u0027\u003eBroadwell\u003c/model\u003e\n      \u003cmodel usable\u003d\u0027yes\u0027\u003e486\u003c/model\u003e\n    \u003c/mode\u003e\n  \u003c/cpu\u003e\n  \u003cmemoryBacking supported\u003d\u0027yes\u0027\u003e\n    \u003cenum name\u003d\u0027sourceType\u0027\u003e\n      \u003cvalue\u003efile\u003c/value\u003e\n      \u003cvalue\u003eanonymous\u003c/value\u003e\n      \u003cvalue\u003ememfd\u003c/value\u003e\n    \u003c/enum\u003e\n  \u003c/memoryBacking\u003e\n  \u003cdevices\u003e\n    \u003cdisk supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027diskDevice\u0027\u003e\n        \u003cvalue\u003edisk\u003c/value\u003e\n        \u003cvalue\u003ecdrom\u003c/value\u003e\n        \u003cvalue\u003efloppy\u003c/value\u003e\n        \u003cvalue\u003elun\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027bus\u0027\u003e\n        \u003cvalue\u003efdc\u003c/value\u003e\n        \u003cvalue\u003escsi\u003c/value\u003e\n        \u003cvalue\u003evirtio\u003c/value\u003e\n        \u003cvalue\u003eusb\u003c/value\u003e\n        \u003cvalue\u003esata\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027model\u0027\u003e\n        \u003cvalue\u003evirtio\u003c/value\u003e\n        \u003cvalue\u003evirtio-transitional\u003c/value\u003e\n        \u003cvalue\u003evirtio-non-transitional\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/disk\u003e\n    \u003cgraphics supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027type\u0027\u003e\n        \u003cvalue\u003esdl\u003c/value\u003e\n        \u003cvalue\u003evnc\u003c/value\u003e\n        \u003cvalue\u003espice\u003c/value\u003e\n        \u003cvalue\u003eegl-headless\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/graphics\u003e\n    \u003cvideo supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027modelType\u0027\u003e\n        \u003cvalue\u003evga\u003c/value\u003e\n        \u003cvalue\u003ecirrus\u003c/value\u003e\n        \u003cvalue\u003evmvga\u003c/value\u003e\n        \u003cvalue\u003eqxl\u003c/value\u003e\n        \u003cvalue\u003evirtio\u003c/value\u003e\n        \u003cvalue\u003enone\u003c/value\u003e\n        \u003cvalue\u003ebochs\u003c/value\u003e\n        \u003cvalue\u003eramfb\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/video\u003e\n    \u003chostdev supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027mode\u0027\u003e\n        \u003cvalue\u003esubsystem\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027startupPolicy\u0027\u003e\n        \u003cvalue\u003edefault\u003c/value\u003e\n        \u003cvalue\u003emandatory\u003c/value\u003e\n        \u003cvalue\u003erequisite\u003c/value\u003e\n        \u003cvalue\u003eoptional\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027subsysType\u0027\u003e\n        \u003cvalue\u003eusb\u003c/value\u003e\n        \u003cvalue\u003epci\u003c/value\u003e\n        \u003cvalue\u003escsi\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027capsType\u0027/\u003e\n      \u003cenum name\u003d\u0027pciBackend\u0027/\u003e\n    \u003c/hostdev\u003e\n    \u003crng supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027model\u0027\u003e\n        \u003cvalue\u003evirtio\u003c/value\u003e\n        \u003cvalue\u003evirtio-transitional\u003c/value\u003e\n        \u003cvalue\u003evirtio-non-transitional\u003c/value\u003e\n      \u003c/enum\u003e\n      \u003cenum name\u003d\u0027backendModel\u0027\u003e\n        \u003cvalue\u003erandom\u003c/value\u003e\n        \u003cvalue\u003eegd\u003c/value\u003e\n        \u003cvalue\u003ebuiltin\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/rng\u003e\n    \u003cfilesystem supported\u003d\u0027yes\u0027\u003e\n      \u003cenum name\u003d\u0027driverType\u0027\u003e\n        \u003cvalue\u003epath\u003c/value\u003e\n        \u003cvalue\u003ehandle\u003c/value\u003e\n        \u003cvalue\u003evirtiofs\u003c/value\u003e\n      \u003c/enum\u003e\n    \u003c/filesystem\u003e\n  \u003c/devices\u003e\n  \u003cfeatures\u003e\n    \u003cgic supported\u003d\u0027no\u0027/\u003e\n    \u003cvmcoreinfo supported\u003d\u0027yes\u0027/\u003e\n    \u003cgenid supported\u003d\u0027yes\u0027/\u003e\n    \u003cbackingStoreInput supported\u003d\u0027yes\u0027/\u003e\n    \u003cbackup supported\u003d\u0027yes\u0027/\u003e\n    \u003csev supported\u003d\u0027no\u0027/\u003e\n  \u003c/features\u003e\n\u003c/domainCapabilities\u003e\n\n\n~ via 🐍 v3.8.13 (.venv) \n[18:48:44]➜ \n","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"64a28a62baebd2fa0053a80d41f74a81f43c3341","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2c3c667a_74bb6032","in_reply_to":"506ff5d6_1b116a11","updated":"2022-08-30 22:16:06.000000000","message":"Ack","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"71d6796befc3a4311b6c8299b80226130cb0c869","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"506ff5d6_1b116a11","in_reply_to":"e0078301_ea127403","updated":"2022-06-15 19:31:14.000000000","message":"Same from my env. too, but as we gonna add them in test, and I don\u0027t have a test env set up now. What\u0027s the best practice will be here?","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9cf78eba48f33b4870975c076a4d57fb2d8c3f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"52f1e703_2b394dbe","updated":"2022-08-25 12:38:30.000000000","message":"this patch is still wrong and need to be rewirteen.\n\nthe traits we merged are COMPUTE_VIOMMU\n\nand you have to detech supprot based on the architecure and the libvirt verion\n\nthe domain capablities api does not have the data you are adding tin the libvirt_data fixture so all the code that uses that is incorrect and shoudl be remvoed","commit_id":"93d92b54b2236a0655d9d3babf23e399dae894df"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"05d37baa10c2be843b2d3ebe3af9f2296e9ed8f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"4fd114c8_0e05fcd1","updated":"2022-08-31 08:21:44.000000000","message":"recheck on unrelated host not found error\n\n```\n2022-08-30 22:30:07.446271 | controller | 2022-08-30 21:35:33,342 117901 INFO     [tempest.lib.common.rest_client] Request (UnshelveToHostMultiNodesTest:test_unshelve_to_specific_host): 400 POST https://10.208.225.32/compute/v2.1/servers/051b136f-c5d6-40ac-8637-e7d999802ade/action 0.111s\n2022-08-30 22:30:07.446283 | controller | 2022-08-30 21:35:33,342 117901 DEBUG    [tempest.lib.common.rest_client] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-OpenStack-Nova-API-Version\u0027: \u00272.91\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n2022-08-30 22:30:07.446293 | controller |         Body: {\"unshelve\": {\"host\": \"ubuntu-focal-rax-dfw-0030909133\"}}\n2022-08-30 22:30:07.446304 | controller |     Response - Headers: {\u0027date\u0027: \u0027Tue, 30 Aug 2022 21:35:33 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.41 (Ubuntu)\u0027, \u0027openstack-api-version\u0027: \u0027compute 2.91\u0027, \u0027x-openstack-nova-api-version\u0027: \u00272.91\u0027, \u0027vary\u0027: \u0027OpenStack-API-Version,X-OpenStack-Nova-API-Version\u0027, \u0027content-type\u0027: \u0027application/json; charset\u003dUTF-8\u0027, \u0027content-length\u0027: \u0027108\u0027, \u0027x-openstack-request-id\u0027: \u0027req-1d708038-aac7-44c3-afd4-301d1c256564\u0027, \u0027x-compute-request-id\u0027: \u0027req-1d708038-aac7-44c3-afd4-301d1c256564\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027400\u0027, \u0027content-location\u0027: \u0027https://10.208.225.32/compute/v2.1/servers/051b136f-c5d6-40ac-8637-e7d999802ade/action\u0027}\n2022-08-30 22:30:07.446315 | controller |         Body: b\u0027{\"badRequest\": {\"code\": 400, \"message\": \"Compute host ubuntu-focal-rax-dfw-0030909133 could not be found.\"}}\u0027\n```","commit_id":"1fac5ba543cc5643881ed5d0b27f218d95e982fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab465db34b5c30e7a5f41d1935f1dac549a0c159","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"ab699090_60565a25","updated":"2022-09-01 11:14:00.000000000","message":"this is now logically correct but over complicated.\n\ni belive what i have pasted inline will work properly and captures the actual requirements.","commit_id":"9ea887bd4fd5453adac5542309114a317fc394e6"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"e9a2000a066b8d98e7bc0331038ab9baf69072e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"d05dbe90_6a99d693","updated":"2022-09-01 17:43:45.000000000","message":"recheck","commit_id":"4f9b6621eb91ff723cd670b2e655ba535c5c7c59"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7c641ccb11b5e64eba19897603a811cc202cb950","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"b0275637_6dfed578","updated":"2022-09-01 18:25:32.000000000","message":"Previously approved, just fixed a pep8 error. Note I have not reviewed this, I\u0027m just expediting for FF.","commit_id":"dc0556443541d2825cb507a70161128aaaf0a559"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"9fb64802e01acf94e5dd61f967ca2155e21c7ce5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"22f6fb9f_79ab5979","updated":"2022-09-01 20:44:13.000000000","message":"recheck on unrelated issue","commit_id":"dc0556443541d2825cb507a70161128aaaf0a559"}],"nova/scheduler/request_filter.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da21fc2a4f9ecb8dc63634a4f90a45a00386d9e6","unresolved":true,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_IOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"4b41e575_c108a361","line":217,"range":{"start_line":217,"start_character":28,"end_line":217,"end_character":41},"updated":"2022-07-07 10:49:35.000000000","message":"nit: i would prefer if this was COMPUTE_VIOMMU but ok","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1267613d11d463d647ab4abf32fecb6bed2242cf","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_IOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"37359c9a_68601320","line":217,"range":{"start_line":217,"start_character":28,"end_line":217,"end_character":41},"in_reply_to":"2dd3bf8f_2aae4a68","updated":"2022-08-30 22:15:41.000000000","message":"Done","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9cf78eba48f33b4870975c076a4d57fb2d8c3f1","unresolved":true,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_IOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"2dd3bf8f_2aae4a68","line":217,"range":{"start_line":217,"start_character":28,"end_line":217,"end_character":41},"in_reply_to":"4b41e575_c108a361","updated":"2022-08-25 12:38:30.000000000","message":"we went with viommu so this need to be updated\nhttps://github.com/openstack/os-traits/blob/master/os_traits/compute/viommu.py","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"012e81ef285838dbc227393176414e675b83dec0","unresolved":true,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_VIOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"45821750_d1f5691e","line":217,"updated":"2022-09-01 13:12:00.000000000","message":"TBC, that means that if you use the metadata vIOMMU, you need to make sure that all the hosts are either already upgraded or that you have enough capacity for that.","commit_id":"4f9b6621eb91ff723cd670b2e655ba535c5c7c59"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20871b1eaa77ab8fa7b3462b20c341ada29b3918","unresolved":true,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_VIOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"825c8962_d0c9473a","line":217,"in_reply_to":"45821750_d1f5691e","updated":"2022-09-01 13:21:23.000000000","message":"yes and that why i prviously suggested that we should have these patches in the other order or mege them together.\n\nits importnat that the schduler via this change validates the host supprot both for upgrades and for correct move operations.","commit_id":"4f9b6621eb91ff723cd670b2e655ba535c5c7c59"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4bfe782c873d8095b3bc198272da2676b2316aba","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"        \u0027hw_viommu_model\u0027: \u0027COMPUTE_VIOMMU\u0027,"},{"line_number":218,"context_line":"    }"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f564a61_b6186e73","line":217,"in_reply_to":"825c8962_d0c9473a","updated":"2022-09-01 13:34:10.000000000","message":"Agreed, this is a common pattern we have with traits : if you want to schedule on them, just make sure you have enough upgraded hosts.\nDon\u0027t see a problem with merging as it is then.","commit_id":"4f9b6621eb91ff723cd670b2e655ba535c5c7c59"}],"nova/tests/fixtures/libvirt_data.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5adeb9f88c79f2ebda7c42b82909db41bc2ba298","unresolved":true,"context_lines":[{"line_number":1738,"context_line":"      \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":1739,"context_line":"        \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":1740,"context_line":"        \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":1741,"context_line":"        \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":1742,"context_line":"        \u003cvalue\u003eintel\u003c/value\u003e"},{"line_number":1743,"context_line":"      \u003c/enum\u003e"},{"line_number":1744,"context_line":"    \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"84190a44_0ff8b550","line":1741,"range":{"start_line":1741,"start_character":7,"end_line":1741,"end_character":27},"updated":"2022-06-02 17:46:11.000000000","message":"libvirt does not have an auto does it?\n\nthis should match what we actully get form the domain xml","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"71d6796befc3a4311b6c8299b80226130cb0c869","unresolved":false,"context_lines":[{"line_number":1738,"context_line":"      \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":1739,"context_line":"        \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":1740,"context_line":"        \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":1741,"context_line":"        \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":1742,"context_line":"        \u003cvalue\u003eintel\u003c/value\u003e"},{"line_number":1743,"context_line":"      \u003c/enum\u003e"},{"line_number":1744,"context_line":"    \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"871793dd_35fce46c","line":1741,"range":{"start_line":1741,"start_character":7,"end_line":1741,"end_character":27},"in_reply_to":"84190a44_0ff8b550","updated":"2022-06-15 19:31:14.000000000","message":"Done","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da21fc2a4f9ecb8dc63634a4f90a45a00386d9e6","unresolved":true,"context_lines":[{"line_number":1154,"context_line":"    \u003c/video\u003e"},{"line_number":1155,"context_line":"    \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":1156,"context_line":"      \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":1157,"context_line":"        \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":1158,"context_line":"        \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":1159,"context_line":"        \u003cvalue\u003esmmuv3\u003c/value\u003e"},{"line_number":1160,"context_line":"        \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":1161,"context_line":"      \u003c/enum\u003e"}],"source_content_type":"text/x-python","patch_set":4,"id":"2d6d8767_829fc8e8","line":1158,"range":{"start_line":1157,"start_character":7,"end_line":1158,"end_character":27},"updated":"2022-07-07 10:49:35.000000000","message":"this is still wrong please remove none and auto form all sample data","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1267613d11d463d647ab4abf32fecb6bed2242cf","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"    \u003c/video\u003e"},{"line_number":1155,"context_line":"    \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":1156,"context_line":"      \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":1157,"context_line":"        \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":1158,"context_line":"        \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":1159,"context_line":"        \u003cvalue\u003esmmuv3\u003c/value\u003e"},{"line_number":1160,"context_line":"        \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":1161,"context_line":"      \u003c/enum\u003e"}],"source_content_type":"text/x-python","patch_set":4,"id":"c378cbe8_d7d21c62","line":1158,"range":{"start_line":1157,"start_character":7,"end_line":1158,"end_character":27},"in_reply_to":"2d6d8767_829fc8e8","updated":"2022-08-30 22:15:41.000000000","message":"Done","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5adeb9f88c79f2ebda7c42b82909db41bc2ba298","unresolved":true,"context_lines":[{"line_number":4054,"context_line":"        \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":4055,"context_line":"          \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":4056,"context_line":"            \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":4057,"context_line":"            \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":4058,"context_line":"            \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":4059,"context_line":"          \u003c/enum\u003e"},{"line_number":4060,"context_line":"        \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"13410dce_e7bfd3f4","line":4057,"updated":"2022-06-02 17:46:11.000000000","message":"i dont think libvirt supprot or reports  auto or none those are nova values.\nso thi is wrong\nit suppot intel smmuv3 and virtio\nhttps://libvirt.org/formatdomain.html#iommu-devices\n\nso this test is wrong","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"71d6796befc3a4311b6c8299b80226130cb0c869","unresolved":false,"context_lines":[{"line_number":4054,"context_line":"        \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":4055,"context_line":"          \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":4056,"context_line":"            \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":4057,"context_line":"            \u003cvalue\u003eauto\u003c/value\u003e"},{"line_number":4058,"context_line":"            \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":4059,"context_line":"          \u003c/enum\u003e"},{"line_number":4060,"context_line":"        \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af1f001_16ec7f43","line":4057,"in_reply_to":"13410dce_e7bfd3f4","updated":"2022-06-15 19:31:14.000000000","message":"Done","commit_id":"409139027b2d237bd25c9553b71336a7db805814"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da21fc2a4f9ecb8dc63634a4f90a45a00386d9e6","unresolved":true,"context_lines":[{"line_number":4053,"context_line":"        xml \u003d \"\"\""},{"line_number":4054,"context_line":"        \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":4055,"context_line":"          \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":4056,"context_line":"            \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":4057,"context_line":"            \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":4058,"context_line":"          \u003c/enum\u003e"},{"line_number":4059,"context_line":"        \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":4,"id":"8eccba99_4df75fdf","line":4056,"range":{"start_line":4056,"start_character":11,"end_line":4056,"end_character":31},"updated":"2022-07-07 10:49:35.000000000","message":"none is not valid in put data for this test.","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1267613d11d463d647ab4abf32fecb6bed2242cf","unresolved":false,"context_lines":[{"line_number":4053,"context_line":"        xml \u003d \"\"\""},{"line_number":4054,"context_line":"        \u003ciommu supported\u003d\u0027yes\u0027\u003e"},{"line_number":4055,"context_line":"          \u003cenum name\u003d\u0027modelType\u0027\u003e"},{"line_number":4056,"context_line":"            \u003cvalue\u003enone\u003c/value\u003e"},{"line_number":4057,"context_line":"            \u003cvalue\u003evirtio\u003c/value\u003e"},{"line_number":4058,"context_line":"          \u003c/enum\u003e"},{"line_number":4059,"context_line":"        \u003c/iommu\u003e"}],"source_content_type":"text/x-python","patch_set":4,"id":"782f462c_42536b18","line":4056,"range":{"start_line":4056,"start_character":11,"end_line":4056,"end_character":31},"in_reply_to":"8eccba99_4df75fdf","updated":"2022-08-30 22:15:41.000000000","message":"Done","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da21fc2a4f9ecb8dc63634a4f90a45a00386d9e6","unresolved":true,"context_lines":[{"line_number":12111,"context_line":"                iommu \u003d dom_caps[arch_type][machine_type].devices.iommu"},{"line_number":12112,"context_line":"                if iommu is not None:"},{"line_number":12113,"context_line":"                    supported_models.update(iommu.models)"},{"line_number":12114,"context_line":""},{"line_number":12115,"context_line":"        # construct the corresponding standard trait from the vIOMMU model name"},{"line_number":12116,"context_line":"        return {"},{"line_number":12117,"context_line":"            f\u0027COMPUTE_IOMMU_MODEL_{model.replace(\"-\", \"_\").upper()}\u0027: model"}],"source_content_type":"text/x-python","patch_set":4,"id":"ebaf00a8_d6f10f00","line":12114,"updated":"2022-07-07 10:49:35.000000000","message":"you also need to append auto if the supported_models contains virtio","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"1267613d11d463d647ab4abf32fecb6bed2242cf","unresolved":false,"context_lines":[{"line_number":12111,"context_line":"                iommu \u003d dom_caps[arch_type][machine_type].devices.iommu"},{"line_number":12112,"context_line":"                if iommu is not None:"},{"line_number":12113,"context_line":"                    supported_models.update(iommu.models)"},{"line_number":12114,"context_line":""},{"line_number":12115,"context_line":"        # construct the corresponding standard trait from the vIOMMU model name"},{"line_number":12116,"context_line":"        return {"},{"line_number":12117,"context_line":"            f\u0027COMPUTE_IOMMU_MODEL_{model.replace(\"-\", \"_\").upper()}\u0027: model"}],"source_content_type":"text/x-python","patch_set":4,"id":"67fcec74_b2e5ddd8","line":12114,"in_reply_to":"ebaf00a8_d6f10f00","updated":"2022-08-30 22:15:41.000000000","message":"Done","commit_id":"ac4ff515b6da5fa216fef79a4771f230c0d88cce"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27ad346f008ce7cad2ffd7577339f8620fc5455e","unresolved":true,"context_lines":[{"line_number":12209,"context_line":"        \"\"\""},{"line_number":12210,"context_line":"        all_models \u003d fields.VIOMMUModel.ALL"},{"line_number":12211,"context_line":""},{"line_number":12212,"context_line":"        dom_caps \u003d self._host.get_domain_capabilities()"},{"line_number":12213,"context_line":"        supported_models: ty.Set[str] \u003d set()"},{"line_number":12214,"context_line":"        for arch_type in dom_caps:"},{"line_number":12215,"context_line":"            for machine_type in dom_caps[arch_type]:"},{"line_number":12216,"context_line":"                iommu \u003d dom_caps[arch_type][machine_type].devices.iommu"},{"line_number":12217,"context_line":"                if iommu is not None:"},{"line_number":12218,"context_line":"                    supported_models.update(iommu.models)"},{"line_number":12219,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"029d675f_9be182a2","line":12216,"range":{"start_line":12212,"start_character":7,"end_line":12216,"end_character":71},"updated":"2022-08-31 18:23:48.000000000","message":"in cases people dont understand why i -2\u0027d this patch the domain caps api does not remore iommu capablities\n\nhttps://libvirt.org/formatdomaincaps.html\n\n\nthis only works in the tests because the test data is updated with incorrect info.\n\nthis need to be rewriten to check the livbirt and qemu version \nand report the modles based on that\nhttps://libvirt.org/formatdomain.html#iommu-devices\n\nSupported values are intel (for Q35 guests) smmuv3 (since 5.5.0, for ARM virt guests), and virtio (since 8.3.0, for Q35 and ARM virt guests).\n\nauto is a cpablity implemnted in nova not in livbirt and shoudl be reported always if we mit the min libvirt requirements.\n\nin pratice only virtio which is 8.3 need a check because our min libvirt is new enough for the intel and smmuv3","commit_id":"bca56b29f8ef7350d1d1f0feea337bd3c11ef38a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab465db34b5c30e7a5f41d1935f1dac549a0c159","unresolved":false,"context_lines":[{"line_number":12209,"context_line":"        \"\"\""},{"line_number":12210,"context_line":"        all_models \u003d fields.VIOMMUModel.ALL"},{"line_number":12211,"context_line":""},{"line_number":12212,"context_line":"        dom_caps \u003d self._host.get_domain_capabilities()"},{"line_number":12213,"context_line":"        supported_models: ty.Set[str] \u003d set()"},{"line_number":12214,"context_line":"        for arch_type in dom_caps:"},{"line_number":12215,"context_line":"            for machine_type in dom_caps[arch_type]:"},{"line_number":12216,"context_line":"                iommu \u003d dom_caps[arch_type][machine_type].devices.iommu"},{"line_number":12217,"context_line":"                if iommu is not None:"},{"line_number":12218,"context_line":"                    supported_models.update(iommu.models)"},{"line_number":12219,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"cb0ed5ec_b45bec7e","line":12216,"range":{"start_line":12212,"start_character":7,"end_line":12216,"end_character":71},"in_reply_to":"029d675f_9be182a2","updated":"2022-09-01 11:14:00.000000000","message":"resolving","commit_id":"bca56b29f8ef7350d1d1f0feea337bd3c11ef38a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab465db34b5c30e7a5f41d1935f1dac549a0c159","unresolved":true,"context_lines":[{"line_number":12199,"context_line":"            in supported_models for model in all_models"},{"line_number":12200,"context_line":"        }"},{"line_number":12201,"context_line":""},{"line_number":12202,"context_line":"    def _get_iommu_model_traits(self) -\u003e ty.Dict[str, bool]:"},{"line_number":12203,"context_line":"        \"\"\"Get iommu model traits based on the currently enabled virt_type."},{"line_number":12204,"context_line":""},{"line_number":12205,"context_line":"        Not all traits generated by this function may be valid and the result"}],"source_content_type":"text/x-python","patch_set":18,"id":"33f89c40_ce36249d","line":12202,"range":{"start_line":12202,"start_character":8,"end_line":12202,"end_character":32},"updated":"2022-09-01 11:14:00.000000000","message":"this works but its more complicated then you need\n\n    def _get_iommu_model_traits(self) -\u003e ty.Dict[str, bool]:\n        \"\"\"Get iommu model traits based on the currently enabled virt_type.\n        Not all traits generated by this function may be valid and the result\n        should be validated.\n        :return: A dict of trait names mapped to boolean values.\n        \"\"\"\n        dom_caps \u003d self._host.get_domain_capabilities()\n        supported_models: ty.Set[str] \u003d {fields.VIOMMUModel.AUTO}\n        # our min versionfs of qemu/libvirt supprot q35 and virt machine types\n        # they also support the smmuv3 and intel iommu modeles so if the qemu\n        # binary is avaiable we can report the trait\n        if fields.Architecture.AARCH64 in dom_caps:\n           supported_models.add(fields.VIOMMUModel.SMMUV3)\n        if fields.Architecture.X86_64 in dom_caps:\n            supported_models.add(fields.VIOMMUModel.INTEL)\n        # the virtio iommu model requires a newer libvirt then our min\n        # libvirt so we need to check the version explcitly.\n        if self._host.has_min_version(MIN_LIBVIRT_VIOMMU_VIRTIO_MODEL):\n                    supported_models.add(fields.VIOMMUModel.VIRTIO)  \n        return {\n            f\u0027COMPUTE_VIOMMU_MODEL_{model.replace(\"-\", \"_\").upper()}\u0027: model\n            in supported_models for model in fields.VIOMMUModel.ALL\n        }","commit_id":"9ea887bd4fd5453adac5542309114a317fc394e6"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ff1e718f1c22c413bb71a104994144c36abc00f2","unresolved":false,"context_lines":[{"line_number":12199,"context_line":"            in supported_models for model in all_models"},{"line_number":12200,"context_line":"        }"},{"line_number":12201,"context_line":""},{"line_number":12202,"context_line":"    def _get_iommu_model_traits(self) -\u003e ty.Dict[str, bool]:"},{"line_number":12203,"context_line":"        \"\"\"Get iommu model traits based on the currently enabled virt_type."},{"line_number":12204,"context_line":""},{"line_number":12205,"context_line":"        Not all traits generated by this function may be valid and the result"}],"source_content_type":"text/x-python","patch_set":18,"id":"a1db8a58_2e99aec5","line":12202,"range":{"start_line":12202,"start_character":8,"end_line":12202,"end_character":32},"in_reply_to":"33f89c40_ce36249d","updated":"2022-09-01 12:55:57.000000000","message":"Done","commit_id":"9ea887bd4fd5453adac5542309114a317fc394e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"012e81ef285838dbc227393176414e675b83dec0","unresolved":false,"context_lines":[{"line_number":12221,"context_line":"        return {"},{"line_number":12222,"context_line":"            f\u0027COMPUTE_VIOMMU_MODEL_{model.replace(\"-\", \"_\").upper()}\u0027: model"},{"line_number":12223,"context_line":"            in supported_models for model in fields.VIOMMUModel.ALL"},{"line_number":12224,"context_line":"        }"},{"line_number":12225,"context_line":""},{"line_number":12226,"context_line":"    def _get_storage_bus_traits(self) -\u003e ty.Dict[str, bool]:"},{"line_number":12227,"context_line":"        \"\"\"Get storage bus traits based on the currently enabled virt_type."}],"source_content_type":"text/x-python","patch_set":19,"id":"fbef7315_3f0b85b4","line":12224,"updated":"2022-09-01 13:12:00.000000000","message":"the logic works for me.","commit_id":"4f9b6621eb91ff723cd670b2e655ba535c5c7c59"}]}
