)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b1fadfde6a5ed39144543e923113a025803876cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ae478c23_580a8e19","updated":"2024-06-20 19:10:53.000000000","message":"also, can you add the unit test for these new client and releasenotes (example I237e0467a0e8edde0b2858551d8bc01e8ba410e0)\n\nhttps://github.com/openstack/tempest/blob/master/tempest/tests/lib/services/placement/test_placement_client.py","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ae916368dbb2c8bc9a9b876b6961b0551f94b2f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"98ab1c3f_e5fac475","updated":"2024-06-20 19:02:30.000000000","message":"recheck \nKernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00001000","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"24aa2680a43000dcd19418987ce98f0baff6c2ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3cb11e01_824b772d","updated":"2024-06-20 12:21:00.000000000","message":"recheck \nthere are no logs for ironic-tempest-bios-ipmi-direct-tinyipa post-fail\nso not sure what went wrong","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3dfd271d53727ef6645e950f28d8b7acb9f8d660","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"405fba96_f9b546c6","updated":"2024-06-21 16:58:09.000000000","message":"almost lgtm, one comment","commit_id":"9446af18dae0af0d1ff0818d0eb35dd7ece6e3e4"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"77fb72d08aa7234415b911e8259bac7aefa24f2a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c4ec0c8e_a261b927","updated":"2024-06-23 18:23:33.000000000","message":"as of now apart from trait list api, rest 3 (show, create, delete) do not need extra param, so I have removed **params from api call\n\nhttps://docs.openstack.org/api-ref/placement/#traits\n\n\nThese are the possible tests scenarios:\n```\ndef list():\n    data \u003d self.client.placement_client.list_traits()\n    data1 \u003d self.client.placement_client.list_traits(name\u003d\u0027startswith:CUSTOM_WB\u0027)\n    \n    # return 200\n\ndef create():\n    data \u003d self.client.placement_client.create_trait(name\u003d\u0027CUSTOM_WB_1\u0027)\n    data \u003d self.client.placement_client.create_trait(name\u003d\u0027CUSTOM_WB_6\u0027)\n    # \n\ndef show():\n    data \u003d self.client.placement_client.show_trait(name\u003d\u0027CUSTOM_WB_1\u0027)\n\ndef delete():\n    data \u003d self.client.placement_client.delete_trait(name\u003d\u0027CUSTOM_WB_5\u0027)\n\n```","commit_id":"e0b46988c751991438e3b586957a0a94616b35cb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"1aa02728d2550b6202a7340fcbc30fade37a9dc6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b9460545_392fec87","in_reply_to":"3998faeb_d033c24e","updated":"2024-06-26 07:10:13.000000000","message":"ack, updated thanks","commit_id":"e0b46988c751991438e3b586957a0a94616b35cb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"69fa8eb7e4aad5bad86c012b1e7b33511e64ab3e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f0c221d1_5636c5e3","in_reply_to":"c4ec0c8e_a261b927","updated":"2024-06-23 18:29:45.000000000","message":"\u003e def create():\n\u003e    data \u003d self.client.placement_client.create_trait(name\u003d\u0027CUSTOM_WB_1\u0027)\n\n// 204, exists already\n\n\u003e    data \u003d self.client.placement_client.create_trait(name\u003d\u0027CUSTOM_WB_6\u0027)\n\n// 201, creates new\n\n\u003e def show():\n\u003e    data \u003d self.client.placement_client.show_trait(name\u003d\u0027CUSTOM_WB_1\u0027)\n\n// 204\n\n\u003e    data \u003d self.client.placement_client.create_trait(name\u003d\u0027CUSTOM_WB_4\u0027)\n\n// 404\n\n\u003e def delete():\n\u003e    data \u003d self.client.placement_client.delete_trait(name\u003d\u0027CUSTOM_WB_5\u0027)\n\n// 204","commit_id":"e0b46988c751991438e3b586957a0a94616b35cb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3bcc18bde12312d14307d8897327fef78ddae23b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3998faeb_d033c24e","in_reply_to":"f0c221d1_5636c5e3","updated":"2024-06-24 18:35:56.000000000","message":"I know, why we kept extra param for create and show APIs are if any tests want to test it negativly if extra param is error or not. These are client lib interfaces so allowing such kind tetsing make sense.","commit_id":"e0b46988c751991438e3b586957a0a94616b35cb"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ec6796062f12a7ddb01979b0de3a0917d5d83c55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"77f795c1_9a415b23","updated":"2024-07-02 07:22:56.000000000","message":"thanks","commit_id":"3c3985c2ec5ad3a25de0fb644cd66cef71511b6f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"232e246bf4a58737964d646c383f8182ae03f720","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"17137117_06723a72","updated":"2024-06-26 19:08:36.000000000","message":"thanks lgtm","commit_id":"3c3985c2ec5ad3a25de0fb644cd66cef71511b6f"}],"tempest/lib/services/placement/placement_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"17c31351205efc8dff5608a9143280c7a08ed9d2","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        body \u003d json.loads(body)"},{"line_number":51,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def list_traits(self):"},{"line_number":54,"context_line":"        \"\"\"API ref https://docs.openstack.org/api-ref/placement/#traits"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        url \u003d \"/traits\""}],"source_content_type":"text/x-python","patch_set":1,"id":"445dbc7e_8f2f60d9","line":53,"range":{"start_line":53,"start_character":24,"end_line":53,"end_character":25},"updated":"2024-06-20 19:13:10.000000000","message":"let\u0027s take **params also in this function so that tests can test the extra attributes if needed","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3dfd271d53727ef6645e950f28d8b7acb9f8d660","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        body \u003d json.loads(body)"},{"line_number":51,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def list_traits(self):"},{"line_number":54,"context_line":"        \"\"\"API ref https://docs.openstack.org/api-ref/placement/#traits"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        url \u003d \"/traits\""}],"source_content_type":"text/x-python","patch_set":1,"id":"acd1b7cd_96e87b4a","line":53,"range":{"start_line":53,"start_character":24,"end_line":53,"end_character":25},"in_reply_to":"445dbc7e_8f2f60d9","updated":"2024-06-21 16:58:09.000000000","message":"Done","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"17c31351205efc8dff5608a9143280c7a08ed9d2","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        body \u003d json.loads(body)"},{"line_number":60,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def show_trait(self, name):"},{"line_number":63,"context_line":"        url \u003d f\"/traits/{name}\""},{"line_number":64,"context_line":"        resp, _ \u003d self.get(url)"},{"line_number":65,"context_line":"        self.expected_success(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6199f70d_8b085c0d","line":62,"range":{"start_line":62,"start_character":29,"end_line":62,"end_character":30},"updated":"2024-06-20 19:13:10.000000000","message":"ditto , **kwargs","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"17c31351205efc8dff5608a9143280c7a08ed9d2","unresolved":true,"context_lines":[{"line_number":65,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":66,"context_line":"        return resp.status"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create_trait(self, name):"},{"line_number":69,"context_line":"        url \u003d f\"/traits/{name}\""},{"line_number":70,"context_line":"        json_body \u003d json.dumps({\"name\": name})"},{"line_number":71,"context_line":"        resp, _ \u003d self.put(url, body\u003djson_body)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac6efdb5_0acdb7a5","line":68,"range":{"start_line":68,"start_character":31,"end_line":68,"end_character":32},"updated":"2024-06-20 19:13:10.000000000","message":"ditto , **kwargs","commit_id":"0c4ad93c95c26c0c999a51414069a638b667a47f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3dfd271d53727ef6645e950f28d8b7acb9f8d660","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        body \u003d json.loads(body)"},{"line_number":62,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def show_trait(self, **params):"},{"line_number":65,"context_line":"        url \u003d \"/traits\""},{"line_number":66,"context_line":"        if \":\" in params.get(\"name\"):"},{"line_number":67,"context_line":"            # this satisfies"}],"source_content_type":"text/x-python","patch_set":2,"id":"123bc05e_151368f7","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":35},"updated":"2024-06-21 16:58:09.000000000","message":"let\u0027s keep name as arg only,\n\ndef show_trait(self, name, **params):","commit_id":"9446af18dae0af0d1ff0818d0eb35dd7ece6e3e4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3dfd271d53727ef6645e950f28d8b7acb9f8d660","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":78,"context_line":"        return resp.status"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def create_trait(self, **params):"},{"line_number":81,"context_line":"        url \u003d f\"/traits/{params.get(\u0027name\u0027)}\""},{"line_number":82,"context_line":"        json_body \u003d json.dumps(params)"},{"line_number":83,"context_line":"        resp, _ \u003d self.put(url, body\u003djson_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a654aa2d_d2b97b24","line":80,"range":{"start_line":80,"start_character":4,"end_line":80,"end_character":37},"updated":"2024-06-21 16:58:09.000000000","message":"ditto","commit_id":"9446af18dae0af0d1ff0818d0eb35dd7ece6e3e4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"232e246bf4a58737964d646c383f8182ae03f720","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":78,"context_line":"        return resp.status"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def create_trait(self, **params):"},{"line_number":81,"context_line":"        url \u003d f\"/traits/{params.get(\u0027name\u0027)}\""},{"line_number":82,"context_line":"        json_body \u003d json.dumps(params)"},{"line_number":83,"context_line":"        resp, _ \u003d self.put(url, body\u003djson_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a7526f73_3ca3d215","line":80,"range":{"start_line":80,"start_character":4,"end_line":80,"end_character":37},"in_reply_to":"a654aa2d_d2b97b24","updated":"2024-06-26 19:08:36.000000000","message":"Done","commit_id":"9446af18dae0af0d1ff0818d0eb35dd7ece6e3e4"}]}
