)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3e037d01ca61d7e0a6ab258bc741045ca0e91af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"2012a668_aac4465b","updated":"2022-02-14 18:20:11.000000000","message":"lgtm, +1 on stephen comment","commit_id":"229927dea03fdffe79969b5d1b1acdf420593876"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"152808da633bbad73b19321bf3158af4eaaaa913","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"52aa3e87_d21dd769","updated":"2022-05-18 08:34:20.000000000","message":"recheck","commit_id":"4f79031d9ef5ba8fefa42ad5180f4f27a0df513b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b99a812eb201421429e2b9c77f590cbdb202bb25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"59e4f655_255eb745","updated":"2022-05-19 03:26:03.000000000","message":"recheck","commit_id":"4f79031d9ef5ba8fefa42ad5180f4f27a0df513b"}],"api-ref/source/servers-actions.inc":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"746ae3e17687f5407a9d0a491497849b7df0aa76","unresolved":true,"context_lines":[{"line_number":622,"context_line":"  - OS-DCF:diskConfig: disk_config"},{"line_number":623,"context_line":"  - status: server_status"},{"line_number":624,"context_line":"  - tenant_id: tenant_id_body_2_89"},{"line_number":625,"context_line":"  - project_id: project_id_body_2_90"},{"line_number":626,"context_line":"  - updated: updated"},{"line_number":627,"context_line":"  - user_id: user_id"},{"line_number":628,"context_line":"  - adminPass: adminPass_response"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"a5a98a4f_7e9bb270","line":625,"range":{"start_line":625,"start_character":0,"end_line":625,"end_character":36},"updated":"2021-01-22 22:22:53.000000000","message":"you are doing this file change in previous commit, this need rebase to reflect that","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"16128a3c34b4b068359887bbca80692e7af48e84","unresolved":false,"context_lines":[{"line_number":622,"context_line":"  - OS-DCF:diskConfig: disk_config"},{"line_number":623,"context_line":"  - status: server_status"},{"line_number":624,"context_line":"  - tenant_id: tenant_id_body_2_89"},{"line_number":625,"context_line":"  - project_id: project_id_body_2_90"},{"line_number":626,"context_line":"  - updated: updated"},{"line_number":627,"context_line":"  - user_id: user_id"},{"line_number":628,"context_line":"  - adminPass: adminPass_response"}],"source_content_type":"text/x-c++src","patch_set":11,"id":"a0a0921c_a3619618","line":625,"range":{"start_line":625,"start_character":0,"end_line":625,"end_character":36},"in_reply_to":"a5a98a4f_7e9bb270","updated":"2021-01-26 09:42:18.000000000","message":"Done","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"}],"nova/api/openstack/compute/security_groups.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63d96e1fb655e853f25b52a8159597803656224f","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _format_security_group_rule(self, context, rule, group_rule_data\u003dNone,"},{"line_number":49,"context_line":"                                    support_project_id\u003dFalse):"},{"line_number":50,"context_line":"        \"\"\"Return a security group rule in desired API response format."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        If group_rule_data is passed in that is used rather than querying"}],"source_content_type":"text/x-python","patch_set":6,"id":"fc135fa1_cb51a01a","line":49,"range":{"start_line":49,"start_character":36,"end_line":49,"end_character":60},"updated":"2021-01-04 16:00:28.000000000","message":"I\u0027m not a fan of this style. I think every the caller of this function should provides this new parameter. So you should not default it. Just move it before group_rule_data and make it a mandatory parameter. This helps avoiding missing some callers that forget to include the new parameter and as a consequence still using tenant_id with a 2.88 request\n\nI think this comment is true for all the function that is now got the new support_project_id parameter.","commit_id":"5031074140a8ba92e94f00af609a4542e3156b1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63d96e1fb655e853f25b52a8159597803656224f","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                                \u0027tenant_id\u0027: source_group.get(\u0027project_id\u0027)}"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            if support_project_id:"},{"line_number":84,"context_line":"                sg_rule[\u0027group\u0027].pop(\u0027tenant_id\u0027, None)"},{"line_number":85,"context_line":"                sg_rule[\u0027group\u0027][\u0027project_id\u0027] \u003d source_group.get("},{"line_number":86,"context_line":"                    \u0027project_id\u0027)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3e77bc68_3c34af24","line":84,"range":{"start_line":84,"start_character":16,"end_line":84,"end_character":55},"updated":"2021-01-04 16:00:28.000000000","message":"it is just added to the dict 3 lines above so you can refactor this to avoid adding then removing.","commit_id":"5031074140a8ba92e94f00af609a4542e3156b1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63d96e1fb655e853f25b52a8159597803656224f","unresolved":true,"context_lines":[{"line_number":128,"context_line":"                \u0027tenant_id\u0027: group.get(\u0027project_id\u0027)}"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            if support_project_id:"},{"line_number":131,"context_line":"                group_rule_data_by_rule_group_id[group[\u0027id\u0027]].pop(\u0027tenant_id\u0027)"},{"line_number":132,"context_line":"                group_rule_data_by_rule_group_id[group[\u0027id\u0027]]["},{"line_number":133,"context_line":"                    \u0027project_id\u0027] \u003d group.get(\u0027project_id\u0027)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3e30010a_36d798cc","line":131,"updated":"2021-01-04 16:00:28.000000000","message":"ditto, you can avoid adding and then removing tenant_id with a bit of refactoring","commit_id":"5031074140a8ba92e94f00af609a4542e3156b1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63d96e1fb655e853f25b52a8159597803656224f","unresolved":true,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        # With microversion 2.88, we were replaced \u0027project_id\u0027"},{"line_number":403,"context_line":"        # with \u0027tenant_id\u0027."},{"line_number":404,"context_line":"        support_project_id \u003d False"},{"line_number":405,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.88\u0027):"},{"line_number":406,"context_line":"            support_project_id \u003d True"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        try:"},{"line_number":409,"context_line":"            groups \u003d security_group_api.get_instance_security_groups("}],"source_content_type":"text/x-python","patch_set":6,"id":"5d8b2c5c_884e3549","line":406,"range":{"start_line":404,"start_character":8,"end_line":406,"end_character":37},"updated":"2021-01-04 16:00:28.000000000","message":"you can write this in a single line:\n\n    support_project_id \u003d api_version_request.is_supported(req, min_version\u003d\u00272.88\u0027)","commit_id":"5031074140a8ba92e94f00af609a4542e3156b1d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"746ae3e17687f5407a9d0a491497849b7df0aa76","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                        source_group \u003d security_group_api.get("},{"line_number":141,"context_line":"                            context, id\u003drule[\u0027group_id\u0027])"},{"line_number":142,"context_line":"                        group_rule_data_by_rule_group_id[rule_group_id] \u003d {"},{"line_number":143,"context_line":"                            \u0027name\u0027: source_group.get(\u0027name\u0027),"},{"line_number":144,"context_line":"                            \u0027tenant_id\u0027: source_group.get(\u0027project_id\u0027)}"},{"line_number":145,"context_line":"                    except exception.SecurityGroupNotFound:"},{"line_number":146,"context_line":"                        LOG.debug(\"Security Group %s does not exist\","},{"line_number":147,"context_line":"                                  rule_group_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1346aa38_5f2b9da9","line":144,"range":{"start_line":143,"start_character":0,"end_line":144,"end_character":72},"updated":"2021-01-22 22:22:53.000000000","message":"here also we need to change","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"16128a3c34b4b068359887bbca80692e7af48e84","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                        source_group \u003d security_group_api.get("},{"line_number":141,"context_line":"                            context, id\u003drule[\u0027group_id\u0027])"},{"line_number":142,"context_line":"                        group_rule_data_by_rule_group_id[rule_group_id] \u003d {"},{"line_number":143,"context_line":"                            \u0027name\u0027: source_group.get(\u0027name\u0027),"},{"line_number":144,"context_line":"                            \u0027tenant_id\u0027: source_group.get(\u0027project_id\u0027)}"},{"line_number":145,"context_line":"                    except exception.SecurityGroupNotFound:"},{"line_number":146,"context_line":"                        LOG.debug(\"Security Group %s does not exist\","},{"line_number":147,"context_line":"                                  rule_group_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"92f827d1_551c117d","line":144,"range":{"start_line":143,"start_character":0,"end_line":144,"end_character":72},"in_reply_to":"1346aa38_5f2b9da9","updated":"2021-01-26 09:42:18.000000000","message":"Done","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        super(SecurityGroupControllerBase, self).__init__()"},{"line_number":46,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _format_security_group_rule(self, context, rule, support_project_id,"},{"line_number":49,"context_line":"                                    group_rule_data\u003dNone):"},{"line_number":50,"context_line":"        \"\"\"Return a security group rule in desired API response format."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"afc13b1c_d820eaac","line":48,"range":{"start_line":48,"start_character":57,"end_line":48,"end_character":64},"updated":"2021-06-30 10:25:23.000000000","message":"Can you call this \u0027use_project_id\u0027 instead? It\u0027s similar but \"feels\" better than \u0027support_project_id\u0027.\n\nAlso, this is a nit but could we wrap this a little better?\n\n  def _format_security_group_rule(\n      self, context, rule, use_project_id, group_rule_data\u003dNone,\n  ):\n\nFinally, could we get a docstring about this (and ideally the other) arguments?","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(SecurityGroupControllerBase, self).__init__()"},{"line_number":46,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _format_security_group_rule(self, context, rule, support_project_id,"},{"line_number":49,"context_line":"                                    group_rule_data\u003dNone):"},{"line_number":50,"context_line":"        \"\"\"Return a security group rule in desired API response format."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba7f3fd4_679c2c69","line":48,"range":{"start_line":48,"start_character":57,"end_line":48,"end_character":64},"in_reply_to":"afc13b1c_d820eaac","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":88,"context_line":"            sg_rule[\u0027ip_range\u0027] \u003d {\u0027cidr\u0027: rule[\u0027cidr\u0027]}"},{"line_number":89,"context_line":"        return sg_rule"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _format_security_group(self, context, group, support_project_id,"},{"line_number":92,"context_line":"                               group_rule_data_by_rule_group_id\u003dNone):"},{"line_number":93,"context_line":"        security_group \u003d {}"},{"line_number":94,"context_line":"        security_group[\u0027id\u0027] \u003d group[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"985c985a_179c990d","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":60},"updated":"2021-06-30 10:25:23.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            sg_rule[\u0027ip_range\u0027] \u003d {\u0027cidr\u0027: rule[\u0027cidr\u0027]}"},{"line_number":89,"context_line":"        return sg_rule"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _format_security_group(self, context, group, support_project_id,"},{"line_number":92,"context_line":"                               group_rule_data_by_rule_group_id\u003dNone):"},{"line_number":93,"context_line":"        security_group \u003d {}"},{"line_number":94,"context_line":"        security_group[\u0027id\u0027] \u003d group[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"860ee619_e79eba34","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":60},"in_reply_to":"985c985a_179c990d","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        return security_group"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _get_group_rule_data_by_rule_group_id(self, context, groups,"},{"line_number":119,"context_line":"                                              support_project_id):"},{"line_number":120,"context_line":"        group_rule_data_by_rule_group_id \u003d {}"},{"line_number":121,"context_line":"        # Pre-populate with the group information itself in case any of the"},{"line_number":122,"context_line":"        # rule group IDs are the in-scope groups."}],"source_content_type":"text/x-python","patch_set":25,"id":"3ca1f9c9_f6283f0c","line":119,"range":{"start_line":119,"start_character":46,"end_line":119,"end_character":53},"updated":"2021-06-30 10:25:23.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        return security_group"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _get_group_rule_data_by_rule_group_id(self, context, groups,"},{"line_number":119,"context_line":"                                              support_project_id):"},{"line_number":120,"context_line":"        group_rule_data_by_rule_group_id \u003d {}"},{"line_number":121,"context_line":"        # Pre-populate with the group information itself in case any of the"},{"line_number":122,"context_line":"        # rule group IDs are the in-scope groups."}],"source_content_type":"text/x-python","patch_set":25,"id":"7542d9a0_eda3d137","line":119,"range":{"start_line":119,"start_character":46,"end_line":119,"end_character":53},"in_reply_to":"3ca1f9c9_f6283f0c","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            group_rule_data_by_rule_group_id[group[\u0027id\u0027]] \u003d {"},{"line_number":125,"context_line":"                \u0027name\u0027: group.get(\u0027name\u0027)}"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            temp_key \u003d \u0027project_id\u0027 if support_project_id else \u0027tenant_id\u0027"},{"line_number":128,"context_line":"            group_rule_data_by_rule_group_id[group[\u0027id\u0027]]["},{"line_number":129,"context_line":"                temp_key] \u003d group.get(\u0027project_id\u0027)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"a4adfc9a_e7777d21","line":127,"range":{"start_line":127,"start_character":12,"end_line":127,"end_character":20},"updated":"2021-06-30 10:25:23.000000000","message":"Could we give this a more meaningful name? Perhaps:\n\n  project_key \u003d \u0027project_id\u0027 if use_project_id else \u0027tenant_id\u0027\n\n?","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            group_rule_data_by_rule_group_id[group[\u0027id\u0027]] \u003d {"},{"line_number":125,"context_line":"                \u0027name\u0027: group.get(\u0027name\u0027)}"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            temp_key \u003d \u0027project_id\u0027 if support_project_id else \u0027tenant_id\u0027"},{"line_number":128,"context_line":"            group_rule_data_by_rule_group_id[group[\u0027id\u0027]]["},{"line_number":129,"context_line":"                temp_key] \u003d group.get(\u0027project_id\u0027)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"3d080357_d5c14301","line":127,"range":{"start_line":127,"start_character":12,"end_line":127,"end_character":20},"in_reply_to":"a4adfc9a_e7777d21","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":216,"context_line":"            context, project\u003dproject_id, search_opts\u003dsearch_opts)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        limited_list \u003d common.limited(raw_groups, req)"},{"line_number":219,"context_line":"        result \u003d [self._format_security_group(context, group, False)"},{"line_number":220,"context_line":"                    for group in limited_list]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        return {\u0027security_groups\u0027:"}],"source_content_type":"text/x-python","patch_set":25,"id":"d677566c_29e74b89","line":219,"range":{"start_line":219,"start_character":62,"end_line":219,"end_character":67},"updated":"2021-06-30 10:25:23.000000000","message":"This isn\u0027t obvious. Could you use a keyword argument?\n\n  result \u003d [\n      self._format_security_group(context, group, use_project_id\u003dFalse)\n      for group in limited_list\n  ]","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cab40c746e13c4cae8ecfd1a871633382806cc1d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            context, project\u003dproject_id, search_opts\u003dsearch_opts)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        limited_list \u003d common.limited(raw_groups, req)"},{"line_number":219,"context_line":"        result \u003d [self._format_security_group(context, group, False)"},{"line_number":220,"context_line":"                    for group in limited_list]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        return {\u0027security_groups\u0027:"}],"source_content_type":"text/x-python","patch_set":25,"id":"81372768_82cefc8b","line":219,"range":{"start_line":219,"start_character":62,"end_line":219,"end_character":67},"in_reply_to":"255cae63_d450d117","updated":"2021-08-15 23:55:13.000000000","message":"I seem to have misunderstood the meaning of stephenfin, will done.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"50e61af0450cc01eb3f51ab676ce352f5cf21701","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            context, project\u003dproject_id, search_opts\u003dsearch_opts)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        limited_list \u003d common.limited(raw_groups, req)"},{"line_number":219,"context_line":"        result \u003d [self._format_security_group(context, group, False)"},{"line_number":220,"context_line":"                    for group in limited_list]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        return {\u0027security_groups\u0027:"}],"source_content_type":"text/x-python","patch_set":25,"id":"255cae63_d450d117","line":219,"range":{"start_line":219,"start_character":62,"end_line":219,"end_character":67},"in_reply_to":"c066b084_64d2da62","updated":"2021-08-11 16:11:21.000000000","message":"@Brin- I might not understood your point. but I think stephenfin saying to pass it using keyword so that we know for which param we are passing False value. but i am fine of doing it in follow up or so. passing arg as keyword arg would not require any change on function signature it is just calling way.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            context, project\u003dproject_id, search_opts\u003dsearch_opts)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        limited_list \u003d common.limited(raw_groups, req)"},{"line_number":219,"context_line":"        result \u003d [self._format_security_group(context, group, False)"},{"line_number":220,"context_line":"                    for group in limited_list]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        return {\u0027security_groups\u0027:"}],"source_content_type":"text/x-python","patch_set":25,"id":"c066b084_64d2da62","line":219,"range":{"start_line":219,"start_character":62,"end_line":219,"end_character":67},"in_reply_to":"d677566c_29e74b89","updated":"2021-08-06 04:09:28.000000000","message":"This is not the end parameter, if we enable it with use_project_id\u003dFalse, we also try to change the group_rule_data_by_rule_group_id\u003dNone parameter. IMO, we can keep this now, and I dont want to make use_project_id\u003dFalse as the default in _format_security_group(). If we want to change it that we can do it by a follow up.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        return {\u0027security_group\u0027: self._format_security_group(context,"},{"line_number":251,"context_line":"                                                              group_ref,"},{"line_number":252,"context_line":"                                                              False)}"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @wsgi.Controller.api_version(\"2.1\", MAX_PROXY_API_SUPPORT_VERSION)"},{"line_number":255,"context_line":"    @wsgi.expected_errors((400, 404))"}],"source_content_type":"text/x-python","patch_set":25,"id":"05fd1bb8_9423de6c","line":252,"range":{"start_line":252,"start_character":62,"end_line":252,"end_character":67},"updated":"2021-06-30 10:25:23.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cab40c746e13c4cae8ecfd1a871633382806cc1d","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        return {\u0027security_group\u0027: self._format_security_group(context,"},{"line_number":251,"context_line":"                                                              group_ref,"},{"line_number":252,"context_line":"                                                              False)}"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @wsgi.Controller.api_version(\"2.1\", MAX_PROXY_API_SUPPORT_VERSION)"},{"line_number":255,"context_line":"    @wsgi.expected_errors((400, 404))"}],"source_content_type":"text/x-python","patch_set":25,"id":"26d9e7df_58a0e383","line":252,"range":{"start_line":252,"start_character":62,"end_line":252,"end_character":67},"in_reply_to":"05fd1bb8_9423de6c","updated":"2021-08-15 23:55:13.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        return {\u0027security_group\u0027: self._format_security_group(context,"},{"line_number":286,"context_line":"                                                              group_ref,"},{"line_number":287,"context_line":"                                                              False)}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"class SecurityGroupRulesController(SecurityGroupControllerBase,"}],"source_content_type":"text/x-python","patch_set":25,"id":"68e1d852_dcf1a5ab","line":287,"range":{"start_line":287,"start_character":62,"end_line":287,"end_character":67},"updated":"2021-06-30 10:25:23.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cab40c746e13c4cae8ecfd1a871633382806cc1d","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        return {\u0027security_group\u0027: self._format_security_group(context,"},{"line_number":286,"context_line":"                                                              group_ref,"},{"line_number":287,"context_line":"                                                              False)}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"class SecurityGroupRulesController(SecurityGroupControllerBase,"}],"source_content_type":"text/x-python","patch_set":25,"id":"2b526aa1_0c5e09e8","line":287,"range":{"start_line":287,"start_character":62,"end_line":287,"end_character":67},"in_reply_to":"68e1d852_dcf1a5ab","updated":"2021-08-15 23:55:13.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        formatted_rule \u003d self._format_security_group_rule(context,"},{"line_number":353,"context_line":"                                                          security_group_rule,"},{"line_number":354,"context_line":"                                                          False,"},{"line_number":355,"context_line":"                                                          group_rule_data)"},{"line_number":356,"context_line":"        return {\"security_group_rule\": formatted_rule}"},{"line_number":357,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"437f2096_65baaab2","line":354,"range":{"start_line":354,"start_character":58,"end_line":354,"end_character":63},"updated":"2021-06-30 10:25:23.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cab40c746e13c4cae8ecfd1a871633382806cc1d","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        formatted_rule \u003d self._format_security_group_rule(context,"},{"line_number":353,"context_line":"                                                          security_group_rule,"},{"line_number":354,"context_line":"                                                          False,"},{"line_number":355,"context_line":"                                                          group_rule_data)"},{"line_number":356,"context_line":"        return {\"security_group_rule\": formatted_rule}"},{"line_number":357,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"52b90539_92aff359","line":354,"range":{"start_line":354,"start_character":58,"end_line":354,"end_character":63},"in_reply_to":"437f2096_65baaab2","updated":"2021-08-15 23:55:13.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"}],"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"746ae3e17687f5407a9d0a491497849b7df0aa76","unresolved":true,"context_lines":[{"line_number":671,"context_line":"            context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":672,"context_line":"            sg_instance_bindings \u003d ("},{"line_number":673,"context_line":"                security_group_api.get_instances_security_groups_bindings("},{"line_number":674,"context_line":"                    context, servers, False))"},{"line_number":675,"context_line":"            for server in servers:"},{"line_number":676,"context_line":"                groups \u003d sg_instance_bindings.get(server[\u0027id\u0027])"},{"line_number":677,"context_line":"                if groups:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3618077f_ff6a585e","line":674,"range":{"start_line":674,"start_character":37,"end_line":674,"end_character":44},"updated":"2021-01-22 22:22:53.000000000","message":"here also we need to get by project_id for \u003e\u003d2.90","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"16128a3c34b4b068359887bbca80692e7af48e84","unresolved":false,"context_lines":[{"line_number":671,"context_line":"            context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":672,"context_line":"            sg_instance_bindings \u003d ("},{"line_number":673,"context_line":"                security_group_api.get_instances_security_groups_bindings("},{"line_number":674,"context_line":"                    context, servers, False))"},{"line_number":675,"context_line":"            for server in servers:"},{"line_number":676,"context_line":"                groups \u003d sg_instance_bindings.get(server[\u0027id\u0027])"},{"line_number":677,"context_line":"                if groups:"}],"source_content_type":"text/x-python","patch_set":11,"id":"a79d200c_4f326192","line":674,"range":{"start_line":674,"start_character":37,"end_line":674,"end_character":44},"in_reply_to":"3618077f_ff6a585e","updated":"2021-01-26 09:42:18.000000000","message":"Done","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"462403e4529a5dc4289a98b82a74662b3408b066","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        # PUT and POST Rebuild response also."},{"line_number":670,"context_line":"        if not create_request:"},{"line_number":671,"context_line":"            context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":672,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.90\u0027):"},{"line_number":673,"context_line":"                sg_instance_bindings \u003d ("},{"line_number":674,"context_line":"                    security_group_api.get_instances_security_groups_bindings("},{"line_number":675,"context_line":"                        context, servers, True))"},{"line_number":676,"context_line":"            else:"},{"line_number":677,"context_line":"                sg_instance_bindings \u003d ("},{"line_number":678,"context_line":"                    security_group_api.get_instances_security_groups_bindings("},{"line_number":679,"context_line":"                        context, servers, False))"},{"line_number":680,"context_line":"            for server in servers:"},{"line_number":681,"context_line":"                groups \u003d sg_instance_bindings.get(server[\u0027id\u0027])"},{"line_number":682,"context_line":"                if groups:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ec5bf036_2d224a5a","line":679,"range":{"start_line":672,"start_character":0,"end_line":679,"end_character":49},"updated":"2021-01-27 23:35:21.000000000","message":"we do not need change as commented in https://review.opendev.org/c/openstack/nova/+/766726/11/nova/network/security_group_api.py#279","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"965aa59912c577fcb5927eb8b58938dd32817c0d","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        # PUT and POST Rebuild response also."},{"line_number":670,"context_line":"        if not create_request:"},{"line_number":671,"context_line":"            context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":672,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.90\u0027):"},{"line_number":673,"context_line":"                sg_instance_bindings \u003d ("},{"line_number":674,"context_line":"                    security_group_api.get_instances_security_groups_bindings("},{"line_number":675,"context_line":"                        context, servers, True))"},{"line_number":676,"context_line":"            else:"},{"line_number":677,"context_line":"                sg_instance_bindings \u003d ("},{"line_number":678,"context_line":"                    security_group_api.get_instances_security_groups_bindings("},{"line_number":679,"context_line":"                        context, servers, False))"},{"line_number":680,"context_line":"            for server in servers:"},{"line_number":681,"context_line":"                groups \u003d sg_instance_bindings.get(server[\u0027id\u0027])"},{"line_number":682,"context_line":"                if groups:"}],"source_content_type":"text/x-python","patch_set":13,"id":"cfa680d5_e3f97a64","line":679,"range":{"start_line":672,"start_character":0,"end_line":679,"end_character":49},"in_reply_to":"ec5bf036_2d224a5a","updated":"2021-01-28 00:43:00.000000000","message":"yeah, we need to be keep this api donot change, will back.","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"}],"nova/network/security_group_api.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"746ae3e17687f5407a9d0a491497849b7df0aa76","unresolved":true,"context_lines":[{"line_number":274,"context_line":"    nova_group[\u0027description\u0027] \u003d security_group[\u0027description\u0027]"},{"line_number":275,"context_line":"    nova_group[\u0027name\u0027] \u003d security_group[\u0027name\u0027]"},{"line_number":276,"context_line":"    if support_project_id:"},{"line_number":277,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027project_id\u0027]"},{"line_number":278,"context_line":"    else:"},{"line_number":279,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027tenant_id\u0027]"},{"line_number":280,"context_line":"    nova_group[\u0027rules\u0027] \u003d []"},{"line_number":281,"context_line":"    for rule in security_group.get(\u0027security_group_rules\u0027, []):"},{"line_number":282,"context_line":"        if rule[\u0027direction\u0027] \u003d\u003d \u0027ingress\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"8f8d537d_be454b46","line":279,"range":{"start_line":277,"start_character":34,"end_line":279,"end_character":62},"updated":"2021-01-22 22:22:53.000000000","message":"I do not think security_group[\u0027project_id\u0027] and security_group[\u0027tenant_id\u0027] are two different things so we do not need any change in this file right?","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"462403e4529a5dc4289a98b82a74662b3408b066","unresolved":true,"context_lines":[{"line_number":274,"context_line":"    nova_group[\u0027description\u0027] \u003d security_group[\u0027description\u0027]"},{"line_number":275,"context_line":"    nova_group[\u0027name\u0027] \u003d security_group[\u0027name\u0027]"},{"line_number":276,"context_line":"    if support_project_id:"},{"line_number":277,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027project_id\u0027]"},{"line_number":278,"context_line":"    else:"},{"line_number":279,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027tenant_id\u0027]"},{"line_number":280,"context_line":"    nova_group[\u0027rules\u0027] \u003d []"},{"line_number":281,"context_line":"    for rule in security_group.get(\u0027security_group_rules\u0027, []):"},{"line_number":282,"context_line":"        if rule[\u0027direction\u0027] \u003d\u003d \u0027ingress\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"d1dd3194_36e0f8e7","line":279,"range":{"start_line":277,"start_character":34,"end_line":279,"end_character":62},"in_reply_to":"5a9566d5_396c5d0e","updated":"2021-01-27 23:35:21.000000000","message":"this sec gp is fetched from neutron (in _get_secgroups_from_port_list L592) and as you see in api-ref both are same\n\nhttps://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003dlist-security-groups-detail","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"16128a3c34b4b068359887bbca80692e7af48e84","unresolved":true,"context_lines":[{"line_number":274,"context_line":"    nova_group[\u0027description\u0027] \u003d security_group[\u0027description\u0027]"},{"line_number":275,"context_line":"    nova_group[\u0027name\u0027] \u003d security_group[\u0027name\u0027]"},{"line_number":276,"context_line":"    if support_project_id:"},{"line_number":277,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027project_id\u0027]"},{"line_number":278,"context_line":"    else:"},{"line_number":279,"context_line":"        nova_group[\u0027project_id\u0027] \u003d security_group[\u0027tenant_id\u0027]"},{"line_number":280,"context_line":"    nova_group[\u0027rules\u0027] \u003d []"},{"line_number":281,"context_line":"    for rule in security_group.get(\u0027security_group_rules\u0027, []):"},{"line_number":282,"context_line":"        if rule[\u0027direction\u0027] \u003d\u003d \u0027ingress\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a9566d5_396c5d0e","line":279,"range":{"start_line":277,"start_character":34,"end_line":279,"end_character":62},"in_reply_to":"8f8d537d_be454b46","updated":"2021-01-26 09:42:18.000000000","message":"as we changed security_group list return value, we donnot know whether tenant_id or project_id in security group, so we need check the microversion.","commit_id":"12da66620158a273b5e87c817ba684359fac0ec8"}],"nova/tests/functional/api_sample_tests/test_security_groups.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def fake_get_instances_security_groups_bindings(context, servers,"},{"line_number":31,"context_line":"                                                support_project_id,"},{"line_number":32,"context_line":"                                                detailed\u003dFalse):"},{"line_number":33,"context_line":"    result \u003d {}"},{"line_number":34,"context_line":"    for s in servers:"}],"source_content_type":"text/x-python","patch_set":25,"id":"88f8c916_a40a6337","line":31,"range":{"start_line":31,"start_character":43,"end_line":31,"end_character":67},"updated":"2021-06-15 23:41:05.000000000","message":"this is not needed anymore as you are not changing get_instances_security_groups_bindings method now.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def fake_get_instances_security_groups_bindings(context, servers,"},{"line_number":31,"context_line":"                                                support_project_id,"},{"line_number":32,"context_line":"                                                detailed\u003dFalse):"},{"line_number":33,"context_line":"    result \u003d {}"},{"line_number":34,"context_line":"    for s in servers:"}],"source_content_type":"text/x-python","patch_set":25,"id":"b5c22f51_ac714611","line":31,"range":{"start_line":31,"start_character":43,"end_line":31,"end_character":67},"in_reply_to":"88f8c916_a40a6337","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def fake_get_instance_security_groups(context, instance_uuid,"},{"line_number":52,"context_line":"                                      support_project_id,"},{"line_number":53,"context_line":"                                      detailed\u003dFalse):"},{"line_number":54,"context_line":"    return [fake_get()]"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5a789cd4_4ec70cd6","line":52,"range":{"start_line":52,"start_character":36,"end_line":52,"end_character":57},"updated":"2021-06-15 23:41:05.000000000","message":"ditto","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def fake_get_instance_security_groups(context, instance_uuid,"},{"line_number":52,"context_line":"                                      support_project_id,"},{"line_number":53,"context_line":"                                      detailed\u003dFalse):"},{"line_number":54,"context_line":"    return [fake_get()]"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"4429de2b_ceb3dc6e","line":52,"range":{"start_line":52,"start_character":36,"end_line":52,"end_character":57},"in_reply_to":"5a789cd4_4ec70cd6","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"}],"nova/tests/unit/api/openstack/compute/test_security_groups.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"462403e4529a5dc4289a98b82a74662b3408b066","unresolved":true,"context_lines":[{"line_number":1047,"context_line":"        format_sg_rule \u003d self.server_controller._format_security_group_rule("},{"line_number":1048,"context_line":"            context_maker.get_admin_context(),"},{"line_number":1049,"context_line":"            self.sg_rules[\u0027security_group_rules\u0027][0],"},{"line_number":1050,"context_line":"            support_project_id\u003dTrue)"},{"line_number":1051,"context_line":"        self.assertIn(\u0027project_id\u0027, format_sg_rule[\u0027group\u0027])"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def test__get_group_rule_data_by_rule_group_id_old_version(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7258f445_e77a21fd","line":1050,"range":{"start_line":1050,"start_character":35,"end_line":1050,"end_character":36},"updated":"2021-01-27 23:35:21.000000000","message":"let\u0027s assert for tenatn-id also\n\n        self.assertNotIn(\u0027tenant_id\u0027, format_sg_rule[\u0027group\u0027])","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"1897d51560be439ab5bc90c21fbcb10cf637184a","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"        format_sg_rule \u003d self.server_controller._format_security_group_rule("},{"line_number":1048,"context_line":"            context_maker.get_admin_context(),"},{"line_number":1049,"context_line":"            self.sg_rules[\u0027security_group_rules\u0027][0],"},{"line_number":1050,"context_line":"            support_project_id\u003dTrue)"},{"line_number":1051,"context_line":"        self.assertIn(\u0027project_id\u0027, format_sg_rule[\u0027group\u0027])"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def test__get_group_rule_data_by_rule_group_id_old_version(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff17b0a0_1c50be28","line":1050,"range":{"start_line":1050,"start_character":35,"end_line":1050,"end_character":36},"in_reply_to":"7258f445_e77a21fd","updated":"2021-03-08 01:38:55.000000000","message":"Done","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"462403e4529a5dc4289a98b82a74662b3408b066","unresolved":true,"context_lines":[{"line_number":1063,"context_line":"        group \u003d self.server_controller._get_group_rule_data_by_rule_group_id("},{"line_number":1064,"context_line":"            context_maker.get_admin_context(),"},{"line_number":1065,"context_line":"            [self.test_sg],"},{"line_number":1066,"context_line":"            support_project_id\u003dTrue)"},{"line_number":1067,"context_line":"        self.assertIn(\u0027project_id\u0027,"},{"line_number":1068,"context_line":"            group[self.sg_rules[\u0027security_group_rules\u0027][0][\u0027group_id\u0027]])"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ec317639_fe675a0d","line":1066,"range":{"start_line":1066,"start_character":35,"end_line":1066,"end_character":36},"updated":"2021-01-27 23:35:21.000000000","message":"ditto let\u0027s assert for tenant_id also","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"1897d51560be439ab5bc90c21fbcb10cf637184a","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"        group \u003d self.server_controller._get_group_rule_data_by_rule_group_id("},{"line_number":1064,"context_line":"            context_maker.get_admin_context(),"},{"line_number":1065,"context_line":"            [self.test_sg],"},{"line_number":1066,"context_line":"            support_project_id\u003dTrue)"},{"line_number":1067,"context_line":"        self.assertIn(\u0027project_id\u0027,"},{"line_number":1068,"context_line":"            group[self.sg_rules[\u0027security_group_rules\u0027][0][\u0027group_id\u0027]])"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"f9223b44_6daf2efb","line":1066,"range":{"start_line":1066,"start_character":35,"end_line":1066,"end_character":36},"in_reply_to":"ec317639_fe675a0d","updated":"2021-03-08 01:38:55.000000000","message":"Done","commit_id":"12b29112c20a28e76aeffcb3b38fd298805bb118"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"985fe3eeee8c121a1e596ae10c0cfda0bee4db16","unresolved":true,"context_lines":[{"line_number":1002,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1003,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1004,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1005,"context_line":"        expected \u003d [{"},{"line_number":1006,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1007,"context_line":"            \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1008,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1009,"context_line":"            \u0027name\u0027: \u0027test\u0027,"},{"line_number":1010,"context_line":"            \u0027description\u0027: \u0027test-description\u0027}]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"        index_sg \u003d self.server_controller.index(req, UUID_SERVER)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, index_sg[\u0027security_groups\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"ecec7061_4ce8f5b4","line":1010,"range":{"start_line":1005,"start_character":0,"end_line":1010,"end_character":47},"updated":"2021-02-25 00:44:24.000000000","message":"let\u0027s add \u0027groups\u0027 data also here which also has the tenant_id and project_id change.","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4ebb982ba0f5d8ca64fa21c6392688c3938428bd","unresolved":true,"context_lines":[{"line_number":1002,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1003,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1004,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1005,"context_line":"        expected \u003d [{"},{"line_number":1006,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1007,"context_line":"            \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1008,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1009,"context_line":"            \u0027name\u0027: \u0027test\u0027,"},{"line_number":1010,"context_line":"            \u0027description\u0027: \u0027test-description\u0027}]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"        index_sg \u003d self.server_controller.index(req, UUID_SERVER)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, index_sg[\u0027security_groups\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"938dde77_6a792f8d","line":1010,"range":{"start_line":1005,"start_character":0,"end_line":1010,"end_character":47},"in_reply_to":"1519b0cb_27a8a953","updated":"2021-03-02 13:48:29.000000000","message":"I am talking about this where you are changing the tenant-id to project-id https://review.opendev.org/c/openstack/nova/+/766726/17/nova/api/openstack/compute/security_groups.py#64","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"1897d51560be439ab5bc90c21fbcb10cf637184a","unresolved":true,"context_lines":[{"line_number":1002,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1003,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1004,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1005,"context_line":"        expected \u003d [{"},{"line_number":1006,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1007,"context_line":"            \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1008,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1009,"context_line":"            \u0027name\u0027: \u0027test\u0027,"},{"line_number":1010,"context_line":"            \u0027description\u0027: \u0027test-description\u0027}]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"        index_sg \u003d self.server_controller.index(req, UUID_SERVER)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, index_sg[\u0027security_groups\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"637246eb_5353c0c5","line":1010,"range":{"start_line":1005,"start_character":0,"end_line":1010,"end_character":47},"in_reply_to":"938dde77_6a792f8d","updated":"2021-03-08 01:38:55.000000000","message":"gmann, do you means the group data in security group rule? maybe the Line1037-1052 is what you want. we seperate the test for security group and security group rule.","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3ae72b30767da39cb878801b1975e398f60104fe","unresolved":true,"context_lines":[{"line_number":1002,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1003,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1004,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1005,"context_line":"        expected \u003d [{"},{"line_number":1006,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1007,"context_line":"            \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1008,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1009,"context_line":"            \u0027name\u0027: \u0027test\u0027,"},{"line_number":1010,"context_line":"            \u0027description\u0027: \u0027test-description\u0027}]"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"        index_sg \u003d self.server_controller.index(req, UUID_SERVER)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, index_sg[\u0027security_groups\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1519b0cb_27a8a953","line":1010,"range":{"start_line":1005,"start_character":0,"end_line":1010,"end_character":47},"in_reply_to":"ecec7061_4ce8f5b4","updated":"2021-03-01 07:51:32.000000000","message":"Sorry, I dont understand what do your point of *\u0027groups\u0027 data*.","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"985fe3eeee8c121a1e596ae10c0cfda0bee4db16","unresolved":true,"context_lines":[{"line_number":1023,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1024,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1025,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1026,"context_line":"        expected \u003d [{"},{"line_number":1027,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1028,"context_line":"            \u0027project_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1029,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1030,"context_line":"            \u0027name\u0027: \u0027test\u0027,"},{"line_number":1031,"context_line":"            \u0027description\u0027: \u0027test-description\u0027}]"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"        index_sg \u003d self.server_controller.index(self.req, UUID_SERVER)"},{"line_number":1034,"context_line":"        self.assertEqual(expected, index_sg[\u0027security_groups\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"7722ce2a_0b60ab3e","line":1031,"range":{"start_line":1026,"start_character":0,"end_line":1031,"end_character":47},"updated":"2021-02-25 00:44:24.000000000","message":"ditto","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":938,"context_line":"                          device_id\u003dFAKE_UUID1)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"class TestSecurityGroupsV289(TestSecurityGroups):"},{"line_number":942,"context_line":"    \"\"\"With microversion 2.89, replaced \u0027project_id\u0027 with \u0027tenant_id\u0027 in the"},{"line_number":943,"context_line":"    List Security Groups By Server API response body."},{"line_number":944,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"4a1e1448_d05b279e","line":941,"updated":"2021-06-30 10:25:23.000000000","message":"There doesn\u0027t seem to be a good reason to split this out. From what I can tell, the only big difference is the microversion used in the request (self.req). Rather than separating these tests out, couldn\u0027t you just change the request used like you do in \u0027test_get_security_group_with_tenant_id_for_old_version\u0027 (i.e. create a new object rather than using \u0027self.req\u0027)?","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":946,"context_line":"    server_secgrp_ctl_cls \u003d secgroups_v21.ServerSecurityGroupController"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    def setUp(self):"},{"line_number":949,"context_line":"        super(TestSecurityGroupsV289, self).setUp()"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        self.controller \u003d self.secgrp_ctl_cls()"},{"line_number":952,"context_line":"        self.server_controller \u003d self.server_secgrp_ctl_cls()"}],"source_content_type":"text/x-python","patch_set":25,"id":"b43006d8_56b57897","line":949,"range":{"start_line":949,"start_character":14,"end_line":949,"end_character":42},"updated":"2021-06-30 10:25:23.000000000","message":"nit: you don\u0027t need this in Python 3","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":946,"context_line":"    server_secgrp_ctl_cls \u003d secgroups_v21.ServerSecurityGroupController"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    def setUp(self):"},{"line_number":949,"context_line":"        super(TestSecurityGroupsV289, self).setUp()"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        self.controller \u003d self.secgrp_ctl_cls()"},{"line_number":952,"context_line":"        self.server_controller \u003d self.server_secgrp_ctl_cls()"}],"source_content_type":"text/x-python","patch_set":25,"id":"e65687b9_ff3cd495","line":949,"range":{"start_line":949,"start_character":14,"end_line":949,"end_character":42},"in_reply_to":"b43006d8_56b57897","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":952,"context_line":"        self.server_controller \u003d self.server_secgrp_ctl_cls()"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"        self.req \u003d fakes.HTTPRequest.blank("},{"line_number":955,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":956,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.89\u0027)"},{"line_number":957,"context_line":"        project_id \u003d self.req.environ[\u0027nova.context\u0027].project_id"},{"line_number":958,"context_line":"        self.stub_out(\u0027nova.compute.api.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"a1c4ed15_7a5d4f87","line":955,"range":{"start_line":955,"start_character":12,"end_line":955,"end_character":16},"updated":"2021-06-30 10:25:23.000000000","message":"nit","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        self.server_controller \u003d self.server_secgrp_ctl_cls()"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"        self.req \u003d fakes.HTTPRequest.blank("},{"line_number":955,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":956,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.89\u0027)"},{"line_number":957,"context_line":"        project_id \u003d self.req.environ[\u0027nova.context\u0027].project_id"},{"line_number":958,"context_line":"        self.stub_out(\u0027nova.compute.api.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ab60af37_1118a2df","line":955,"range":{"start_line":955,"start_character":12,"end_line":955,"end_character":16},"in_reply_to":"a1c4ed15_7a5d4f87","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":955,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":956,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.89\u0027)"},{"line_number":957,"context_line":"        project_id \u003d self.req.environ[\u0027nova.context\u0027].project_id"},{"line_number":958,"context_line":"        self.stub_out(\u0027nova.compute.api.API.get\u0027,"},{"line_number":959,"context_line":"                      fakes.fake_compute_get("},{"line_number":960,"context_line":"                          **{\u0027power_state\u0027: 0x01,"},{"line_number":961,"context_line":"                             \u0027host\u0027: \"localhost\","}],"source_content_type":"text/x-python","patch_set":25,"id":"c6f3f8a5_b17b8812","line":958,"updated":"2021-06-30 10:25:23.000000000","message":"nit: could you drag this down?\n\n  self.stub_out(\n      \u0027nova.compute.api.API.get\u0027,\n      ...)","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":955,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":956,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.89\u0027)"},{"line_number":957,"context_line":"        project_id \u003d self.req.environ[\u0027nova.context\u0027].project_id"},{"line_number":958,"context_line":"        self.stub_out(\u0027nova.compute.api.API.get\u0027,"},{"line_number":959,"context_line":"                      fakes.fake_compute_get("},{"line_number":960,"context_line":"                          **{\u0027power_state\u0027: 0x01,"},{"line_number":961,"context_line":"                             \u0027host\u0027: \"localhost\","}],"source_content_type":"text/x-python","patch_set":25,"id":"2832535f_d1c46c35","line":958,"in_reply_to":"c6f3f8a5_b17b8812","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":963,"context_line":"                             \u0027name\u0027: \u0027asdf\u0027,"},{"line_number":964,"context_line":"                             \u0027project_id\u0027: project_id}))"},{"line_number":965,"context_line":"        self.original_client \u003d neutron_api.get_client"},{"line_number":966,"context_line":"        neutron_api.get_client \u003d get_client"},{"line_number":967,"context_line":""},{"line_number":968,"context_line":"        self.test_sg \u003d self._create_security_group("},{"line_number":969,"context_line":"            name\u003d\u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bc0c797a_de2c8137","line":966,"updated":"2021-06-30 10:25:23.000000000","message":"Why are we doing this? Can\u0027t we simply mock this rather than monkey patching it? Alternatively, you could use the NeutronFixture which will provide a lot (though maybe not all) of this for you.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3e037d01ca61d7e0a6ab258bc741045ca0e91af","unresolved":true,"context_lines":[{"line_number":963,"context_line":"                             \u0027name\u0027: \u0027asdf\u0027,"},{"line_number":964,"context_line":"                             \u0027project_id\u0027: project_id}))"},{"line_number":965,"context_line":"        self.original_client \u003d neutron_api.get_client"},{"line_number":966,"context_line":"        neutron_api.get_client \u003d get_client"},{"line_number":967,"context_line":""},{"line_number":968,"context_line":"        self.test_sg \u003d self._create_security_group("},{"line_number":969,"context_line":"            name\u003d\u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"b890c3db_14351d8f","line":966,"in_reply_to":"bc0c797a_de2c8137","updated":"2022-02-14 18:20:11.000000000","message":"+1","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":973,"context_line":"            network_id\u003dself.net[\u0027network\u0027][\u0027id\u0027],"},{"line_number":974,"context_line":"            security_groups\u003d[self.test_sg[\u0027id\u0027]],"},{"line_number":975,"context_line":"            device_id\u003dUUID_SERVER)"},{"line_number":976,"context_line":"        body \u003d {\u0027security_group_rules\u0027: [{\u0027remote_group_id\u0027: None,"},{"line_number":977,"context_line":"                \u0027direction\u0027: \u0027ingress\u0027, \u0027protocol\u0027: \u0027tcp\u0027,"},{"line_number":978,"context_line":"                \u0027ethertype\u0027: \u0027IPv4\u0027, \u0027parent_group_id\u0027: \u00271\u0027,"},{"line_number":979,"context_line":"                \u0027port_range_max\u0027: 1025, \u0027port_range_min\u0027: 1025,"}],"source_content_type":"text/x-python","patch_set":25,"id":"28c170bc_49a4c8f4","line":976,"range":{"start_line":976,"start_character":15,"end_line":976,"end_character":39},"updated":"2021-06-30 10:25:23.000000000","message":"nit: could you drop this down a line?\n\n  body \u003d {\n      \u0027security_group_rules\u0027: ...\n      ...}","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":991,"context_line":"    @mock.patch(\u0027nova.network.security_group_api.\u0027"},{"line_number":992,"context_line":"                \u0027get_instances_security_groups_bindings\u0027)"},{"line_number":993,"context_line":"    def test_get_security_group_with_tenant_id_for_old_version("},{"line_number":994,"context_line":"            self, neutron_sg_bind_mock):"},{"line_number":995,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":996,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":997,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.88\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7bdc49e6_13323923","line":994,"updated":"2021-06-30 10:25:23.000000000","message":"nit:\n\n  def test_get_security_group_with_tenant_id_for_old_version(\n      self, neutron_sg_bind_mock,\n  ):","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":993,"context_line":"    def test_get_security_group_with_tenant_id_for_old_version("},{"line_number":994,"context_line":"            self, neutron_sg_bind_mock):"},{"line_number":995,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":996,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":997,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.88\u0027)"},{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"39fea84a_7429d889","line":996,"range":{"start_line":996,"start_character":12,"end_line":996,"end_character":16},"updated":"2021-06-30 10:25:23.000000000","message":"nit","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":993,"context_line":"    def test_get_security_group_with_tenant_id_for_old_version("},{"line_number":994,"context_line":"            self, neutron_sg_bind_mock):"},{"line_number":995,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":996,"context_line":"                \u0027/v2/%s/servers/%s/os-security-groups\u0027"},{"line_number":997,"context_line":"                % (fakes.FAKE_PROJECT_ID, UUID_SERVER), version\u003d\u00272.88\u0027)"},{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"6a0157e2_717ec8f4","line":996,"range":{"start_line":996,"start_character":12,"end_line":996,"end_character":16},"in_reply_to":"39fea84a_7429d889","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"b3b21589_182bf33d","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"updated":"2021-06-15 23:41:05.000000000","message":"let\u0027s add the value in rules data in [\u0027rules\u0027][\u0027group\u0027] dict. so that we can verify that tenant-id is still returned in \u0027group\u0027 data for old microversion.\n\n\u0027rules\u0027: [{\u0027group\u0027: {\u0027project_id\u0027}}]","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"87076999a344171e0226e7ac8fb3e4fd53ac2686","unresolved":false,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"a2757c33_9bd1f22c","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"in_reply_to":"00eb199d_9b0cda17","updated":"2021-08-21 07:25:50.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"50e61af0450cc01eb3f51ab676ce352f5cf21701","unresolved":true,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a69d4a4_c1ebbbbc","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"in_reply_to":"283c4d0b_9b5f0826","updated":"2021-08-11 16:11:21.000000000","message":"yeah, api-ref also missing those.\n\nhere is where you are changing the tenant_id to project_id in rule group data https://review.opendev.org/c/openstack/nova/+/766726/25..26/nova/api/openstack/compute/security_groups.py#133\n\nI mean to test those also.","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":31412,"name":"Wenping Song","email":"songwenping@inspur.com","username":"songwenping"},"change_message_id":"86bc8138f8056ec9d6711e0e2818f2fc04d4025b","unresolved":true,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"a6b7ba0d_f1bbf951","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"in_reply_to":"7a69d4a4_c1ebbbbc","updated":"2021-08-13 10:12:09.000000000","message":"gammn, there are not tenant_id or project_id in rules, the [1] checked whether the rule\u0027s group_id in sg, we only changed the key in sg[group_id] at [2] and we have checked tenant_id or project_id in index_sg.\n[1] https://review.opendev.org/c/openstack/nova/+/766726/25..26/nova/api/openstack/compute/security_groups.py#139\n[2] https://review.opendev.org/c/openstack/nova/+/766726/25..26/nova/api/openstack/compute/security_groups.py#133","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"82616a0ed0d2d0ce4cfca5f28b240a53a49028ad","unresolved":true,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"00eb199d_9b0cda17","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"in_reply_to":"a6b7ba0d_f1bbf951","updated":"2021-08-17 19:28:12.000000000","message":"at [2] the key is changed from \u0027tenant_id\u0027 to \u0027project_id\u0027. previously group data se to have \u0027name\u0027 and \u0027tenant_id\u0027 which is not changed to \u0027name\u0027 and \u0027project_id\u0027. here-\n\nhttps://review.opendev.org/c/openstack/nova/+/766726/26/nova/api/openstack/compute/security_groups.py#131","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5ad36b52af1241f9c04623c2f4ede125d9881add","unresolved":true,"context_lines":[{"line_number":998,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":999,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1000,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1001,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"283c4d0b_9b5f0826","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":38},"in_reply_to":"b3b21589_182bf33d","updated":"2021-08-06 06:24:31.000000000","message":"I am not sure what\u0027s your concern, the rules of the sg [1], it seems not contain the group, and we have compared the project_id and tenant_id with line1003(request value) and Line1006(expected value), so I think it\u0027s ok to conver this scenario.\n\n[1]https://docs.openstack.org/api-ref/network/v2/index.html?expanded\u003dlist-security-group-rules-detail,create-security-group-rule-detail,show-security-group-rule-detail,list-security-groups-detail#list-security-groups","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":1002,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1003,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1004,"context_line":"        expected \u003d [{"},{"line_number":1005,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1006,"context_line":"            \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1007,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1008,"context_line":"            \u0027name\u0027: \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"163249f3_a53f653a","line":1005,"range":{"start_line":1005,"start_character":21,"end_line":1005,"end_character":24},"updated":"2021-06-15 23:41:05.000000000","message":"and here you will be able to verify it \n\n\u0027rules\u0027: [{\u0027group\u0027: {\u0027tenant_id\u0027}}]","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":1019,"context_line":"        neutron_sg_bind_mock.return_value \u003d {"},{"line_number":1020,"context_line":"            UUID_SERVER: [{\u0027name\u0027: self.test_sg[\u0027name\u0027],"},{"line_number":1021,"context_line":"                          \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1022,"context_line":"                          \u0027rules\u0027: [],"},{"line_number":1023,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1024,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1025,"context_line":"        expected \u003d [{"}],"source_content_type":"text/x-python","patch_set":25,"id":"671e6a4f_42e0cac2","line":1022,"range":{"start_line":1022,"start_character":26,"end_line":1022,"end_character":38},"updated":"2021-06-15 23:41:05.000000000","message":"ditto \n\n\u0027rules\u0027: [{\u0027group\u0027: {\u0027project_id\u0027}}]","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ed7f2613e96db7a7ebdd3903ce28ba821f23b8d9","unresolved":true,"context_lines":[{"line_number":1023,"context_line":"                          \u0027description\u0027: \u0027test-description\u0027,"},{"line_number":1024,"context_line":"                          \u0027project_id\u0027: fakes.FAKE_PROJECT_ID}]}"},{"line_number":1025,"context_line":"        expected \u003d [{"},{"line_number":1026,"context_line":"            \u0027rules\u0027: [],"},{"line_number":1027,"context_line":"            \u0027project_id\u0027: fakes.FAKE_PROJECT_ID,"},{"line_number":1028,"context_line":"            \u0027id\u0027: self.test_sg[\u0027id\u0027],"},{"line_number":1029,"context_line":"            \u0027name\u0027: \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"99ae8eb8_b315be27","line":1026,"range":{"start_line":1026,"start_character":12,"end_line":1026,"end_character":24},"updated":"2021-06-15 23:41:05.000000000","message":"here we should see the project in expected value\n\n\u0027rules\u0027: [{\u0027group\u0027: {\u0027project_id\u0027}}]","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3e037d01ca61d7e0a6ab258bc741045ca0e91af","unresolved":true,"context_lines":[{"line_number":1022,"context_line":"                {"},{"line_number":1023,"context_line":"                 \u0027group\u0027: {"},{"line_number":1024,"context_line":"                     \u0027name\u0027: \u0027test\u0027,"},{"line_number":1025,"context_line":"                     \u0027tenant_id\u0027: fakes.FAKE_PROJECT_ID},"},{"line_number":1026,"context_line":"                 \u0027id\u0027: \u00273ad690c8-ddbb-446f-9d9c-d8023584954b\u0027,"},{"line_number":1027,"context_line":"                 \u0027parent_group_id\u0027: None,"},{"line_number":1028,"context_line":"                 \u0027ip_protocol\u0027: None,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7984d5ae_405d71ca","line":1025,"range":{"start_line":1025,"start_character":22,"end_line":1025,"end_character":31},"updated":"2022-02-14 18:20:11.000000000","message":"+1, thanks for adding it.","commit_id":"229927dea03fdffe79969b5d1b1acdf420593876"}],"nova/tests/unit/api/openstack/fakes.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"985fe3eeee8c121a1e596ae10c0cfda0bee4db16","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        return instances_security_group_bindings"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_instance_security_groups("},{"line_number":231,"context_line":"            context, instance, support_project_id\u003dFalse, detailed\u003dFalse):"},{"line_number":232,"context_line":"        return security_groups if security_groups is not None else []"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    test.stub_out("}],"source_content_type":"text/x-python","patch_set":17,"id":"aba07ed7_091f56a3","line":231,"range":{"start_line":231,"start_character":29,"end_line":231,"end_character":57},"updated":"2021-02-25 00:44:24.000000000","message":"I do think we need this change in latest PS. this seem left over from previous PS where we modified this method signature.","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3ae72b30767da39cb878801b1975e398f60104fe","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        return instances_security_group_bindings"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_instance_security_groups("},{"line_number":231,"context_line":"            context, instance, support_project_id\u003dFalse, detailed\u003dFalse):"},{"line_number":232,"context_line":"        return security_groups if security_groups is not None else []"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    test.stub_out("}],"source_content_type":"text/x-python","patch_set":17,"id":"337eca02_25b32b2d","line":231,"range":{"start_line":231,"start_character":29,"end_line":231,"end_character":57},"in_reply_to":"aba07ed7_091f56a3","updated":"2021-03-01 07:51:32.000000000","message":"Done","commit_id":"6234d5c2e348e3bad33af8a7f2d607512155461d"}],"releasenotes/notes/bp-remove-tenant-id-dd0193d587a00d30.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c9603ce103859ae1cd3a0fd5dc5e739ae134c642","unresolved":true,"context_lines":[{"line_number":13,"context_line":"      - ``GET /servers/{server_id}``."},{"line_number":14,"context_line":"      - ``PUT /servers/{server_id}``"},{"line_number":15,"context_line":"      - ``POST /servers/{server_id}/action (Rebuild Server (rebuild Action))``"},{"line_number":16,"context_line":"      - ``GET /servers/{server_id}/os-security-groups (List Security Groups By Server)``"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"3e33f955_87180ab6","line":16,"range":{"start_line":16,"start_character":53,"end_line":16,"end_character":86},"updated":"2021-06-30 10:25:23.000000000","message":"drop (this only makes sense above because it\u0027s an action)","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dfc3dfb0de1a575aaafd75bd55b31c36bf1b71eb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      - ``GET /servers/{server_id}``."},{"line_number":14,"context_line":"      - ``PUT /servers/{server_id}``"},{"line_number":15,"context_line":"      - ``POST /servers/{server_id}/action (Rebuild Server (rebuild Action))``"},{"line_number":16,"context_line":"      - ``GET /servers/{server_id}/os-security-groups (List Security Groups By Server)``"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"75730777_bfb8df8e","line":16,"range":{"start_line":16,"start_character":53,"end_line":16,"end_character":86},"in_reply_to":"3e33f955_87180ab6","updated":"2021-08-06 04:09:28.000000000","message":"Done","commit_id":"9d959e6f1ed1536171564c9059af35849374898c"}]}
