)]}'
{"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"24ab08ef682c8b1d247bfe4e7aa9ea8032efbdba","unresolved":true,"context_lines":[{"line_number":1397,"context_line":"        # NOTE(TheJulia): The net effect of this is that by default,"},{"line_number":1398,"context_line":"        # at least matching common/policy.py defaults. is these should"},{"line_number":1399,"context_line":"        # be stripped out."},{"line_number":1400,"context_line":"        if (\u0027last_error\u0027 in node_keys"},{"line_number":1401,"context_line":"            and not policy.check(\"baremetal:node:get:last_error\","},{"line_number":1402,"context_line":"                                 target_dict, cdict)):"},{"line_number":1403,"context_line":"            # Guard the last error from being visible as it can contain"}],"source_content_type":"text/x-python","patch_set":3,"id":"639fa07f_bf79878d","line":1400,"range":{"start_line":1400,"start_character":12,"end_line":1400,"end_character":37},"updated":"2021-05-21 00:54:28.000000000","message":"I was going to suggest looking for keys in Patchset 1, but the node.get approach also avoided the policy check when the value was empty, which seemed like a nice optimization. Now I don\u0027t know which is better 😄","commit_id":"0ba0d6e5680cc6f3b2493865c77d74f8aec90470"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"60dd544964830ce29f2c31b8a55c26c02f9e2488","unresolved":true,"context_lines":[{"line_number":1397,"context_line":"        # NOTE(TheJulia): The net effect of this is that by default,"},{"line_number":1398,"context_line":"        # at least matching common/policy.py defaults. is these should"},{"line_number":1399,"context_line":"        # be stripped out."},{"line_number":1400,"context_line":"        if (\u0027last_error\u0027 in node_keys"},{"line_number":1401,"context_line":"            and not policy.check(\"baremetal:node:get:last_error\","},{"line_number":1402,"context_line":"                                 target_dict, cdict)):"},{"line_number":1403,"context_line":"            # Guard the last error from being visible as it can contain"}],"source_content_type":"text/x-python","patch_set":3,"id":"dd7063d9_98719a85","line":1400,"range":{"start_line":1400,"start_character":12,"end_line":1400,"end_character":37},"in_reply_to":"639fa07f_bf79878d","updated":"2021-05-21 05:00:14.000000000","message":"So I decided this way was better because if it is a object mapped to ?NotImplemented? on the object mapping (which is actually what happens for the objects post conversion if there is not a backing value, then this actually works as expected, because the key is not present then to be matched as there is no value... where as node.get(\u0027key\u0027) always returns a thing then.","commit_id":"0ba0d6e5680cc6f3b2493865c77d74f8aec90470"}]}
