)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ef6dba514f72c2841bedb8a07194e5c911f4e1eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5e972933_2fce07f6","updated":"2024-07-31 18:30:57.000000000","message":"This needs a release note. I\u0027m also curious if it\u0027s OK to DRY the stress-ng code in burnin.py... it probably is OK?","commit_id":"c21fe4ce5c9721c55de1a82e7aa50919b6d3853a"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8fc86b884f563751c795a52a0eb4eb210205d625","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bb9e5640_cd2d5fa8","updated":"2024-08-07 17:57:29.000000000","message":"- We need to determine behavior for stress-ng against GPUs: what about multiple GPUs? Will that require multiple invocations or is it \"free\" like with CPU testing?\n- We need unit tests for this method.","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"84ad2ae529a3e0b1765a2cd0f40b742bc9640919","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4e2ff3b2_18791872","updated":"2024-08-07 17:59:54.000000000","message":"From stress-ng manpage; I don\u0027t think it does multiple GPUs out of the box, so we\u0027ll likely need logic to do it per-GPU or require an arg of which GPU (perhaps a burnin_gpus to do all, a burnin_gpu to do one, and the former can use the latter?)\n\n2D GPU stressor\n            --gpu N\n                   start N worker that exercise the GPU. This specifies a 2-D texture image that allows the elements of an image array to be\n                   read by shaders, and render primitives using an opengl context.\n\n            --gpu-devnode DEVNAME\n                   specify the device node name of the GPU device, the default is /dev/dri/renderD128.\n\n            --gpu-frag N\n                   specify shader core usage per pixel, this sets N loops in the fragment shader.\n\n            --gpu-ops N\n                   stop gpu workers after N render loop operations.\n\n            --gpu-tex-size N\n                   specify upload texture N × N, by default this value is 4096 × 4096.\n\n            --gpu-xsize X\n                   use a framebuffer size of X pixels. The default is 256 pixels.\n\n            --gpu-ysize Y\n                   use a framebuffer size of Y pixels. The default is 256 pixels.\n\n            --gpu-upload N\n                   specify upload texture N times per frame, the default value is 1.","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e874bad17a3332a399dce5d09ba566df43922674","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7864510a_349d3bad","updated":"2024-08-07 17:46:26.000000000","message":"recheck error connecting to tinycore","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b1987331fe5478aac06289be2268017042efb4e8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d0b288bb_402872f7","updated":"2024-08-14 18:38:15.000000000","message":"I emailed Arne+Luis from CERN, cc\u0027d CID, to see if they have any insight on how stress-ng works on a multi-GPU machine. We only have single-GPU machines available to test locally.","commit_id":"430f8a8db630aa6528b46ec820111998b9fc9e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"4e0f2897ce103a461d7a8bad98857822b2ea9fee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6af14f80_24a570d7","updated":"2024-11-08 18:39:25.000000000","message":"(I have not fully reviewed this yet)\n\nwe will need a patch to IPA-builder to add gpu-burn here: https://opendev.org/openstack/ironic-python-agent-builder/src/commit/612ce753c522ebedab92e5f521992cc8a4963a0e/dib/burn-in/package-installs.yaml","commit_id":"3463f201a9c560a98eca0768b0f2ac0f7fd98f4c"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"bc2471bd881808a3cd3dfc124f9b38abab6589b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"4081d160_8ae2336b","updated":"2024-11-12 07:55:25.000000000","message":"LGTM. Thanks, Scott. I see this update addresses the concern about how stress-ng works on a multi-GPU machine. I will find out what the patch to IPA-builder might look like (unless you are doing that already) :D.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"}],"doc/source/admin/how_it_works.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"957278bdba4575254eadd59d7f8cfc22ac77e676","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    CPU information: ``model_name``, ``frequency``, ``count``,"},{"line_number":192,"context_line":"    ``architecture``, ``flags`` and ``socket_count``."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"``gpu``"},{"line_number":195,"context_line":"    GPU information: ``model_name``, ``memory_mb``, ``count``,"},{"line_number":196,"context_line":"    ``architecture``."},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1eea09dd_b5eb962b","line":194,"updated":"2024-12-06 13:38:23.000000000","message":"I don\u0027t think this is actually added to the inventory. It\u0027s probably also not needed to add burn-in support. If you do intend to add GPU information, I suggest doing it in a separate patch. We should also not repeat the mistake we did with CPU: let us return a list of GPU\u0027s, not one (first?) GPU.","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"ce1e3d8c3b48dd7afb170403bfdaa8e4f70d946f","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    CPU information: ``model_name``, ``frequency``, ``count``,"},{"line_number":192,"context_line":"    ``architecture``, ``flags`` and ``socket_count``."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"``gpu``"},{"line_number":195,"context_line":"    GPU information: ``model_name``, ``memory_mb``, ``count``,"},{"line_number":196,"context_line":"    ``architecture``."},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bbbd23ae_f6e97296","line":194,"in_reply_to":"1eea09dd_b5eb962b","updated":"2024-12-27 16:42:30.000000000","message":"I\u0027ve removed the extra functions from CID\u0027s original patch that are not in use.","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"}],"ironic_python_agent/burnin.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8fc86b884f563751c795a52a0eb4eb210205d625","unresolved":true,"context_lines":[{"line_number":28,"context_line":"NETWORK_READER_CYCLE \u003d 30"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def stress_ng_cpu(node, device\u003d\u0027cpu\u0027):"},{"line_number":32,"context_line":"    \"\"\"Burn-in the CPU or GPU with stress-ng"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Run stress-ng on a configurable number of CPUs or GPUs"}],"source_content_type":"text/x-python","patch_set":2,"id":"b082db89_861a8511","line":31,"updated":"2024-08-07 17:57:29.000000000","message":"Let\u0027s rename the new method to `stress_ng`, and add a stress_ng_cpu that will call the new method with the correct args. That shim can be removed after a short deprecation period.","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"adac323a94fffa5b5e621123c60ee57647c38f61","unresolved":false,"context_lines":[{"line_number":28,"context_line":"NETWORK_READER_CYCLE \u003d 30"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def stress_ng_cpu(node, device\u003d\u0027cpu\u0027):"},{"line_number":32,"context_line":"    \"\"\"Burn-in the CPU or GPU with stress-ng"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Run stress-ng on a configurable number of CPUs or GPUs"}],"source_content_type":"text/x-python","patch_set":2,"id":"14517f22_ff0b089f","line":31,"in_reply_to":"b082db89_861a8511","updated":"2025-01-03 17:58:41.000000000","message":"Done","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8fc86b884f563751c795a52a0eb4eb210205d625","unresolved":true,"context_lines":[{"line_number":36,"context_line":"    all CPUs and stress them for 24 hours."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    :param node: Ironic node object"},{"line_number":39,"context_line":"    :param device: \u0027cpu\u0027 or \u0027gpu\u0027 (default: \u0027cpu\u0027)"},{"line_number":40,"context_line":"    :raises: CommandExecutionError if the execution of stress-ng fails."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"014363e6_4d5c54e0","line":39,"updated":"2024-08-07 17:57:29.000000000","message":"We need to enforce this, and raise if someone calls with an unknown device name.","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8fc86b884f563751c795a52a0eb4eb210205d625","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def stress_ng_vm(node):"},{"line_number":70,"context_line":"    \"\"\"Burn-in the memory with the vm stressor in stress-ng"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    Run stress-ng with a configurable number of workers on"}],"source_content_type":"text/x-python","patch_set":2,"id":"907949f8_153a1af4","line":69,"updated":"2024-08-07 17:57:29.000000000","message":"If we can, have this use the DRY\u0027d up method. If this can\u0027t be combined into the CPU/GPU method; maybe consider just making the GPU one a separate method.","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"bc2471bd881808a3cd3dfc124f9b38abab6589b2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def stress_ng_vm(node):"},{"line_number":70,"context_line":"    \"\"\"Burn-in the memory with the vm stressor in stress-ng"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    Run stress-ng with a configurable number of workers on"}],"source_content_type":"text/x-python","patch_set":2,"id":"1757103c_de73fde1","line":69,"in_reply_to":"907949f8_153a1af4","updated":"2024-11-12 07:55:25.000000000","message":"Acknowledged","commit_id":"5cefd9190ae2f686c86cdf6c4e134c0621ea4348"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"30bd9a8b807015666758b8bc18add5b92a25df3b","unresolved":true,"context_lines":[{"line_number":496,"context_line":"    \"\"\""},{"line_number":497,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"efe9f34b_9758c5dc","line":499,"updated":"2024-11-13 19:22:02.000000000","message":"We should install this in IPA-builder and ensure this is the correct path for the package-installed version.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9edc05cac4a279843d93cb50d7a375399377352a","unresolved":true,"context_lines":[{"line_number":496,"context_line":"    \"\"\""},{"line_number":497,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ab65c9ec_ab130ff0","line":499,"in_reply_to":"95dbbca0_7e9c3844","updated":"2024-11-26 15:06:52.000000000","message":"Yeah, we\u0027ll need to wire that up to an element in IPA-builder. This can be a follow-up, and I can take care of it if you want.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"a5312f6260956a01d1d22926eed451524eca6141","unresolved":true,"context_lines":[{"line_number":496,"context_line":"    \"\"\""},{"line_number":497,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"95dbbca0_7e9c3844","line":499,"in_reply_to":"efe9f34b_9758c5dc","updated":"2024-11-25 21:17:11.000000000","message":"Binary install is very limited https://repology.org/project/gpu-burn/versions would these be suitable?","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"845384c9b1aa24ece7d6c6967a095acba992adf7","unresolved":true,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"b62de205_ff725f00","line":502,"updated":"2024-11-09 10:09:48.000000000","message":"Ideally we want to collect the number of GPUs at inspection and use inspection rules to verify none are missing but interested to see what others think here.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"30bd9a8b807015666758b8bc18add5b92a25df3b","unresolved":true,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5bb96fe4_43a2c415","line":502,"updated":"2024-11-13 19:22:02.000000000","message":"Validating the correct number of GPUs feels like a separate change than burn-in itself. At a minimum, we need to skip validation of GPU count if this value has not been explicitly set.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"41660d97a1d7fe517ffd0e3a7f824deaa47e3551","unresolved":false,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"975825a9_6d734007","line":502,"in_reply_to":"4f1046a0_3d98efff","updated":"2024-11-26 15:07:29.000000000","message":"Done","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"a5312f6260956a01d1d22926eed451524eca6141","unresolved":true,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"4f1046a0_3d98efff","line":502,"in_reply_to":"5bb96fe4_43a2c415","updated":"2024-11-25 21:17:11.000000000","message":"I think checking the expected number of GPUs is still a very valid test so my preferred option would be to skip when count is not set (or set to 0). I\u0027ll amend in a follow up commit.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"3a7ae3555045d8525de046d696d0f95718bb1168","unresolved":false,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"334059a3_93473684","line":502,"in_reply_to":"a2114311_4d2b3d6c","updated":"2025-01-06 09:54:54.000000000","message":"So IIUC the agent_burin_gpu_count field in driver_info is populated at inspection, and here we verify that the same number is visible to the OS. Makes sense!","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"adac323a94fffa5b5e621123c60ee57647c38f61","unresolved":true,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"a2114311_4d2b3d6c","line":502,"in_reply_to":"af65d8b6_243f3d1e","updated":"2025-01-03 17:58:41.000000000","message":"No missing from the node. We want to attest that there are the expected number of GPUs present, as a burnin will run tests against all visible GPUs and wont check that all GPUs that we expect are actually visible by the OS. This is an optional addition to driver_info so if its undefined the check will not be done.","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"5cb8b5b9e8373cbb15eaceb4c9576ecf5876d31e","unresolved":false,"context_lines":[{"line_number":499,"context_line":"    install_dir \u003d info.get(\u0027agent_burnin_gpu_install_dir\u0027, \u0027/opt/gpu-burn\u0027)"},{"line_number":500,"context_line":"    timeout \u003d info.get(\u0027agent_burnin_gpu_timeout\u0027, 86400)"},{"line_number":501,"context_line":"    memory \u003d info.get(\u0027agent_burnin_gpu_memory\u0027, \u002795%\u0027)"},{"line_number":502,"context_line":"    count \u003d info.get(\u0027agent_burnin_gpu_count\u0027, 0)"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    _gpu_burn_check_count(install_dir, count)"},{"line_number":505,"context_line":"    _gpu_burn_run(install_dir, memory, timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"af65d8b6_243f3d1e","line":502,"in_reply_to":"b62de205_ff725f00","updated":"2024-12-31 13:25:10.000000000","message":"I dont quite understand what you mean by \u0027to verify none are missing\u0027 - missing from driver_info?","commit_id":"654dbddb059abb7fea34c1c24021e906849a8cb8"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"957278bdba4575254eadd59d7f8cfc22ac77e676","unresolved":false,"context_lines":[{"line_number":914,"context_line":"    def get_cpus(self):"},{"line_number":915,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def get_gpus(self):"},{"line_number":918,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"    def list_block_devices(self, include_partitions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":13,"id":"922ea5e9_26b978eb","line":917,"updated":"2024-12-06 13:38:23.000000000","message":"This new method seems to be neither implemented nor used.","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"3a7ae3555045d8525de046d696d0f95718bb1168","unresolved":false,"context_lines":[{"line_number":914,"context_line":"    def get_cpus(self):"},{"line_number":915,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def get_gpus(self):"},{"line_number":918,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"    def list_block_devices(self, include_partitions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":13,"id":"883da457_727237f6","line":917,"in_reply_to":"6bdd8c9a_4b107af5","updated":"2025-01-06 09:54:54.000000000","message":"Done","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"},{"author":{"_account_id":29543,"name":"Scott Solkhon","email":"scott.solkhon@gresearch.co.uk","username":"scott.solkhon"},"change_message_id":"adac323a94fffa5b5e621123c60ee57647c38f61","unresolved":true,"context_lines":[{"line_number":914,"context_line":"    def get_cpus(self):"},{"line_number":915,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def get_gpus(self):"},{"line_number":918,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"    def list_block_devices(self, include_partitions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":13,"id":"6bdd8c9a_4b107af5","line":917,"in_reply_to":"8321e3f0_54016992","updated":"2025-01-03 17:58:41.000000000","message":"Ah sorry I missed this one! I\u0027ll remove in my next patch.","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"5cb8b5b9e8373cbb15eaceb4c9576ecf5876d31e","unresolved":true,"context_lines":[{"line_number":914,"context_line":"    def get_cpus(self):"},{"line_number":915,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def get_gpus(self):"},{"line_number":918,"context_line":"        raise errors.IncompatibleHardwareMethodError"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"    def list_block_devices(self, include_partitions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":13,"id":"8321e3f0_54016992","line":917,"in_reply_to":"922ea5e9_26b978eb","updated":"2024-12-31 13:25:10.000000000","message":"This method still looks like it its unused.","commit_id":"fd7ba6bc7eed9ab94e89d411f2aa2591d9a277f2"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"5cb8b5b9e8373cbb15eaceb4c9576ecf5876d31e","unresolved":true,"context_lines":[{"line_number":1944,"context_line":"        \"\"\""},{"line_number":1945,"context_line":"        burnin.stress_ng_cpu(node)"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"    def burnin_gpu(self, node, ports):"},{"line_number":1948,"context_line":"        \"\"\"Burn-in the GPU"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"        :param node: Ironic node object"}],"source_content_type":"text/x-python","patch_set":14,"id":"72a545a9_c2427016","line":1947,"updated":"2024-12-31 13:25:10.000000000","message":"Not related to this patch, but I am wondering why the 5 burnin methods have the ports argument when its unused.","commit_id":"d8981885615e8f6a2a6704a079939e5c2a560ae5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"20b1c9fbcf2d59a5394208f2c0104765d62f8017","unresolved":false,"context_lines":[{"line_number":1944,"context_line":"        \"\"\""},{"line_number":1945,"context_line":"        burnin.stress_ng_cpu(node)"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"    def burnin_gpu(self, node, ports):"},{"line_number":1948,"context_line":"        \"\"\"Burn-in the GPU"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"        :param node: Ironic node object"}],"source_content_type":"text/x-python","patch_set":14,"id":"da4073d9_c81613b6","line":1947,"in_reply_to":"72a545a9_c2427016","updated":"2025-01-29 14:31:55.000000000","message":"Any, and *all* methods which get called across the interface from Ironic include a representation of the node object along with a list of ports attached to the node. This information may be critical for some steps so they have current/up to date information.\n\nThis is also critical because long running ramdisks may have very old copies of the information as well.","commit_id":"d8981885615e8f6a2a6704a079939e5c2a560ae5"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"9e8f24428875ed1074a1b78c4d9d7b2a0b0f310e","unresolved":false,"context_lines":[{"line_number":1944,"context_line":"        \"\"\""},{"line_number":1945,"context_line":"        burnin.stress_ng_cpu(node)"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"    def burnin_gpu(self, node, ports):"},{"line_number":1948,"context_line":"        \"\"\"Burn-in the GPU"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"        :param node: Ironic node object"}],"source_content_type":"text/x-python","patch_set":14,"id":"0d889164_4321e145","line":1947,"in_reply_to":"da4073d9_c81613b6","updated":"2025-02-03 10:48:18.000000000","message":"Makes sense, thank you Julia!","commit_id":"d8981885615e8f6a2a6704a079939e5c2a560ae5"}]}
