)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d60c999e2d964e3e81e8e50800e219488e26777","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"70f2e035_03a62a20","updated":"2022-09-13 09:28:57.000000000","message":"Checked on py2.7 and py3 vsaio:\n\nBefore:\n\n  vagrant@saio:~/swift$ PYTHONPATH\u003d.  python test/probe/brain.py put_container\nUsage: brain.py [options] \u003ccommand\u003e[:\u003cargs\u003e[,\u003cargs\u003e...]] [\u003ccommand\u003e...]\n\nCommands:\n\n\nOptions:\n  -h, --help            show this help message and exit\n  -c CONTAINER, --container\u003dCONTAINER\n                        set container name\n  -o OBJECT, --object\u003dOBJECT\n                        set object name\n  -s SERVER_TYPE, --server_type\u003dSERVER_TYPE\n                        set server type\n  -P POLICY_NAME, --policy_name\u003dPOLICY_NAME\n                        set policy\nERROR: unknown command put_container\n\n\nAfter: \n\n  vagrant@saio:~/swift$ PYTHONPATH\u003d.  python test/probe/brain.py put_container\n*************************STATUS*************************\ncontainer-server running (2458 - /etc/swift/container-server/1.conf.d)\ncontainer-server running (2459 - /etc/swift/container-server/2.conf.d)\ncontainer-server running (2460 - /etc/swift/container-server/3.conf.d)\ncontainer-server running (2461 - /etc/swift/container-server/4.conf.d)","commit_id":"0860db1f60963b63f96146ad627fd55630da793d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6a117afacf7d6c8fc95a5a0b58b98c17df8ee287","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"497dba24_bb28ffb9","updated":"2022-09-13 14:15:03.000000000","message":"recheck","commit_id":"0860db1f60963b63f96146ad627fd55630da793d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0dff4917bf352de9ec79a0ba9d9c000d58461c5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6bcc06ba_a20b6bb9","updated":"2022-09-13 19:00:12.000000000","message":"recheck\n\nProbe test infrastructure changes are incapable of breaking openstacksdk.","commit_id":"0860db1f60963b63f96146ad627fd55630da793d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f7ba273ed2ebbfe243e021df539ccdd3c725032","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"53639888_e4e73246","updated":"2022-09-12 23:09:12.000000000","message":"recheck\n\nThe (double, given the retry) failure of\n\n FAIL: test_reconciler_move_object_twice (test.probe.test_container_merge_policy_index.TestContainerMergePolicyIndex)\n\nis weird, but I couldn\u0027t repro, and couldn\u0027t find any evidence of *why* it happened in the uploaded logs. Hopefully just a fluke?","commit_id":"0860db1f60963b63f96146ad627fd55630da793d"}],"test/probe/brain.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d60c999e2d964e3e81e8e50800e219488e26777","unresolved":true,"context_lines":[{"line_number":298,"context_line":"        return headers, b\u0027\u0027.join(resp_iter)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"@six.add_metaclass(meta_command)"},{"line_number":302,"context_line":"class BrainSplitter(BaseBrain):"},{"line_number":303,"context_line":"    def __init__(self, url, token, container_name\u003d\u0027test\u0027, object_name\u003d\u0027test\u0027,"},{"line_number":304,"context_line":"                 server_type\u003d\u0027container\u0027, policy\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"db5759e6_e22e2b0f","side":"PARENT","line":301,"updated":"2022-09-13 09:28:57.000000000","message":"Without the decorator here, commands can no longer be added to the subclass. But with it here the superclass commands are lost, so the change at least fixes the regression.","commit_id":"5de15c3b6d3d4c2cc4b69c119e6ebff93d013104"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d60c999e2d964e3e81e8e50800e219488e26777","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    commands \u003d {}"},{"line_number":50,"context_line":"    docs \u003d {}"},{"line_number":51,"context_line":"    for attr, value in attrs.items():"},{"line_number":52,"context_line":"        if getattr(value, \u0027__command__\u0027, False):"},{"line_number":53,"context_line":"            commands[attr] \u003d value"},{"line_number":54,"context_line":"            # methods always have a __doc__ attribute, sometimes empty"}],"source_content_type":"text/x-python","patch_set":1,"id":"190d38f3_c245cb45","line":51,"updated":"2022-09-13 09:28:57.000000000","message":"I guess this could be enhanced to iterate over the bases\u0027 attrs too so that the decorator would find inherited commands, but the fix in this patch is sufficient until there is a use case for adding commands to the subclasses.","commit_id":"0860db1f60963b63f96146ad627fd55630da793d"}]}
