)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6af6dbbd5a3f980e715dd1a654d1c929458a8d57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c8538ea4_8eb44a91","updated":"2023-05-16 23:14:53.000000000","message":"(ignoring the merge conflict)","commit_id":"348db5c337e367f2464dc3bc1eb4da5bc6923c20"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4b7ad782d61db19706da1824990263be44369957","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"092af2ac_c785a371","updated":"2023-05-16 23:14:09.000000000","message":"I finally got around to trying out this patch and it\u0027s definitely a significant improvement. I made a paste with outputs from 6.0.0, 6.2.0, and this patch:\n\nhttps://paste.openstack.org/show/boK6YZrmFtNj0KHBhPGf\n\nThere\u0027s still a lot of \"None\" values that I\u0027m not sure add value and rather add clutter, but this is still a major improvement I would support merging in its current state.","commit_id":"348db5c337e367f2464dc3bc1eb4da5bc6923c20"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"128de64b40eb084c74014a08049d88581d02a304","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8c776de5_3accdccd","in_reply_to":"c8538ea4_8eb44a91","updated":"2023-05-17 16:28:20.000000000","message":"Done","commit_id":"348db5c337e367f2464dc3bc1eb4da5bc6923c20"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"22639ad2526a0d4a8d78b21065ca10d6cdbf9cd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3c7ca65d_6802d6e8","updated":"2023-05-17 19:52:36.000000000","message":"Thanks for respinning this. Question inline.","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0b1d6f266a3c05535c0f316567ed17e1a379e50d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b7904f64_5791db5c","updated":"2024-01-02 20:16:22.000000000","message":"recheck get some fresh test results before approving\n\nalso wondering whether this is worth a release note?","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"}],"openstackclient/compute/v2/server.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0b1d6f266a3c05535c0f316567ed17e1a379e50d","unresolved":true,"context_lines":[{"line_number":210,"context_line":"        \u0027fault\u0027,  # only present in errored servers"},{"line_number":211,"context_line":"        \u0027flavor_id\u0027,  # removed in 2.47"},{"line_number":212,"context_line":"        \u0027networks\u0027,  # only present in create responses"},{"line_number":213,"context_line":"        \u0027security_groups\u0027,  # only present in create, detail responses"},{"line_number":214,"context_line":"    }"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    data \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"862a6517_df8e5202","line":213,"updated":"2024-01-02 20:16:22.000000000","message":"comparing with the output for OSC 6.0.0, some more things could be added here:\n\n- All OS-*:* columns, at least those that will always return None for non-admins\n- host_status\n- locked\n- server_groups\n- trusted_image_certificates","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"22639ad2526a0d4a8d78b21065ca10d6cdbf9cd1","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    flavor_info \u003d info.get(\u0027flavor\u0027, {})"},{"line_number":248,"context_line":"    # Microversion 2.47 puts the embedded flavor into the server response"},{"line_number":249,"context_line":"    # body. The presence of the \u0027original_name\u0027 attribute indicates this."},{"line_number":250,"context_line":"    if flavor_info.get(\u0027original_name\u0027) is None:  # microversion \u003c 2.47"},{"line_number":251,"context_line":"        flavor_id \u003d flavor_info.get(\u0027id\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            flavor \u003d utils.find_resource(compute_client.flavors, flavor_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ef771318_70a90bca","line":250,"updated":"2023-05-17 19:52:36.000000000","message":"Why is this better than \"if \u0027id\u0027 in flavor_info:\"? It seems a lot more opaque given that the next line does a .get(\u0027id\u0027, \u0027\u0027).","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"56398c100a0bfb12c5b858457024b025ea535671","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    flavor_info \u003d info.get(\u0027flavor\u0027, {})"},{"line_number":248,"context_line":"    # Microversion 2.47 puts the embedded flavor into the server response"},{"line_number":249,"context_line":"    # body. The presence of the \u0027original_name\u0027 attribute indicates this."},{"line_number":250,"context_line":"    if flavor_info.get(\u0027original_name\u0027) is None:  # microversion \u003c 2.47"},{"line_number":251,"context_line":"        flavor_id \u003d flavor_info.get(\u0027id\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            flavor \u003d utils.find_resource(compute_client.flavors, flavor_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3c6335f2_6f7c42cf","line":250,"in_reply_to":"a89ae99e_11668b72","updated":"2023-05-23 20:21:20.000000000","message":"Hm, OK. I was thinking \u0027flavor_info\u0027 is a dict because \u0027info\u0027 (L145 and L228) is a dict and then \u0027flavor_info\u0027 was pulled from \u0027info\u0027 ... but maybe to_dict() is not recursive? I need to try this out to verify if that\u0027s the case.\n\nPoint being, if these are all dicts then I don\u0027t think we need to do the confusing (IMHO) get of \u0027original_name\u0027 to get around the Flavor magic.","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"016c28a68a4f11584a292447e6c5f5193ee65e32","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    flavor_info \u003d info.get(\u0027flavor\u0027, {})"},{"line_number":248,"context_line":"    # Microversion 2.47 puts the embedded flavor into the server response"},{"line_number":249,"context_line":"    # body. The presence of the \u0027original_name\u0027 attribute indicates this."},{"line_number":250,"context_line":"    if flavor_info.get(\u0027original_name\u0027) is None:  # microversion \u003c 2.47"},{"line_number":251,"context_line":"        flavor_id \u003d flavor_info.get(\u0027id\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            flavor \u003d utils.find_resource(compute_client.flavors, flavor_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a89ae99e_11668b72","line":250,"in_reply_to":"cc0ebea4_83971a37","updated":"2023-05-22 10:29:45.000000000","message":"It should be converted to a \u0027Flavor\u0027 object, yes [1]. There are a few code paths that use this function and IIRC at least some of them result in these objects being returned.\n\n[1] https://github.com/openstack/openstacksdk/blob/b7ff0313aa207759d205e68aada572032bfceea0/openstack/compute/v2/server.py#L136C1-L137","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a15f58c020e1434b914f8a4c589fb7c8ab1077e2","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    flavor_info \u003d info.get(\u0027flavor\u0027, {})"},{"line_number":248,"context_line":"    # Microversion 2.47 puts the embedded flavor into the server response"},{"line_number":249,"context_line":"    # body. The presence of the \u0027original_name\u0027 attribute indicates this."},{"line_number":250,"context_line":"    if flavor_info.get(\u0027original_name\u0027) is None:  # microversion \u003c 2.47"},{"line_number":251,"context_line":"        flavor_id \u003d flavor_info.get(\u0027id\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            flavor \u003d utils.find_resource(compute_client.flavors, flavor_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"cc0ebea4_83971a37","line":250,"in_reply_to":"d61342a3_97ba821b","updated":"2023-05-18 19:33:19.000000000","message":"OK, this is probably going to be a dumb question but is flavor_info really a Flavor resource object? AFAICT it\u0027s a dict, so Flavor.__getattribute_ _ won\u0027t be used?","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b8210d6fba133467dcb3fd936b3b685766c27931","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    flavor_info \u003d info.get(\u0027flavor\u0027, {})"},{"line_number":248,"context_line":"    # Microversion 2.47 puts the embedded flavor into the server response"},{"line_number":249,"context_line":"    # body. The presence of the \u0027original_name\u0027 attribute indicates this."},{"line_number":250,"context_line":"    if flavor_info.get(\u0027original_name\u0027) is None:  # microversion \u003c 2.47"},{"line_number":251,"context_line":"        flavor_id \u003d flavor_info.get(\u0027id\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            flavor \u003d utils.find_resource(compute_client.flavors, flavor_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d61342a3_97ba821b","line":250,"in_reply_to":"ef771318_70a90bca","updated":"2023-05-18 13:43:09.000000000","message":"Because we\u0027ve got this [1]. As a result, checking for the presence of \u0027id\u0027 actually checks for the presence of \u0027id\u0027, \u0027name\u0027, or \u0027original_name\u0027, which means it\u0027ll always be true 😞 We also can\u0027t really remove that logic because SDK kind of expects there to always be an \u0027id\u0027 field. I had a FIXME in the previous revision that explains this and I did consider leaving a NOTE here in this revision but it didn\u0027t really make sense without looking at git history (for a before/after comparison). If you\u0027ve any suggestions for how to make this clearer I\u0027d be more than happy to hear them but I\u0027ve got zilch 🤷‍♂️\n\n[1] https://github.com/openstack/openstacksdk/blob/18fbd8c7/openstack/compute/v2/flavor.py#L79-L87","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0b1d6f266a3c05535c0f316567ed17e1a379e50d","unresolved":true,"context_lines":[{"line_number":255,"context_line":"        except Exception:"},{"line_number":256,"context_line":"            info[\u0027flavor\u0027] \u003d flavor_id"},{"line_number":257,"context_line":"    else:  # microversion \u003e\u003d 2.47"},{"line_number":258,"context_line":"        info[\u0027flavor\u0027] \u003d format_columns.DictColumn(flavor_info)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    # there\u0027s a lot of redundant information in BDMs - strip it"},{"line_number":261,"context_line":"    if \u0027volumes_attached\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e597ef7_7fd12816","line":258,"updated":"2024-01-02 20:16:22.000000000","message":"not directly related, but with the latest microversion getting used by default now, this is always producing a very long line, making the formatting rather ugly. not sure if we should/could strip this down somehow, too","commit_id":"f43e2ed20d790b6cc84bf0e2b0ada37b22a4e6dc"}]}
