)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"efd115f79c27ecba231abf980e968e568a8a9e27","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding support for viewing individual cpu process info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related Bug: https://bugs.launchpad.net/ironic-python-agent/+bug/1639340"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit adds the relavent changes to the get_cpu function, keeping it backwards compatible with the old method."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ac096516_c08c5a83","line":9,"updated":"2024-02-26 09:06:29.000000000","message":"please use Closes-Bug: #\u003cbug number\u003e format","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8c5a224c2a40f4bf7e8779bb6bd7e3ba02e489ba","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding support for viewing individual cpu process info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related Bug: https://bugs.launchpad.net/ironic-python-agent/+bug/1639340"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit adds the relavent changes to the get_cpu function, keeping it backwards compatible with the old method."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"14fd0612_fab49ea7","line":9,"in_reply_to":"ac096516_c08c5a83","updated":"2024-03-01 01:25:12.000000000","message":"Done","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"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":"ae996aec802244f8ada089df4602f5f4fae5dd16","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related Bug: https://bugs.launchpad.net/ironic-python-agent/+bug/1639340"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit adds the relavent changes to the get_cpu function, keeping it backwards compatible with the old method."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3c3a792e88e9a041236eca7283ebfdf1026910d8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"02e8f242_88eeccb6","line":11,"updated":"2024-02-28 16:35:32.000000000","message":"relevant (spelling -- if this is correct in UK, it\u0027s OK with me)\n\nAlso please be aware of https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure -- this line is longer than we normally allow in git commits.","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8c5a224c2a40f4bf7e8779bb6bd7e3ba02e489ba","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related Bug: https://bugs.launchpad.net/ironic-python-agent/+bug/1639340"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit adds the relavent changes to the get_cpu function, keeping it backwards compatible with the old method."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3c3a792e88e9a041236eca7283ebfdf1026910d8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"8204b028_86210af3","line":11,"in_reply_to":"02e8f242_88eeccb6","updated":"2024-03-01 01:25:12.000000000","message":"Done","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"49edf6a5980db53f759aa5a11bc5049ffb13a210","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1bd05bbc_8f5c13be","updated":"2024-02-19 02:30:39.000000000","message":"Please note that this commit is just meant to check I have the process correct. It does not represent the final work. If someone can confirm this is in the right direction I will continue.\n\nSo far I have thought about:\n- Handling count vs process number. When should both be defined in the CPU class? process is not yet an arg but I imagine it should be added.\n- Handling the 0 CPU\u0027s processed case? \n- Making sure the right frequency for each processor is passed.\n- bare \"raise exception\" should be replaced with something more readable\n- Extend tests to be more concise and test all relevant fields.","commit_id":"8644cf5aab156778bcd96a5c4ac1165a774d3c6a"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"20afbdeb0a23624a77d0c8b40ae2e3739a41faba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ed172e32_6c7aded4","in_reply_to":"1bd05bbc_8f5c13be","updated":"2024-06-13 04:35:10.000000000","message":"Done","commit_id":"8644cf5aab156778bcd96a5c4ac1165a774d3c6a"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"20afbdeb0a23624a77d0c8b40ae2e3739a41faba","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"dad714c9_dd1af30e","updated":"2024-06-13 04:35:10.000000000","message":"Potentially the tests could be expanded further - let me know if that is required.","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"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":"17772e27d5b4bb63b02bf61673994cff90b1b5d2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ef6c1b71_4e644de7","updated":"2024-05-15 15:07:23.000000000","message":"recheck IPA gate is fixed now, I believe","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"69daf42b9b250c91879fe85784f5237e6fa4bae1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"28c44df0_9a9081e5","updated":"2024-04-19 07:30:16.000000000","message":"recheck metalsmith should be fixed now","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"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":"20ea836fc1e1a003f3cdfd565e07965d8f8c4360","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d19b0085_68709c55","updated":"2024-04-18 17:56:10.000000000","message":"recheck new results for standalone job desired","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"de0bba31e2d84e6cd61bbf3e46158d6dc42e54d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d58350f9_823b8ea2","in_reply_to":"d19b0085_68709c55","updated":"2024-06-13 04:35:32.000000000","message":"Done","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"22fc35f006a029060ce7a2c8f3a8ac26832f0797","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f2e3d976_dc8f349e","in_reply_to":"dad714c9_dd1af30e","updated":"2024-07-03 08:41:18.000000000","message":"Done","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"de0bba31e2d84e6cd61bbf3e46158d6dc42e54d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6c0aafe0_0075479a","in_reply_to":"ef6c1b71_4e644de7","updated":"2024-06-13 04:35:32.000000000","message":"Done","commit_id":"3c9c86680827c9e76f43626095fa915751fcfeda"},{"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":"f764586efe4c99c5f71cae1f099ef51481594bc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"febcd53d_0f52caa7","updated":"2024-06-14 18:41:01.000000000","message":"We should make cpu information per-core a completely separate inspection gathering piece. Existing CPU inspections should work the same and we should provide the per-core information as a new item.","commit_id":"4d9f0dc030d98746a6e6c1b7536b0c43eec3c763"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"22fc35f006a029060ce7a2c8f3a8ac26832f0797","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b8c2b0b3_8ec98e37","updated":"2024-07-03 08:41:18.000000000","message":"Changed the API to add a cpus attribute that contains per-core features.\n\nUsing a mix of LSCPU and cpu_info since they don\u0027t individually have everything I need. The code before had a \"lscpu no flags\" fallback - I have kept that since that is likely something that needs to remain backwards compatible.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"4e703736eff086abe28dd45ddbf8d7dd8a6e36f8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fc8fd166_d56385ce","updated":"2024-07-04 16:32:04.000000000","message":"Pretty close, some questions about how the objects are structured.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"3d2f58fdd881ee9052afe5b6377cc1e8a115d422","unresolved":true,"context_lines":[{"line_number":1496,"context_line":"        try:"},{"line_number":1497,"context_line":"            cores \u003d il_utils.execute(\u0027cat /proc/cpuinfo\u0027)[0]"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"            cores \u003d cores.replace(\"\\t\", \"\")"},{"line_number":1500,"context_line":"            cores \u003d cores.split(\"\\n\\n\")"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"            for lines in cores:"}],"source_content_type":"text/x-python","patch_set":3,"id":"01905268_7361a691","line":1499,"updated":"2024-02-21 19:11:37.000000000","message":"I am relatively confident that this is needed - I needed it locally - but let me know if that is true.","commit_id":"8bfeea7999f9d84e8180602a18d25cf13a071653"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8c5a224c2a40f4bf7e8779bb6bd7e3ba02e489ba","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"        try:"},{"line_number":1497,"context_line":"            cores \u003d il_utils.execute(\u0027cat /proc/cpuinfo\u0027)[0]"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"            cores \u003d cores.replace(\"\\t\", \"\")"},{"line_number":1500,"context_line":"            cores \u003d cores.split(\"\\n\\n\")"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"            for lines in cores:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a2b94a0f_69f634f1","line":1499,"in_reply_to":"01905268_7361a691","updated":"2024-03-01 01:25:12.000000000","message":"Done","commit_id":"8bfeea7999f9d84e8180602a18d25cf13a071653"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"efd115f79c27ecba231abf980e968e568a8a9e27","unresolved":true,"context_lines":[{"line_number":1506,"context_line":"                    cpu_info_dicts.append(cpu_info)"},{"line_number":1507,"context_line":""},{"line_number":1508,"context_line":"            if len(cpu_info_dicts) \u003d\u003d 0:"},{"line_number":1509,"context_line":"                raise Exception"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        except Exception:"},{"line_number":1512,"context_line":"            lines \u003d il_utils.execute(\u0027lscpu\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"e10fff42_dd8f132a","line":1509,"updated":"2024-02-26 09:06:29.000000000","message":"wondering if we should add a debug message here since we\u0027re knowingly raising an exception","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"4032c236e85dca99edd0a1c45cbcb6831520372d","unresolved":true,"context_lines":[{"line_number":1506,"context_line":"                    cpu_info_dicts.append(cpu_info)"},{"line_number":1507,"context_line":""},{"line_number":1508,"context_line":"            if len(cpu_info_dicts) \u003d\u003d 0:"},{"line_number":1509,"context_line":"                raise Exception"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        except Exception:"},{"line_number":1512,"context_line":"            lines \u003d il_utils.execute(\u0027lscpu\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"98078b5c_3331862c","line":1509,"in_reply_to":"7d988af0_e393c4b2","updated":"2024-04-02 22:07:39.000000000","message":"I wanted to make sure we catch \"all\" exceptions. I do agree that a debug message would be useful, and changing the error in this case to something else to separate the two.\n\nIf you would rather I can try and write all the different inspections that can happen, but for now I will go with the above.","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8d957493ae277b662909d75b34a0de535e307602","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"                    cpu_info_dicts.append(cpu_info)"},{"line_number":1507,"context_line":""},{"line_number":1508,"context_line":"            if len(cpu_info_dicts) \u003d\u003d 0:"},{"line_number":1509,"context_line":"                raise Exception"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        except Exception:"},{"line_number":1512,"context_line":"            lines \u003d il_utils.execute(\u0027lscpu\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a93ffb4_fdfb68a7","line":1509,"in_reply_to":"98078b5c_3331862c","updated":"2024-04-02 23:43:36.000000000","message":"Done","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"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":"ae996aec802244f8ada089df4602f5f4fae5dd16","unresolved":true,"context_lines":[{"line_number":1506,"context_line":"                    cpu_info_dicts.append(cpu_info)"},{"line_number":1507,"context_line":""},{"line_number":1508,"context_line":"            if len(cpu_info_dicts) \u003d\u003d 0:"},{"line_number":1509,"context_line":"                raise Exception"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        except Exception:"},{"line_number":1512,"context_line":"            lines \u003d il_utils.execute(\u0027lscpu\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d988af0_e393c4b2","line":1509,"in_reply_to":"e10fff42_dd8f132a","updated":"2024-02-28 16:35:32.000000000","message":"Should we be raising a bare exception instead of e.g. an InspectionError? I\u0027m honestly not sure but it seems weird to see a bare exception thrown.","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"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":"ae996aec802244f8ada089df4602f5f4fae5dd16","unresolved":true,"context_lines":[{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"            flags \u003d []"},{"line_number":1522,"context_line":"            out \u003d il_utils.try_execute("},{"line_number":1523,"context_line":"                \u0027grep\u0027, \u0027-Em1\u0027, \u0027^flags\u0027, \u0027/proc/cpuinfo\u0027"},{"line_number":1524,"context_line":"            )"},{"line_number":1525,"context_line":"            if out:"},{"line_number":1526,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"24a9ac45_b4614f15","line":1523,"updated":"2024-02-28 16:35:32.000000000","message":"So you already have this information in \"cores\" above. IMO this whole thing could be improved by:\n\n- Get contents of /proc/cpuinfo first (and not with exec(cat))\n- Parse out the information you need\n\nEssentially, try to hit the disk once, and do this in a more python-y way rather than in bash via python. I can pair with you on this if you want.","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"4032c236e85dca99edd0a1c45cbcb6831520372d","unresolved":true,"context_lines":[{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"            flags \u003d []"},{"line_number":1522,"context_line":"            out \u003d il_utils.try_execute("},{"line_number":1523,"context_line":"                \u0027grep\u0027, \u0027-Em1\u0027, \u0027^flags\u0027, \u0027/proc/cpuinfo\u0027"},{"line_number":1524,"context_line":"            )"},{"line_number":1525,"context_line":"            if out:"},{"line_number":1526,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"d40bbdb1_222afb49","line":1523,"in_reply_to":"24a9ac45_b4614f15","updated":"2024-04-02 22:07:39.000000000","message":"This makes a lot of sense. On it.","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8d957493ae277b662909d75b34a0de535e307602","unresolved":false,"context_lines":[{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"            flags \u003d []"},{"line_number":1522,"context_line":"            out \u003d il_utils.try_execute("},{"line_number":1523,"context_line":"                \u0027grep\u0027, \u0027-Em1\u0027, \u0027^flags\u0027, \u0027/proc/cpuinfo\u0027"},{"line_number":1524,"context_line":"            )"},{"line_number":1525,"context_line":"            if out:"},{"line_number":1526,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba1dfd12_40f30ebc","line":1523,"in_reply_to":"d40bbdb1_222afb49","updated":"2024-04-02 23:43:36.000000000","message":"Okay so, I have kept this in the legacy code, but I just collect from the cpu_info dict in my version","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"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":"f764586efe4c99c5f71cae1f099ef51481594bc8","unresolved":true,"context_lines":[{"line_number":1571,"context_line":"                raise errors.InspectionError(\u0027No CPU information found\u0027)"},{"line_number":1572,"context_line":""},{"line_number":1573,"context_line":"        # We want to catch any exception here and fall to legacy"},{"line_number":1574,"context_line":"        except Exception:"},{"line_number":1575,"context_line":"            legacy \u003d True"},{"line_number":1576,"context_line":""},{"line_number":1577,"context_line":"            LOG.warning("}],"source_content_type":"text/x-python","patch_set":9,"id":"b7bc521c_0d18a977","line":1574,"updated":"2024-06-14 18:41:01.000000000","message":"except Exception is not really great; can we catch a custom one? \n\nI think it\u0027s reasonable to assume /proc/cpuinfo exists and is readable.","commit_id":"4d9f0dc030d98746a6e6c1b7536b0c43eec3c763"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"22fc35f006a029060ce7a2c8f3a8ac26832f0797","unresolved":false,"context_lines":[{"line_number":1571,"context_line":"                raise errors.InspectionError(\u0027No CPU information found\u0027)"},{"line_number":1572,"context_line":""},{"line_number":1573,"context_line":"        # We want to catch any exception here and fall to legacy"},{"line_number":1574,"context_line":"        except Exception:"},{"line_number":1575,"context_line":"            legacy \u003d True"},{"line_number":1576,"context_line":""},{"line_number":1577,"context_line":"            LOG.warning("}],"source_content_type":"text/x-python","patch_set":9,"id":"fe61654a_f5a14b4f","line":1574,"in_reply_to":"b7bc521c_0d18a977","updated":"2024-07-03 08:41:18.000000000","message":"Done","commit_id":"4d9f0dc030d98746a6e6c1b7536b0c43eec3c763"},{"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":"4e703736eff086abe28dd45ddbf8d7dd8a6e36f8","unresolved":true,"context_lines":[{"line_number":28,"context_line":"import stat"},{"line_number":29,"context_line":"import string"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":"from typing import List"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic_lib import utils as il_utils"},{"line_number":34,"context_line":"from oslo_concurrency import processutils"}],"source_content_type":"text/x-python","patch_set":10,"id":"648a2a47_247c027b","line":31,"updated":"2024-07-04 16:32:04.000000000","message":"I don\u0027t personally mind this, but we haven\u0027t been using type hints extensively in Ironic so far FWIW. It\u0027s probably okay to start? I\u0027d be curious what other cores think.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"4e703736eff086abe28dd45ddbf8d7dd8a6e36f8","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        self.client_id \u003d client_id"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"class CPUInfo(encoding.SerializableComparable):"},{"line_number":835,"context_line":"    serializable_fields \u003d (\u0027cpus\u0027)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def __init__(self, cpus\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"2569147b_4886515b","line":834,"updated":"2024-07-04 16:32:04.000000000","message":"Again, kinda wondering if this could just be the CPU object instead of having a different one. Especially since this only exists for typing AFAICT","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"68ff0ee556c38896fdf8210521af5c1892eb6a43","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        self.client_id \u003d client_id"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"class CPUInfo(encoding.SerializableComparable):"},{"line_number":835,"context_line":"    serializable_fields \u003d (\u0027cpus\u0027)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def __init__(self, cpus\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3b677f3e_87b492d1","line":834,"in_reply_to":"2569147b_4886515b","updated":"2024-07-15 12:11:47.000000000","message":"This is an artifact from previous commits. There should only be CPU and CPU Core.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"0629018d30435aaec67b801098dbe5308facd739","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        self.client_id \u003d client_id"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"class CPUInfo(encoding.SerializableComparable):"},{"line_number":835,"context_line":"    serializable_fields \u003d (\u0027cpus\u0027)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def __init__(self, cpus\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"22ae7195_eacc3ea9","line":834,"in_reply_to":"3b677f3e_87b492d1","updated":"2024-07-15 14:19:10.000000000","message":"Done","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"4e703736eff086abe28dd45ddbf8d7dd8a6e36f8","unresolved":true,"context_lines":[{"line_number":841,"context_line":"        return self.cpus"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"class CPUCore(encoding.SerializableComparable):"},{"line_number":845,"context_line":"    serializable_fields \u003d (\u0027model_name\u0027, \u0027frequency\u0027, \u0027count\u0027, \u0027architecture\u0027,"},{"line_number":846,"context_line":"                           \u0027flags\u0027, \u0027socket_count\u0027, \u0027core_id\u0027)"},{"line_number":847,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"b132d285_1c3064d8","line":844,"updated":"2024-07-04 16:32:04.000000000","message":"I wonder if we could add an \"id\" field to CPU and avoid creating a separate object. It\u0027d also help make it make sense for multiprocessor systems.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"68ff0ee556c38896fdf8210521af5c1892eb6a43","unresolved":true,"context_lines":[{"line_number":841,"context_line":"        return self.cpus"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"class CPUCore(encoding.SerializableComparable):"},{"line_number":845,"context_line":"    serializable_fields \u003d (\u0027model_name\u0027, \u0027frequency\u0027, \u0027count\u0027, \u0027architecture\u0027,"},{"line_number":846,"context_line":"                           \u0027flags\u0027, \u0027socket_count\u0027, \u0027core_id\u0027)"},{"line_number":847,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"02410131_240de8fc","line":844,"in_reply_to":"b132d285_1c3064d8","updated":"2024-07-15 12:11:47.000000000","message":"I am open to going with that approach.\n\nMy main reason for not doing so the first time round was because of having the ambiguity of whether \"count\" or \"id\" is filled in. I don\u0027t like the ideal of it being its on recursive as well if that makes sense?","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"4e703736eff086abe28dd45ddbf8d7dd8a6e36f8","unresolved":true,"context_lines":[{"line_number":1595,"context_line":"                architecture\u003dcpu_info.get(\u0027architecture\u0027, \u0027\u0027),"},{"line_number":1596,"context_line":"                core_id\u003dcpu_info.get(\u0027core id\u0027, \u0027\u0027),"},{"line_number":1597,"context_line":"                flags\u003dcpu_info.get(\u0027flags\u0027, \u0027\u0027).split(),"},{"line_number":1598,"context_line":"                socket_count\u003d1"},{"line_number":1599,"context_line":"            )"},{"line_number":1600,"context_line":"            cpus.append(cpu)"},{"line_number":1601,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9c4fae2a_c1f389cb","line":1598,"updated":"2024-07-04 16:32:04.000000000","message":"Are we just considering multi-socket systems out of scope for this change? It\u0027s OK if so but we should make sure we\u0027re explicit about it.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"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":"0629018d30435aaec67b801098dbe5308facd739","unresolved":false,"context_lines":[{"line_number":1595,"context_line":"                architecture\u003dcpu_info.get(\u0027architecture\u0027, \u0027\u0027),"},{"line_number":1596,"context_line":"                core_id\u003dcpu_info.get(\u0027core id\u0027, \u0027\u0027),"},{"line_number":1597,"context_line":"                flags\u003dcpu_info.get(\u0027flags\u0027, \u0027\u0027).split(),"},{"line_number":1598,"context_line":"                socket_count\u003d1"},{"line_number":1599,"context_line":"            )"},{"line_number":1600,"context_line":"            cpus.append(cpu)"},{"line_number":1601,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"b287024e_4c006688","line":1598,"in_reply_to":"05b2463f_975db14c","updated":"2024-07-15 14:19:10.000000000","message":"Done","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"68ff0ee556c38896fdf8210521af5c1892eb6a43","unresolved":true,"context_lines":[{"line_number":1595,"context_line":"                architecture\u003dcpu_info.get(\u0027architecture\u0027, \u0027\u0027),"},{"line_number":1596,"context_line":"                core_id\u003dcpu_info.get(\u0027core id\u0027, \u0027\u0027),"},{"line_number":1597,"context_line":"                flags\u003dcpu_info.get(\u0027flags\u0027, \u0027\u0027).split(),"},{"line_number":1598,"context_line":"                socket_count\u003d1"},{"line_number":1599,"context_line":"            )"},{"line_number":1600,"context_line":"            cpus.append(cpu)"},{"line_number":1601,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"05b2463f_975db14c","line":1598,"in_reply_to":"9c4fae2a_c1f389cb","updated":"2024-07-15 12:11:47.000000000","message":"Ah - No this is an error on my front, I will fix it.","commit_id":"c339e81121551ffbad2f7d24e3c91cb187a3c81e"}],"ironic_python_agent/tests/unit/test_hardware.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"efd115f79c27ecba231abf980e968e568a8a9e27","unresolved":true,"context_lines":[{"line_number":890,"context_line":"        self.assertEqual([\u0027fpu\u0027, \u0027vme\u0027, \u0027de\u0027, \u0027pse\u0027], cpus.flags)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"    @mock.patch.object(il_utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":893,"context_line":"    def test_get_cpus_multi(self, mocked_execute):"},{"line_number":894,"context_line":"        mocked_execute.side_effect \u003d [(hws.PROC_CPUINFO_OUTPUT, \u0027\u0027),"},{"line_number":895,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027),"},{"line_number":896,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"e598b315_31978e67","line":893,"updated":"2024-02-26 09:06:29.000000000","message":"I would also add at least a test for the fallback\nalso probably good to test with multiple cpus as in more than 2, so extending the list in the sample file","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"8d957493ae277b662909d75b34a0de535e307602","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        self.assertEqual([\u0027fpu\u0027, \u0027vme\u0027, \u0027de\u0027, \u0027pse\u0027], cpus.flags)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"    @mock.patch.object(il_utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":893,"context_line":"    def test_get_cpus_multi(self, mocked_execute):"},{"line_number":894,"context_line":"        mocked_execute.side_effect \u003d [(hws.PROC_CPUINFO_OUTPUT, \u0027\u0027),"},{"line_number":895,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027),"},{"line_number":896,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"f6a540a0_734b1469","line":893,"in_reply_to":"22d798ec_46bba51d","updated":"2024-04-02 23:43:36.000000000","message":"Currently I have made all the current tests test legacy, and there is one test for my changes. I will expanding","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"},{"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":"ae996aec802244f8ada089df4602f5f4fae5dd16","unresolved":true,"context_lines":[{"line_number":890,"context_line":"        self.assertEqual([\u0027fpu\u0027, \u0027vme\u0027, \u0027de\u0027, \u0027pse\u0027], cpus.flags)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"    @mock.patch.object(il_utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":893,"context_line":"    def test_get_cpus_multi(self, mocked_execute):"},{"line_number":894,"context_line":"        mocked_execute.side_effect \u003d [(hws.PROC_CPUINFO_OUTPUT, \u0027\u0027),"},{"line_number":895,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027),"},{"line_number":896,"context_line":"                                      (hws.CPUINFO_FLAGS_OUTPUT, \u0027\u0027)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"22d798ec_46bba51d","line":893,"in_reply_to":"e598b315_31978e67","updated":"2024-02-28 16:35:32.000000000","message":"++","commit_id":"82851084312e2a3cffaf61b402cd2c14c1bbde07"}]}
