)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8a07763c7d5baeea391d72df49fbd0fa5a7a29df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cd9d6f02_0c613e5f","updated":"2026-07-20 12:55:37.000000000","message":"recheck","commit_id":"87135166f63159d29c9b9249dad58ca75afdd2b9"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"dea1c975d664f5f0c3b5262f0bd4e8677b5b2a05","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"74c8e7a5_c3551cae","updated":"2026-07-31 12:46:51.000000000","message":"lgtm now, thanks Chandan!","commit_id":"269df51cbb45e555a251b54002285c6270d8b80e"}],"cyborg/api/controllers/v2/device_profiles.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"88af99180a78c905f8772d695fbbe0676eacbe47","unresolved":true,"context_lines":[{"line_number":207,"context_line":"                # check trait name and it\u0027s value"},{"line_number":208,"context_line":"                if key.startswith(\"trait:\"):"},{"line_number":209,"context_line":"                    inner_origin_trait \u003d \":\".join(key.split(\":\")[1:])"},{"line_number":210,"context_line":"                    inner_trait \u003d inner_origin_trait.strip(\" \")"},{"line_number":211,"context_line":"                    if value not in TRAIT_VALUES:"},{"line_number":212,"context_line":"                        raise exception.InvalidParameterValue("},{"line_number":213,"context_line":"                            err\u003d\"Unsupported trait value %s, the value must\""}],"source_content_type":"text/x-python","patch_set":3,"id":"d015c2a5_b5f8479e","line":210,"updated":"2026-07-21 16:57:58.000000000","message":"I\u0027m thinking that instead of removing the validation altogether it might be more useful to check that hte specified trait is either a custom trait (with the previous code or https://github.com/openstack/os-traits/blob/ca2ea495a38b87bc87de5aaabad5122c8714a263/os_traits/__init__.py#L144) or a standard trait with https://github.com/openstack/os-traits/blob/ca2ea495a38b87bc87de5aaabad5122c8714a263/os_traits/__init__.py#L129","commit_id":"645e85d07c60704b33c78cfa3c921277b7d78991"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"dea1c975d664f5f0c3b5262f0bd4e8677b5b2a05","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                # check trait name and it\u0027s value"},{"line_number":208,"context_line":"                if key.startswith(\"trait:\"):"},{"line_number":209,"context_line":"                    inner_origin_trait \u003d \":\".join(key.split(\":\")[1:])"},{"line_number":210,"context_line":"                    inner_trait \u003d inner_origin_trait.strip(\" \")"},{"line_number":211,"context_line":"                    if value not in TRAIT_VALUES:"},{"line_number":212,"context_line":"                        raise exception.InvalidParameterValue("},{"line_number":213,"context_line":"                            err\u003d\"Unsupported trait value %s, the value must\""}],"source_content_type":"text/x-python","patch_set":3,"id":"2414d38c_05b72d07","line":210,"in_reply_to":"a56de9f3_97b4d935","updated":"2026-07-31 12:46:51.000000000","message":"Done","commit_id":"645e85d07c60704b33c78cfa3c921277b7d78991"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"ee8848f10320f4fef5da066f0204d941243d1231","unresolved":true,"context_lines":[{"line_number":207,"context_line":"                # check trait name and it\u0027s value"},{"line_number":208,"context_line":"                if key.startswith(\"trait:\"):"},{"line_number":209,"context_line":"                    inner_origin_trait \u003d \":\".join(key.split(\":\")[1:])"},{"line_number":210,"context_line":"                    inner_trait \u003d inner_origin_trait.strip(\" \")"},{"line_number":211,"context_line":"                    if value not in TRAIT_VALUES:"},{"line_number":212,"context_line":"                        raise exception.InvalidParameterValue("},{"line_number":213,"context_line":"                            err\u003d\"Unsupported trait value %s, the value must\""}],"source_content_type":"text/x-python","patch_set":3,"id":"a56de9f3_97b4d935","line":210,"in_reply_to":"d015c2a5_b5f8479e","updated":"2026-07-22 13:07:23.000000000","message":"+1 to the suggestion. We need to add os-traits as a dependency in the cyborg. os-resources-class is already dependent on os-traits.\n\nI think it is fine to add os-traits as a dependency. Let me update the patch.","commit_id":"645e85d07c60704b33c78cfa3c921277b7d78991"}]}
