)]}'
{"ironic_lib/auth_basic.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"19db0e71c91d2d6f1dc03e8648eefabf4959ad05","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    username, crypted \u003d parse_entry(entry)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    if not bcrypt.checkpw(password, crypted):"},{"line_number":106,"context_line":"        LOG.error(\u0027Password for %s does not match\u0027, username)"},{"line_number":107,"context_line":"        unauthorized()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    return {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9e8b6b1d","line":106,"updated":"2020-08-05 14:04:06.000000000","message":"This log level may be consistent with how Ironic generally does logging (in which case, ignore this comment), but:\n\nOpenStack logging standards (https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#definition-of-log-levels) say that ERROR-level logs mean page the operator in the middle of the night.\n\nOn one hand, Ironic is an admin-only API, so any failure to authenticate is actually a configuration error.\n\nOn the other hand, if the API is accessible (presumably the reason for authentication in the first place) then any random actor can generate ERROR-level log messages (and thus potentially pager beeps) at will.","commit_id":"33db631e68c497af5e1c4ab62f5ede4dfc01296a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a00e63248e9d9ff16f751485de41c1632ff6629e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    username, crypted \u003d parse_entry(entry)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    if not bcrypt.checkpw(password, crypted):"},{"line_number":106,"context_line":"        LOG.error(\u0027Password for %s does not match\u0027, username)"},{"line_number":107,"context_line":"        unauthorized()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    return {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_043d4ec3","line":106,"in_reply_to":"9f560f44_9e8b6b1d","updated":"2020-08-05 15:01:21.000000000","message":"Fair call. I think it\u0027s fine to change all this to INFO except for the one about the broken file.","commit_id":"33db631e68c497af5e1c4ab62f5ede4dfc01296a"}]}
