)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e4098ef3d88f33b98fcd0edfa3a7c771d76512fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a4e0e7e7_84f17384","updated":"2024-11-03 21:07:17.000000000","message":"Ironic will need the mksalt method too https://opendev.org/openstack/ironic/src/branch/master/ironic/conductor/utils.py#L1396","commit_id":"ec7d3a46bd613a3e8963a65e35ec0754a1b66e88"},{"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":"8bb9d91b10205e0f2512569acc5a60fdefab7534","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3de5b3f7_dccb7c1b","updated":"2024-11-07 23:30:55.000000000","message":"This adds an operating system package dependency, but does not explicitly declare it in bindep.txt -- I know it\u0027s unlikely for someone to not have libcrypt, but it\u0027s best if we can document all the used packages.","commit_id":"374fe83414dde684a5f9455f1027f91522f35efb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"52dba80ebd516f6d76b2c7d001a1742f086eacb4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"909aa13d_6090143f","in_reply_to":"3de5b3f7_dccb7c1b","updated":"2024-11-09 06:22:43.000000000","message":"Done. Note that I kept the library optional, because oslo.utils is a core library and we should in genral avoid installing unused deps.","commit_id":"374fe83414dde684a5f9455f1027f91522f35efb"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"ca1b7fc0e940842668f3c90ec9a9f962b0a995f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"66bd379b_ca6cbbc3","updated":"2024-11-27 13:18:30.000000000","message":"Do we want a release note? could be done in a follow up","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"647272a2cf14a3946b21a042f1a446cf7e3b3cc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b40ffb0a_057dfb42","updated":"2024-11-14 15:11:06.000000000","message":"Hi,\n\nThis is nice, though it\u0027d be even nicer with a make_salt() function, needed by Ironic in ironic/conductor/utils.py.","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"cff1c6bb31cfb359b251029236a49b911fc8522e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4ca7b102_2ef4b3dd","in_reply_to":"66bd379b_ca6cbbc3","updated":"2024-11-27 13:33:30.000000000","message":"Ah yes, I\u0027ll add it for the two new interfaces in follow-up.","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b64d10f4cd4c3142ab9386536c74ef4cf1ccec7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a36c4b86_f137ff7a","in_reply_to":"b40ffb0a_057dfb42","updated":"2024-11-18 15:31:05.000000000","message":"See https://review.opendev.org/c/openstack/oslo.utils/+/935525","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"}],"oslo_utils/secretutils.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1f836fa39ff0ddc49cae4e924847fb24ba5dc0c2","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    This is provided as a replacement of crypt.crypt method because crypt"},{"line_number":60,"context_line":"    module was removed in Python 3.13."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    .. versionadded:: 7.4"},{"line_number":63,"context_line":"    \"\"\""},{"line_number":64,"context_line":"    if _crypt is None:"},{"line_number":65,"context_line":"        raise RuntimeError(\u0027libcrypt is not available\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d236fbb_f02c7b39","line":62,"range":{"start_line":62,"start_character":22,"end_line":62,"end_character":25},"updated":"2024-11-07 10:07:58.000000000","message":"7.4 is already out. this should be 7.5 .","commit_id":"ec7d3a46bd613a3e8963a65e35ec0754a1b66e88"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4064ba436b1c23c418e2922527293e3a7af69188","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    This is provided as a replacement of crypt.crypt method because crypt"},{"line_number":60,"context_line":"    module was removed in Python 3.13."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    .. versionadded:: 7.4"},{"line_number":63,"context_line":"    \"\"\""},{"line_number":64,"context_line":"    if _crypt is None:"},{"line_number":65,"context_line":"        raise RuntimeError(\u0027libcrypt is not available\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e873ad37_f35300cc","line":62,"range":{"start_line":62,"start_character":22,"end_line":62,"end_character":25},"in_reply_to":"3d236fbb_f02c7b39","updated":"2024-11-07 10:08:18.000000000","message":"Done","commit_id":"ec7d3a46bd613a3e8963a65e35ec0754a1b66e88"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ff345d24aa5c3f0a8757ebff66224b5eff2097b2","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    return hashlib.md5(string, usedforsecurity\u003dusedforsecurity)  # nosec"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if ctypes.util.find_library(\"crypt\"):"},{"line_number":48,"context_line":"    _libcrypt \u003d ctypes.CDLL(ctypes.util.find_library(\"crypt\"), use_errno\u003dTrue)"},{"line_number":49,"context_line":"    _crypt \u003d _libcrypt.crypt"},{"line_number":50,"context_line":"    _crypt.argtypes \u003d (ctypes.c_char_p, ctypes.c_char_p)"},{"line_number":51,"context_line":"    _crypt.restype \u003d ctypes.c_char_p"},{"line_number":52,"context_line":"else:"},{"line_number":53,"context_line":"    _crypt \u003d None"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ab9bb1f1_66591942","line":52,"range":{"start_line":47,"start_character":37,"end_line":52,"end_character":5},"updated":"2024-11-18 14:17:24.000000000","message":"The notes in PEP 594 give a couple of reasons for `crypt`\u0027s removal:\n\nhttps://peps.python.org/pep-0594/#crypt\n\nDo these not also apply to us?","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"09cebc51c65e5bae24325b7a3710edb9d231df75","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    return hashlib.md5(string, usedforsecurity\u003dusedforsecurity)  # nosec"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if ctypes.util.find_library(\"crypt\"):"},{"line_number":48,"context_line":"    _libcrypt \u003d ctypes.CDLL(ctypes.util.find_library(\"crypt\"), use_errno\u003dTrue)"},{"line_number":49,"context_line":"    _crypt \u003d _libcrypt.crypt"},{"line_number":50,"context_line":"    _crypt.argtypes \u003d (ctypes.c_char_p, ctypes.c_char_p)"},{"line_number":51,"context_line":"    _crypt.restype \u003d ctypes.c_char_p"},{"line_number":52,"context_line":"else:"},{"line_number":53,"context_line":"    _crypt \u003d None"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"980db4cc_e0dd8e79","line":52,"range":{"start_line":47,"start_character":37,"end_line":52,"end_character":5},"in_reply_to":"ab9bb1f1_66591942","updated":"2024-11-18 15:07:03.000000000","message":"Because we do no longer care about non-linux system, and the services requiring crypt (nova and ironic atm) already uses md5/sha256/sha512, I don\u0027t think all these items are not applied.","commit_id":"6ef3f1e598a70eeeb0de96c71d20d49922b2e707"}]}
