)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Migrate server_groups to the new API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Moved the server_groups to the new API. Had to make slight changes to"},{"line_number":10,"context_line":"the functional tests - they were appearing to test using the newer"},{"line_number":11,"context_line":"microversions but expecting output like the old microversions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ied7bd6f56e277f0c5efcd5ba028765f9be65050f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"e4da586a_2db13195","line":11,"range":{"start_line":10,"start_character":23,"end_line":11,"end_character":62},"updated":"2022-07-29 10:54:58.000000000","message":"That\u0027s because openstacksdk defaults to using the version defined in \u0027_max_microversion\u0027 unless a user overrides this. You could override it is needed (by passing \u0027--os-compute-api-version {VERSION}\u0027 or setting the \u0027OS_COMPUTE_API_VERSION\u0027 environment variable in a test.","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Migrate server_groups to the new API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Moved the server_groups to the new API. Had to make slight changes to"},{"line_number":10,"context_line":"the functional tests - they were appearing to test using the newer"},{"line_number":11,"context_line":"microversions but expecting output like the old microversions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ied7bd6f56e277f0c5efcd5ba028765f9be65050f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"f09ebf7f_3037d8ba","line":11,"range":{"start_line":10,"start_character":23,"end_line":11,"end_character":62},"in_reply_to":"e4da586a_2db13195","updated":"2022-08-02 20:40:20.000000000","message":"Done","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"f5b2e08196f508f4ddf5d3f1295982baf8aa2316","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a4607ddd_a14aa12a","updated":"2022-06-29 00:03:19.000000000","message":"Made quite a bit of progress today. Not quite ready for commit - need to get a couple more small things fixed. Aiming for next Tuesday (2022-07-05). After that, on to ensuring it\u0027s also passing integration tests.","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6bb66e8f_259a4a6f","in_reply_to":"a4607ddd_a14aa12a","updated":"2022-07-29 00:09:59.000000000","message":"Done","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"388718ffb32bddd7d0caadf0ccbe97e1a384e005","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e0f3d92a_2bfd6a41","updated":"2022-07-13 09:56:27.000000000","message":"I dumped some testing notes at https://paste.opendev.org/show/815411/","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a94f3e17_8eeab227","updated":"2022-07-13 09:54:19.000000000","message":"This is getting there. I ran a set of tests against a bog standard DevStack deployment to figure out what had changed. In theory, the output should be identical before and after this change. It isn\u0027t yet, so where things differ I\u0027ve called them out below. I suggest doing the same yourself. Let us know if you can\u0027t figure out how to do this.","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2ba786cf_f7e95b0a","updated":"2022-08-02 20:40:20.000000000","message":"Implemented all requested changes.","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8bc03767_9f72110d","updated":"2022-07-29 10:54:58.000000000","message":"So close","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a78037be_dcf9f0eb","updated":"2022-07-29 00:09:59.000000000","message":"This should be ready for another look. I had to tweak some functional tests which were expecting the output of the older microversions while using the newer microversions. I confirmed that the relevant commands are creating the same output both before and after my edits.","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7e17a4c0168ea1f5755cf338b0280f99edd81a31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"353d1c89_36562cca","updated":"2022-08-03 10:24:38.000000000","message":"Great work 👍","commit_id":"a9f81332743b681d335a03ad326189a4b7ea325e"}],"openstackclient/compute/v2/server_group.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"adbe284b139d910230e5567f3b7a6e730767fef6","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        server_group \u003d compute_client.create_server_group("},{"line_number":122,"context_line":"            **kwargs,"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        info.update(server_group._info)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5eb759dd_a3194d88","line":123,"updated":"2022-05-13 15:38:07.000000000","message":"nit: this will fit on one line","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"27e37a40ee5da71ff4b64172b8e46081755bcf1e","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        server_group \u003d compute_client.create_server_group("},{"line_number":122,"context_line":"            **kwargs,"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        info.update(server_group._info)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c26adf1e_385464f8","line":123,"in_reply_to":"5eb759dd_a3194d88","updated":"2022-06-21 17:57:10.000000000","message":"Done, will be included in the next commit","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":true,"context_lines":[{"line_number":119,"context_line":"            server_group,"},{"line_number":120,"context_line":"            compute_client"},{"line_number":121,"context_line":"        )"},{"line_number":122,"context_line":"        data \u003d utils.get_item_properties(server_group, columns)"},{"line_number":123,"context_line":"        return display_columns, data"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a7997ceb_bebf8f1c","line":122,"updated":"2022-07-13 09:54:19.000000000","message":"wuh wuh. You\u0027ve dropped the formatters here which means the output is significantly less pretty than before.\n\nBefore:\n\n    ❯ export OS_COMPUTE_API_VERSION\u003d2.64\n    ❯ openstack server group create sg-foo --policy anti-affinity --rule max_server_per_host\u003d2\n    +------------+--------------------------------------+\n    | Field      | Value                                |\n    +------------+--------------------------------------+\n    | id         | f18f5374-3f83-4317-acb1-153739bc51a1 |\n    | members    |                                      |\n    | name       | sg-foo                               |\n    | policy     | anti-affinity                        |\n    | project_id | 781c9299e68d4b7c80ef52712889647f     |\n    | rules      | max_server_per_host\u003d\u00272\u0027              |\n    | user_id    | baf52ddd09934580b845e3c936cbc7f9     |\n    +------------+--------------------------------------+\n\nAfter:\n\n    ❯ export OS_COMPUTE_API_VERSION\u003d2.64\n    ❯ openstack server group create sg-foo --policy anti-affinity --rule max_server_per_host\u003d2\n    +------------+--------------------------------------+\n    | Field      | Value                                |\n    +------------+--------------------------------------+\n    | id         | 473a8afc-3e4c-40ac-942e-4c80e0044a6f |\n    | member_ids | []                                   |\n    | name       | sg-foo                               |\n    | policy     | anti-affinity                        |\n    | project_id | 781c9299e68d4b7c80ef52712889647f     |\n    | rules      | [{\u0027max_server_per_host\u0027: 2}]         |\n    | user_id    | baf52ddd09934580b845e3c936cbc7f9     |\n    +------------+--------------------------------------+\n\nYou\u0027ll also note you\u0027ve dropped the mapping of \u0027member_ids\u0027 -\u003e \u0027members\u0027. You don\u0027t want to do this. There are other issues with other microversions.\n\nBefore:\n\n    ❯ export OS_COMPUTE_API_VERSION\u003d2.15\n    ❯ openstack server group create sg-foo --policy soft-affinity\n    +------------+--------------------------------------+\n    | Field      | Value                                |\n    +------------+--------------------------------------+\n    | id         | 90d622b2-386f-436c-8cc3-ce7bce6fe7f4 |\n    | members    |                                      |\n    | name       | sg-foo                               |\n    | policies   | soft-affinity                        |\n    | project_id | 781c9299e68d4b7c80ef52712889647f     |\n    | user_id    | baf52ddd09934580b845e3c936cbc7f9     |\n    +------------+--------------------------------------+\n\nAfter:\n\n    ❯ export OS_COMPUTE_API_VERSION\u003d2.15\n    ❯ openstack server group create sg-foo --policy soft-affinity\n    +------------+--------------------------------------+\n    | Field      | Value                                |\n    +------------+--------------------------------------+\n    | id         | b1bdb06a-7108-494b-9220-4c56c975fbd0 |\n    | member_ids | []                                   |\n    | name       | sg-foo                               |\n    | policies   | [\u0027soft-affinity\u0027]                    |\n    | project_id | 781c9299e68d4b7c80ef52712889647f     |\n    | rules      | None                                 |\n    | user_id    | baf52ddd09934580b845e3c936cbc7f9     |\n    +------------+--------------------------------------+\n\nClearly \u0027rules\u0027 should not be emitted here. You probably want a microversion-specific check to ignore this column if present, similar to what you did for policy/policies above.","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            server_group,"},{"line_number":120,"context_line":"            compute_client"},{"line_number":121,"context_line":"        )"},{"line_number":122,"context_line":"        data \u003d utils.get_item_properties(server_group, columns)"},{"line_number":123,"context_line":"        return display_columns, data"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"60a2a1b2_503bcc1e","line":122,"in_reply_to":"a7997ceb_bebf8f1c","updated":"2022-07-29 00:09:59.000000000","message":"Done","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        result \u003d 0"},{"line_number":142,"context_line":"        for group in parsed_args.server_group:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                group_obj \u003d compute_client.get_server_group(group)"},{"line_number":145,"context_line":"                compute_client.delete_server_group(group_obj.id)"},{"line_number":146,"context_line":"            # Catch all exceptions in order to avoid to block the next deleting"},{"line_number":147,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a739ae7_8a542868","line":144,"range":{"start_line":144,"start_character":43,"end_line":144,"end_character":59},"updated":"2022-07-13 09:54:19.000000000","message":"You don\u0027t want \u0027get_server_group\u0027 here. A \u0027get_foo\u0027 proxy method will only retrieve a resource by its ID. You also need to retrieve it by its name so you can do things like:\n\n    ❯ openstack server group delete sg01\n\nThe \u0027find_foo\u0027 proxy methods (\u0027find_server_group\u0027 in this case) will attempt to retrieve by ID and will fall back to retrieving by name if this fails. You want this functionality. If you don\u0027t, the following happens:\n\n    ❯ openstack server group delete sg-foo\n    No ServerGroup found for sg-foo: Client Error for url: http://10.0.108.84/compute/v2.1/os-server-groups/sg-foo, Instance group sg-foo could not be found.","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        result \u003d 0"},{"line_number":142,"context_line":"        for group in parsed_args.server_group:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                group_obj \u003d compute_client.get_server_group(group)"},{"line_number":145,"context_line":"                compute_client.delete_server_group(group_obj.id)"},{"line_number":146,"context_line":"            # Catch all exceptions in order to avoid to block the next deleting"},{"line_number":147,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"d2d6e57c_f26c50a0","line":144,"range":{"start_line":144,"start_character":43,"end_line":144,"end_character":59},"in_reply_to":"9a739ae7_8a542868","updated":"2022-07-29 00:09:59.000000000","message":"Done","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":true,"context_lines":[{"line_number":246,"context_line":"            column_headers,"},{"line_number":247,"context_line":"            ("},{"line_number":248,"context_line":"                utils.get_item_properties("},{"line_number":249,"context_line":"                    s, columns,"},{"line_number":250,"context_line":"                ) for s in data"},{"line_number":251,"context_line":"            ),"},{"line_number":252,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"8deed5d1_7dbbfe52","line":249,"updated":"2022-07-13 09:54:19.000000000","message":"You don\u0027t want to drop formatters here either...","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            column_headers,"},{"line_number":247,"context_line":"            ("},{"line_number":248,"context_line":"                utils.get_item_properties("},{"line_number":249,"context_line":"                    s, columns,"},{"line_number":250,"context_line":"                ) for s in data"},{"line_number":251,"context_line":"            ),"},{"line_number":252,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"7da2a27b_3a0a02d7","line":249,"in_reply_to":"8deed5d1_7dbbfe52","updated":"2022-07-29 00:09:59.000000000","message":"Done","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":true,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def take_action(self, parsed_args):"},{"line_number":268,"context_line":"        compute_client \u003d self.app.client_manager.sdk_connection.compute"},{"line_number":269,"context_line":"        group \u003d compute_client.get_server_group(parsed_args.server_group)"},{"line_number":270,"context_line":"        display_columns, columns \u003d _get_server_group_columns("},{"line_number":271,"context_line":"            group,"},{"line_number":272,"context_line":"            compute_client"}],"source_content_type":"text/x-python","patch_set":3,"id":"4159e642_d79e50d6","line":269,"range":{"start_line":269,"start_character":31,"end_line":269,"end_character":47},"updated":"2022-07-13 09:54:19.000000000","message":"ditto","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"69e601c300e8d285a31f9cf6d7ef4b5d736f8604","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def take_action(self, parsed_args):"},{"line_number":268,"context_line":"        compute_client \u003d self.app.client_manager.sdk_connection.compute"},{"line_number":269,"context_line":"        group \u003d compute_client.get_server_group(parsed_args.server_group)"},{"line_number":270,"context_line":"        display_columns, columns \u003d _get_server_group_columns("},{"line_number":271,"context_line":"            group,"},{"line_number":272,"context_line":"            compute_client"}],"source_content_type":"text/x-python","patch_set":3,"id":"016245f3_b3804c6b","line":269,"range":{"start_line":269,"start_character":31,"end_line":269,"end_character":47},"in_reply_to":"4159e642_d79e50d6","updated":"2022-07-29 00:09:59.000000000","message":"Done","commit_id":"dfb7fe3e30f396c51b273c26141e1c15d7b28da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"_formatters \u003d {"},{"line_number":34,"context_line":"    \u0027members\u0027: format_columns.ListColumn,"},{"line_number":35,"context_line":"    \u0027member_ids\u0027: format_columns.ListColumn,"},{"line_number":36,"context_line":"    \u0027policies\u0027: format_columns.ListColumn,"},{"line_number":37,"context_line":"    \u0027rules\u0027: format_columns.DictColumn,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a0f7f8bb_980a6e9b","line":34,"updated":"2022-07-29 10:54:58.000000000","message":"This isn\u0027t relevant. See below","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"_formatters \u003d {"},{"line_number":34,"context_line":"    \u0027members\u0027: format_columns.ListColumn,"},{"line_number":35,"context_line":"    \u0027member_ids\u0027: format_columns.ListColumn,"},{"line_number":36,"context_line":"    \u0027policies\u0027: format_columns.ListColumn,"},{"line_number":37,"context_line":"    \u0027rules\u0027: format_columns.DictColumn,"}],"source_content_type":"text/x-python","patch_set":7,"id":"4030d799_9d7d1234","line":34,"in_reply_to":"a0f7f8bb_980a6e9b","updated":"2022-08-02 20:40:20.000000000","message":"Done","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"db75796c04f0a73c391c490b2cf64b8f8889a33d","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            kwargs \u003d {"},{"line_number":121,"context_line":"                \u0027name\u0027: parsed_args.name,"},{"line_number":122,"context_line":"                \u0027policy\u0027: parsed_args.policy,"},{"line_number":123,"context_line":"                # \u0027rules\u0027: parsed_args.rules or None,"},{"line_number":124,"context_line":"                # TODO(vikurtz) passing a None seems unsupported"},{"line_number":125,"context_line":"            }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            if parsed_args.rules:"}],"source_content_type":"text/x-python","patch_set":7,"id":"f18e51cb_3d07a33f","line":124,"range":{"start_line":123,"start_character":0,"end_line":124,"end_character":64},"updated":"2022-07-29 10:56:36.000000000","message":"Just remove this. What you\u0027ve done is fine","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            kwargs \u003d {"},{"line_number":121,"context_line":"                \u0027name\u0027: parsed_args.name,"},{"line_number":122,"context_line":"                \u0027policy\u0027: parsed_args.policy,"},{"line_number":123,"context_line":"                # \u0027rules\u0027: parsed_args.rules or None,"},{"line_number":124,"context_line":"                # TODO(vikurtz) passing a None seems unsupported"},{"line_number":125,"context_line":"            }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            if parsed_args.rules:"}],"source_content_type":"text/x-python","patch_set":7,"id":"cf6bae69_873b249a","line":124,"range":{"start_line":123,"start_character":0,"end_line":124,"end_character":64},"in_reply_to":"f18e51cb_3d07a33f","updated":"2022-08-02 20:40:20.000000000","message":"Done","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        data \u003d utils.get_item_properties("},{"line_number":137,"context_line":"            server_group,"},{"line_number":138,"context_line":"            columns,"},{"line_number":139,"context_line":"            formatters\u003d_formatters"},{"line_number":140,"context_line":"        )"},{"line_number":141,"context_line":"        return display_columns, data"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"4f975589_bf2f759f","line":139,"updated":"2022-07-29 10:54:58.000000000","message":"nit: can you add trailing commas?","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        )"},{"line_number":251,"context_line":"        if parsed_args.long:"},{"line_number":252,"context_line":"            columns +\u003d ("},{"line_number":253,"context_line":"                \u0027members\u0027,"},{"line_number":254,"context_line":"                \u0027project_id\u0027,"},{"line_number":255,"context_line":"                \u0027user_id\u0027,"},{"line_number":256,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":7,"id":"c328db18_9684f2fd","line":253,"range":{"start_line":253,"start_character":17,"end_line":253,"end_character":24},"updated":"2022-07-29 10:54:58.000000000","message":"This is called \u0027member_ids\u0027 in openstacksdk","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        )"},{"line_number":251,"context_line":"        if parsed_args.long:"},{"line_number":252,"context_line":"            columns +\u003d ("},{"line_number":253,"context_line":"                \u0027members\u0027,"},{"line_number":254,"context_line":"                \u0027project_id\u0027,"},{"line_number":255,"context_line":"                \u0027user_id\u0027,"},{"line_number":256,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":7,"id":"bd479ae3_b827fa6f","line":253,"range":{"start_line":253,"start_character":17,"end_line":253,"end_character":24},"in_reply_to":"c328db18_9684f2fd","updated":"2022-08-02 20:40:20.000000000","message":"Done","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"}],"openstackclient/tests/unit/compute/v2/fakes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":true,"context_lines":[{"line_number":1809,"context_line":"    # Set default attributes."},{"line_number":1810,"context_line":"    server_group_info \u003d {"},{"line_number":1811,"context_line":"        \u0027id\u0027: \u0027server-group-id-\u0027 + uuid.uuid4().hex,"},{"line_number":1812,"context_line":"        \u0027member_ids\u0027: \u0027\u0027,  # TODO(vikurtz)"},{"line_number":1813,"context_line":"        # Originally was [], unit tests don\u0027t pass unless it\u0027s \u0027\u0027"},{"line_number":1814,"context_line":"        \u0027metadata\u0027: {},"},{"line_number":1815,"context_line":"        \u0027name\u0027: \u0027server-group-name-\u0027 + uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":7,"id":"c9029b81_1f632402","line":1812,"range":{"start_line":1812,"start_character":9,"end_line":1812,"end_character":19},"updated":"2022-07-29 10:54:58.000000000","message":"As noted in the main code change, this is (correctly) called \u0027member_ids\u0027 here yet you reference \u0027members\u0027 in the code","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"65ffc6e137c3ac6bd1381bcd0f6c9c4007b59864","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"    # Set default attributes."},{"line_number":1810,"context_line":"    server_group_info \u003d {"},{"line_number":1811,"context_line":"        \u0027id\u0027: \u0027server-group-id-\u0027 + uuid.uuid4().hex,"},{"line_number":1812,"context_line":"        \u0027member_ids\u0027: \u0027\u0027,  # TODO(vikurtz)"},{"line_number":1813,"context_line":"        # Originally was [], unit tests don\u0027t pass unless it\u0027s \u0027\u0027"},{"line_number":1814,"context_line":"        \u0027metadata\u0027: {},"},{"line_number":1815,"context_line":"        \u0027name\u0027: \u0027server-group-name-\u0027 + uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7c1ac265_fd8230fe","line":1812,"range":{"start_line":1812,"start_character":9,"end_line":1812,"end_character":19},"in_reply_to":"c9029b81_1f632402","updated":"2022-08-02 20:40:20.000000000","message":"Done","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"}],"openstackclient/tests/unit/compute/v2/test_server_group.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"deba097336ebd5856261f8a9d7ca02b1cf2304a6","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        super(TestServerGroupCreate, self).setUp()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.sdk_client.create_server_group.return_value \u003d \\"},{"line_number":91,"context_line":"            self.fake_server_group"},{"line_number":92,"context_line":"        self.cmd \u003d server_group.CreateServerGroup(self.app, None)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a84c3550_73688dac","line":91,"updated":"2022-05-13 15:40:02.000000000","message":"This needs to return a ServerGroup resource from openstacksdk, not a fake Resource (those are novaclient things). See https://review.opendev.org/c/openstack/python-openstackclient/+/839936 for inspo","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"f5b2e08196f508f4ddf5d3f1295982baf8aa2316","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        super(TestServerGroupCreate, self).setUp()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.sdk_client.create_server_group.return_value \u003d \\"},{"line_number":91,"context_line":"            self.fake_server_group"},{"line_number":92,"context_line":"        self.cmd \u003d server_group.CreateServerGroup(self.app, None)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2b4bb2e_da52f16d","line":91,"in_reply_to":"a84c3550_73688dac","updated":"2022-06-29 00:03:19.000000000","message":"Been working primarily on this today. It\u0027s almost done, not quite ready for commit (a couple more minor things to check + fix). Once it is I\u0027ll commit this + the other fixes I\u0027ve implemented thus far for review before moving on to getting it passing the integration tests.","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92aee7c5686cb973b5fdc3cbb87cfae2483cc3e1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        super(TestServerGroupCreate, self).setUp()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.sdk_client.create_server_group.return_value \u003d \\"},{"line_number":91,"context_line":"            self.fake_server_group"},{"line_number":92,"context_line":"        self.cmd \u003d server_group.CreateServerGroup(self.app, None)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"385e3c09_2c56ef5d","line":91,"in_reply_to":"c2b4bb2e_da52f16d","updated":"2022-07-13 09:54:19.000000000","message":"Ack","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"adbe284b139d910230e5567f3b7a6e730767fef6","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dFalse)"},{"line_number":180,"context_line":"    def test_server_group_create_with_rules_pre_v264(self, sm_mock):"},{"line_number":181,"context_line":"        arglist \u003d ["},{"line_number":182,"context_line":"            # \u0027--policy\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":183,"context_line":"            \u0027--rule\u0027, \u0027max_server_per_host\u003d2\u0027,"},{"line_number":184,"context_line":"            \u0027affinity_group\u0027,"},{"line_number":185,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a114c50_136c822c","line":182,"updated":"2022-05-13 15:38:07.000000000","message":"I\u0027m going to guess that the SDK is missing this feature? If so, we really need to add it before we can merge this","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c4396b86f59a8e62c5e26234b48ae756871dbade","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dFalse)"},{"line_number":180,"context_line":"    def test_server_group_create_with_rules_pre_v264(self, sm_mock):"},{"line_number":181,"context_line":"        arglist \u003d ["},{"line_number":182,"context_line":"            # \u0027--policy\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":183,"context_line":"            \u0027--rule\u0027, \u0027max_server_per_host\u003d2\u0027,"},{"line_number":184,"context_line":"            \u0027affinity_group\u0027,"},{"line_number":185,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"a0b63110_f4e50155","line":182,"in_reply_to":"10b750d7_b4cc3337","updated":"2022-06-22 11:04:52.000000000","message":"You want to use \u0027side_effect\u0027 for this so instead of \u0027return_value\u0027. \u0027side_effect\u0027 lets you return an iterable with a different return values for each successive call. There are likely some examples of this scattered through the tests if you search for it.","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"27e37a40ee5da71ff4b64172b8e46081755bcf1e","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dFalse)"},{"line_number":180,"context_line":"    def test_server_group_create_with_rules_pre_v264(self, sm_mock):"},{"line_number":181,"context_line":"        arglist \u003d ["},{"line_number":182,"context_line":"            # \u0027--policy\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":183,"context_line":"            \u0027--rule\u0027, \u0027max_server_per_host\u003d2\u0027,"},{"line_number":184,"context_line":"            \u0027affinity_group\u0027,"},{"line_number":185,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"10b750d7_b4cc3337","line":182,"in_reply_to":"7a114c50_136c822c","updated":"2022-06-21 17:57:10.000000000","message":"The issue I\u0027m running into here has to do with the patching of the supports_microversion function. I haven\u0027t found a way to patch it to report a specific old version (i.e. the old API based tests reported API version 2.63), I seemingly can only patch it to return False or True exclusively. If I patch it to return False in order to test pre-2.64 versions as intended, it rolls all the way back and begins throwing an error that we need v2.15 or greater to support soft-anti-affinity. Specific error is below:\n\ntesttools.matchers._impl.MismatchError: \u0027--os-compute-api-version 2.64 or greater is required\u0027 not in \u0027--os-compute-api-version 2.15 or greater is required to support the soft-anti-affinity policy\u0027","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":34327,"name":"Violet Kurtz","email":"vikurtz@osuosl.org","username":"OniLink"},"change_message_id":"f5b2e08196f508f4ddf5d3f1295982baf8aa2316","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    @mock.patch.object(sdk_utils, \u0027supports_microversion\u0027, return_value\u003dFalse)"},{"line_number":180,"context_line":"    def test_server_group_create_with_rules_pre_v264(self, sm_mock):"},{"line_number":181,"context_line":"        arglist \u003d ["},{"line_number":182,"context_line":"            # \u0027--policy\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":183,"context_line":"            \u0027--rule\u0027, \u0027max_server_per_host\u003d2\u0027,"},{"line_number":184,"context_line":"            \u0027affinity_group\u0027,"},{"line_number":185,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fed888a3_b5369e45","line":182,"in_reply_to":"a0b63110_f4e50155","updated":"2022-06-29 00:03:19.000000000","message":"Ty. Done, will be included in the next commit.","commit_id":"db2e12010c7a841da8d8f86443d772fd0034b44e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f32656249435b690a8b0a9943b0cf1a09520439","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    )"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def setUp(self):"},{"line_number":52,"context_line":"        super(TestServerGroup, self).setUp()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Create and get a shortcut to the compute client mock"},{"line_number":55,"context_line":"        self.app.client_manager.sdk_connection \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":7,"id":"34dce9f8_135f3835","line":52,"range":{"start_line":52,"start_character":14,"end_line":52,"end_character":35},"updated":"2022-07-29 10:54:58.000000000","message":"nit: You can drop this entirely (it\u0027s not needed in Python 3)","commit_id":"0547c5d91a4f9a01e56e538282df40756291436c"}]}
