)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"24cf74c062901221a79d7184c2eb0db2252133ed","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add project-id when list server-groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, command \"nova server-group-list\" and"},{"line_number":10,"context_line":"\"nova server-group-show\" doesn\u0027t return groups\u0027"},{"line_number":11,"context_line":"project id and user id information. It is really"},{"line_number":12,"context_line":"hard to identify which group belong to which"},{"line_number":13,"context_line":"project/user when admin user use this command"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"1a26ad4f_3e89bbc9","line":10,"updated":"2015-11-02 08:03:52.000000000","message":"I guess here you means nova server-group-get\n\n$ nova |grep server-group\n    server-group-create         Create a new server group with the specified\n    server-group-delete         Delete specific server group(s).\n    server-group-get            Get a specific server group.\n    server-group-list           Print a list of all server groups.","commit_id":"5210cd58e1125bd4747381fc4de8c550c162a97f"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"a912c9e57429e265ff5c269ec4536276be74477c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add project-id when list server-groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, command \"nova server-group-list\" and"},{"line_number":10,"context_line":"\"nova server-group-show\" doesn\u0027t return groups\u0027"},{"line_number":11,"context_line":"project id and user id information. It is really"},{"line_number":12,"context_line":"hard to identify which group belong to which"},{"line_number":13,"context_line":"project/user when admin user use this command"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"1a26ad4f_24f8ce7a","line":10,"in_reply_to":"1a26ad4f_3e89bbc9","updated":"2015-11-02 09:07:19.000000000","message":"Done","commit_id":"5210cd58e1125bd4747381fc4de8c550c162a97f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"58c82de0e71b9d1885fc43bdeb5123d2b5015fde","unresolved":false,"context_lines":[{"line_number":13,"context_line":"project/user when admin user use this command"},{"line_number":14,"context_line":"with option \"--all-projects\"."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch add project-id and user-id to the list."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact: This adds API microversion"},{"line_number":19,"context_line":"APIImpact: Project id information will be returned for os-server-group API"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":42,"id":"fa80f949_f58f1921","line":16,"updated":"2015-11-05 06:49:58.000000000","message":"please change commit msg  as ids being added for all server group APIs","commit_id":"279955663cb3a944a7d98d7140b0a503f2b532fb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8eefab34910328afddc04b69aaa9936e19d5058c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"mentioned data in the response data."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DocImpact: This adds API microversion"},{"line_number":21,"context_line":"APIImpact: Project id information will be returned for os-server-group API"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I0405ed6271c33981578841cfade220758615b1fd"},{"line_number":24,"context_line":"Implements: blueprint add-project-id-and-user-id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":46,"id":"ba8a016a_8df616d6","line":21,"updated":"2015-11-16 12:30:39.000000000","message":"os-server-groups","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"}],"doc/api_samples/os-server-groups/v2.13/server-groups-get-resp.json":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0d7352c9dc36c20f14d11c7b951b48d675137a39","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        \"policies\": [\"anti-affinity\"],"},{"line_number":6,"context_line":"        \"members\": [],"},{"line_number":7,"context_line":"        \"metadata\": {},"},{"line_number":8,"context_line":"        \"project_id\": \"openstack\","},{"line_number":9,"context_line":"        \"user_id\": \"fake\""},{"line_number":10,"context_line":"    }"},{"line_number":11,"context_line":"}"}],"source_content_type":"application/json","patch_set":46,"id":"da85f559_14689686","line":8,"updated":"2015-11-16 08:52:04.000000000","message":"Can we use uuid format value(\"c7c9f4f175e247acb56c108fd724d667\", etc) as project_id instead of \"openstack\" for fitting actual OpenStack environments?","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"}],"doc/api_samples/os-server-groups/v2.13/server-groups-list-resp.json":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0d7352c9dc36c20f14d11c7b951b48d675137a39","unresolved":false,"context_lines":[{"line_number":6,"context_line":"            \"policies\": [\"anti-affinity\"],"},{"line_number":7,"context_line":"            \"members\": [],"},{"line_number":8,"context_line":"            \"metadata\": {},"},{"line_number":9,"context_line":"            \"project_id\": \"openstack\","},{"line_number":10,"context_line":"            \"user_id\": \"fake\""},{"line_number":11,"context_line":"        }"},{"line_number":12,"context_line":"    ]"}],"source_content_type":"application/json","patch_set":46,"id":"da85f559_14c4165d","line":9,"updated":"2015-11-16 08:52:04.000000000","message":"ditto","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8eefab34910328afddc04b69aaa9936e19d5058c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"             user."},{"line_number":54,"context_line":"    * 2.11 - Exposes forced_down attribute for os-services"},{"line_number":55,"context_line":"    * 2.12 - Exposes VIF net-id in os-virtual-interfaces"},{"line_number":56,"context_line":"    * 2.13 - Add project id and user id information for os-server-group API"},{"line_number":57,"context_line":"\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":46,"id":"ba8a016a_2d1a8a18","line":56,"updated":"2015-11-16 12:30:39.000000000","message":"os-servers-groups","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"59e7d42c885bb23578bff3063397a8387217c43f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"             user."},{"line_number":54,"context_line":"    * 2.11 - Exposes forced_down attribute for os-services"},{"line_number":55,"context_line":"    * 2.12 - Exposes VIF net-id in os-virtual-interfaces"},{"line_number":56,"context_line":"    * 2.13 - Add project id and user id information for os-server-group API"},{"line_number":57,"context_line":"\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":46,"id":"ba8a016a_dcb84ae8","line":56,"in_reply_to":"ba8a016a_2d1a8a18","updated":"2015-11-16 14:19:56.000000000","message":"good catch","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b31e5defa4798b00475123044d8c506e2e5137e3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"             user."},{"line_number":54,"context_line":"    * 2.11 - Exposes forced_down attribute for os-services"},{"line_number":55,"context_line":"    * 2.12 - Exposes VIF net-id in os-virtual-interfaces"},{"line_number":56,"context_line":"    * 2.13 - Add project id and user id information for os-servers-group API"},{"line_number":57,"context_line":"\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":49,"id":"ba8a016a_2010e100","line":56,"updated":"2015-11-18 07:06:03.000000000","message":"this should be os-server-groups, not os-servers-group","commit_id":"6c9f98d58882dbd609cc18b32c3b4ebfcd75a1c0"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1640663fade7c5d305a23909abd18e5218837253","unresolved":false,"context_lines":[{"line_number":53,"context_line":"             user."},{"line_number":54,"context_line":"    * 2.11 - Exposes forced_down attribute for os-services"},{"line_number":55,"context_line":"    * 2.12 - Exposes VIF net-id in os-virtual-interfaces"},{"line_number":56,"context_line":"    * 2.13 - Add project id and user id information for os-servers-group API"},{"line_number":57,"context_line":"\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":49,"id":"ba8a016a_80166da5","line":56,"in_reply_to":"ba8a016a_2010e100","updated":"2015-11-18 07:19:12.000000000","message":"Done","commit_id":"6c9f98d58882dbd609cc18b32c3b4ebfcd75a1c0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2c99f4d5b203fae41381baa039e1a506e3797dc5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"             user."},{"line_number":54,"context_line":"    * 2.11 - Exposes forced_down attribute for os-services"},{"line_number":55,"context_line":"    * 2.12 - Exposes VIF net-id in os-virtual-interfaces"},{"line_number":56,"context_line":"    * 2.13 - Add project id and user id information for os-server-group API"},{"line_number":57,"context_line":"\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a740942_9aaff5e2","line":56,"updated":"2015-12-10 12:06:02.000000000","message":"nit, os-server-groups","commit_id":"58ea97df5aa961ea6d9eab9dda4ddbbbb5bae25f"}],"nova/api/openstack/compute/plugins/v3/server_groups.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bb9f1576bb15de54626312ce03c0434dccff1f21","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        quotas.commit()"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        return {\u0027server_group\u0027: self._format_server_group_v212(context, sg)}"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"class ServerGroups(extensions.V3APIExtensionBase):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_943d5591","line":240,"updated":"2015-08-11 15:16:16.000000000","message":"the only difference is this line? then you can use \n\nsomething like following to avoid write so much code\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/plugins/v3/services.py#L193","commit_id":"f39e4cd2933139ebc2f0ed278725fbd7b8233d2e"}],"nova/api/openstack/compute/server_groups.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"640b4cb8c86fbf9ae7fc039d8c8e8c007fb469e6","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class ServerGroupController(wsgi.Controller):"},{"line_number":47,"context_line":"    \"\"\"The Server group API controller for the OpenStack API.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _format_server_group(self, context, group):"},{"line_number":50,"context_line":"        # the id field has its value as the uuid of the server group"},{"line_number":51,"context_line":"        # There is no \u0027uuid\u0027 key in server_group seen by clients."}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_b7ea86d9","side":"PARENT","line":48,"updated":"2015-08-21 07:46:13.000000000","message":"I think some reviewers will ask you \"Why you deleted this line?\" :)","commit_id":"07773000abcee91d06d7e68a9f394a44a3ca001a"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"640b4cb8c86fbf9ae7fc039d8c8e8c007fb469e6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        add_project_id \u003d False"},{"line_number":86,"context_line":"        if req_ver \u003e\u003d api_version_request.APIVersionRequest(\"2.12\"):"},{"line_number":87,"context_line":"            add_project_id \u003d True"},{"line_number":88,"context_line":"        return {\u0027server_group\u0027: self._format_server_group("},{"line_number":89,"context_line":"                context, sg, add_project_id)}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @wsgi.response(204)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_627aea89","line":88,"updated":"2015-08-21 07:46:13.000000000","message":"You used these four lines three times.\n\nMaybe we can move this check to the _format_server_group?\n\nSomething like:\n\n def _format_server_group(self, context, group, api_ver):\n ...\n if api_ver \u003e\u003d pi_version_request.APIVersionRequest(\"2.12\"):\n     server_group[\u0027project_id\u0027] \u003d group.project_id \n return server_group\n\n\n\n\n\n def show(self, req, id):\n ...\n return {\u0027server_group\u0027: self._format_server_group(context, sg, req.api_version_request)}\n\n\n def index(self, req):\n ...\n return {\u0027server_group\u0027: self._format_server_group(context, sg, req.api_version_request)}\n\n\n def create(self, req, body):\n ...\n return {\u0027server_group\u0027: self._format_server_group(context, sg, req.api_version_request)}\n\n\nthis will allow escape copy/pasting and make code more readable. Also if someone will decide to add new api microversion, argument api_ver in _format_server_group will be useful for him.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5328b570b282e5f7b6172e91d7beff94ee12d0d8","unresolved":false,"context_lines":[{"line_number":127,"context_line":"2.12"},{"line_number":128,"context_line":"----"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  Add project id information to os-server-group API response data"}],"source_content_type":"text/x-rst","patch_set":29,"id":"fa1b9901_f2d55342","line":130,"updated":"2015-08-21 14:52:26.000000000","message":"I would think you can follow the format above ...\nthe ``","commit_id":"49b911b7cb9bd030e22e1a5703eaa296c86ca737"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"59e7d42c885bb23578bff3063397a8387217c43f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  list and can determine in which network a Virtual Interface is plugged into."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"2.13"},{"line_number":135,"context_line":"----"},{"line_number":136,"context_line":"  Add information ``project_id`` and ``user_id`` to ``os-server-group``"},{"line_number":137,"context_line":"  API response data."},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":46,"id":"ba8a016a_3cf156ce","line":135,"updated":"2015-11-16 14:19:56.000000000","message":"From other version history,  there should be one more space line after this line.","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"59e7d42c885bb23578bff3063397a8387217c43f","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"2.13"},{"line_number":135,"context_line":"----"},{"line_number":136,"context_line":"  Add information ``project_id`` and ``user_id`` to ``os-server-group``"},{"line_number":137,"context_line":"  API response data."},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":46,"id":"ba8a016a_5cee9aed","line":136,"updated":"2015-11-16 14:19:56.000000000","message":"os-server-groups","commit_id":"436af546cc43e7c006639deb435ee0d1defdab11"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b31e5defa4798b00475123044d8c506e2e5137e3","unresolved":false,"context_lines":[{"line_number":134,"context_line":"2.13"},{"line_number":135,"context_line":"----"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  Add information ``project_id`` and ``user_id`` to ``os-servers-group``"},{"line_number":138,"context_line":"  API response data."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":49,"id":"ba8a016a_2059c1fe","line":137,"updated":"2015-11-18 07:06:03.000000000","message":"this should be \u0027os-server-groups\u0027, not the \u0027os-servers-group\u0027","commit_id":"6c9f98d58882dbd609cc18b32c3b4ebfcd75a1c0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2c99f4d5b203fae41381baa039e1a506e3797dc5","unresolved":false,"context_lines":[{"line_number":135,"context_line":"----"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  Add information ``project_id`` and ``user_id`` to ``os-server-group``"},{"line_number":138,"context_line":"  API response data."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":52,"id":"7a740942_3a85a158","line":138,"updated":"2015-12-10 12:06:02.000000000","message":"nit, os-server-groups","commit_id":"58ea97df5aa961ea6d9eab9dda4ddbbbb5bae25f"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ef0e7576ed90c9dd6d923cf1c50a878731cbfe6e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"----"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  Add information ``project_id`` and ``user_id`` to ``os-server-group``"},{"line_number":138,"context_line":"  API response data."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":52,"id":"7a740942_ba2191fe","line":138,"in_reply_to":"7a740942_3a85a158","updated":"2015-12-10 12:14:10.000000000","message":"strange, I remembered I have already done this.","commit_id":"58ea97df5aa961ea6d9eab9dda4ddbbbb5bae25f"}],"nova/tests/functional/api_sample_tests/api_samples/os-server-groups/v2.13/server-groups-list-resp.json.tpl":[{"author":{"_account_id":17714,"name":"Augustina Ragwitz","email":"auggy@cpan.org","username":"mmmpork"},"change_message_id":"09ff1d9552dae989bc859eed41fd556dc1e774cd","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"server_groups\": ["},{"line_number":3,"context_line":"        {"},{"line_number":4,"context_line":"            \"id\": \"%(id)s\","},{"line_number":5,"context_line":"            \"name\": \"test\","},{"line_number":6,"context_line":"            \"policies\": [\"anti-affinity\"],"},{"line_number":7,"context_line":"            \"members\": [],"},{"line_number":8,"context_line":"            \"metadata\": {},"}],"source_content_type":"text/x-smarty","patch_set":53,"id":"5a710552_a711b65f","line":5,"updated":"2015-12-14 19:32:11.000000000","message":"I noticed in other places you\u0027re using %(name)s and here you\u0027ve got it hard coded as \"test\". Is that intentional?","commit_id":"6c74a145bc3f412b0f5ef1965b00c8542963ed26"}],"nova/tests/functional/api_sample_tests/test_server_groups.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        return self._verify_response(\u0027server-groups-post-resp\u0027,"},{"line_number":113,"context_line":"                                     subs, response, 200)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _create_server_group(self):"},{"line_number":116,"context_line":"        subs \u003d self._get_create_subs()"},{"line_number":117,"context_line":"        return self._do_post(\u0027os-server-groups\u0027,"},{"line_number":118,"context_line":"                             \u0027server-groups-post-req\u0027, subs,"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_54668851","line":115,"updated":"2015-08-21 07:29:45.000000000","message":"I can\u0027t see this private method is used in any code, please remove it.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"640b4cb8c86fbf9ae7fc039d8c8e8c007fb469e6","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        return self._verify_response(\u0027server-groups-post-resp\u0027,"},{"line_number":113,"context_line":"                                     subs, response, 200)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _create_server_group(self):"},{"line_number":116,"context_line":"        subs \u003d self._get_create_subs()"},{"line_number":117,"context_line":"        return self._do_post(\u0027os-server-groups\u0027,"},{"line_number":118,"context_line":"                             \u0027server-groups-post-req\u0027, subs,"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_a2a4824a","line":115,"in_reply_to":"fa1b9901_54668851","updated":"2015-08-21 07:46:13.000000000","message":"+1","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                             api_version\u003dself.request_api_version)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_server_groups_post(self):"},{"line_number":122,"context_line":"        return self._post_server_group()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_server_groups_list(self):"},{"line_number":125,"context_line":"        subs \u003d self._get_create_subs()"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_f4cf9c26","line":122,"updated":"2015-08-21 07:29:45.000000000","message":"the return is useless.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"640b4cb8c86fbf9ae7fc039d8c8e8c007fb469e6","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                             api_version\u003dself.request_api_version)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_server_groups_post(self):"},{"line_number":122,"context_line":"        return self._post_server_group()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_server_groups_list(self):"},{"line_number":125,"context_line":"        subs \u003d self._get_create_subs()"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_226f12fd","line":122,"in_reply_to":"fa1b9901_f4cf9c26","updated":"2015-08-21 07:46:13.000000000","message":"+1","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return self._post_server_group()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_server_groups_list(self):"},{"line_number":125,"context_line":"        subs \u003d self._get_create_subs()"},{"line_number":126,"context_line":"        uuid \u003d self._post_server_group()"},{"line_number":127,"context_line":"        response \u003d self._do_get(\u0027os-server-groups\u0027,"},{"line_number":128,"context_line":"                                api_version\u003dself.request_api_version)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_146fb0fc","line":125,"updated":"2015-08-21 07:29:45.000000000","message":"I think we can remove this line when update line 129 by following my comment.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        uuid \u003d self._post_server_group()"},{"line_number":127,"context_line":"        response \u003d self._do_get(\u0027os-server-groups\u0027,"},{"line_number":128,"context_line":"                                api_version\u003dself.request_api_version)"},{"line_number":129,"context_line":"        subs.update(self._get_regexes())"},{"line_number":130,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":131,"context_line":"        self._verify_response(\u0027server-groups-list-resp\u0027,"},{"line_number":132,"context_line":"                              subs, response, 200)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_b48cc4da","line":129,"updated":"2015-08-21 07:29:45.000000000","message":"subs \u003d self._get_regexes()","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_server_groups_get(self):"},{"line_number":135,"context_line":"        # Get api sample of server groups get request."},{"line_number":136,"context_line":"        subs \u003d {\u0027name\u0027: \u0027test\u0027}"},{"line_number":137,"context_line":"        uuid \u003d self._post_server_group()"},{"line_number":138,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":139,"context_line":"        response \u003d self._do_get(\u0027os-server-groups/%s\u0027 % uuid,"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_f439dcf2","line":136,"updated":"2015-08-21 07:29:45.000000000","message":"Why don\u0027t call self._get_create_subs() at here?","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        uuid \u003d self._post_server_group()"},{"line_number":146,"context_line":"        response \u003d self._do_delete(\u0027os-server-groups/%s\u0027 % uuid,"},{"line_number":147,"context_line":"                                   api_version\u003dself.request_api_version)"},{"line_number":148,"context_line":"        self.assertEqual(response.status_code, 204)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_d43db82b","line":148,"updated":"2015-08-21 07:29:45.000000000","message":"self.assertEqual(expected, actual)","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"0b6b0dcec1f106ab483ef7207db57736b27093c9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                                 api_version\u003dself.request_api_version)"},{"line_number":110,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":111,"context_line":"        subs[\u0027name\u0027] \u003d \u0027test\u0027"},{"line_number":112,"context_line":"        return self._verify_response(\u0027server-groups-post-resp\u0027,"},{"line_number":113,"context_line":"                                     subs, response, 200)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_server_groups_list(self):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_506682bb","line":112,"updated":"2015-08-21 12:40:56.000000000","message":"\u0027return\u0027 here is useless","commit_id":"17f734c381c310fd75f2b7cb91a826d3329bf032"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"74b5732462af2eb3cbd8c478eb4698c15f8dcf54","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"},{"line_number":86,"context_line":"    _api_version \u003d \u0027v2.1\u0027"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _get_flags(self):"},{"line_number":89,"context_line":"        f \u003d super(ServerGroupsV213SampleJsonTest, self)._get_flags()"}],"source_content_type":"text/x-python","patch_set":42,"id":"fa80f949_95ab2dd6","line":86,"updated":"2015-11-05 06:48:35.000000000","message":"we do not need to mention _api_version here.\n\nThere is only response change for 2.13 version so how about just overriding response  sample files in this class and use all tests code of ServerGroupsSampleJsonTest.\n\nI mean drive this class from ServerGroupsSampleJsonTest and just have different sample files for both tests class.","commit_id":"279955663cb3a944a7d98d7140b0a503f2b532fb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":72,"context_line":"        response \u003d self._do_get(\u0027os-server-groups/%s\u0027 % uuid)"},{"line_number":73,"context_line":"        self._verify_response(\u0027server-groups-get-resp\u0027, subs,"},{"line_number":74,"context_line":"                                  response, 200)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_server_groups_delete(self):"},{"line_number":77,"context_line":"        uuid \u003d self._post_server_group()"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_afbb75e4","line":74,"updated":"2015-11-05 11:35:36.000000000","message":"This is unrelated change.","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(204, response.status_code)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ServerGroupsV213SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):"},{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_2f41c5a9","line":82,"updated":"2015-11-05 11:35:36.000000000","message":"Can we based on class ServerGroupsSampleJsonTest?","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0dc55151d3bc1f978f1b109c277f95449583b5ad","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(204, response.status_code)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ServerGroupsV213SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):"},{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_757d5e6d","line":82,"in_reply_to":"fa80f949_2f41c5a9","updated":"2015-11-05 12:07:47.000000000","message":"I\u0027m working on it","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"},{"line_number":86,"context_line":"    _api_version \u003d \u0027v2.1\u0027"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _get_flags(self):"},{"line_number":89,"context_line":"        f \u003d super(ServerGroupsV213SampleJsonTest, self)._get_flags()"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_6fffcd67","line":86,"updated":"2015-11-05 11:35:36.000000000","message":"this is needless anymore","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b31e5defa4798b00475123044d8c506e2e5137e3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":72,"context_line":"        response \u003d self._do_get(\u0027os-server-groups/%s\u0027 % uuid)"},{"line_number":73,"context_line":"        self._verify_response(\u0027server-groups-get-resp\u0027, subs,"},{"line_number":74,"context_line":"                                  response, 200)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_server_groups_delete(self):"},{"line_number":77,"context_line":"        uuid \u003d self._post_server_group()"}],"source_content_type":"text/x-python","patch_set":49,"id":"ba8a016a_001d9d0e","line":74,"updated":"2015-11-18 07:06:03.000000000","message":"unrelated change","commit_id":"6c9f98d58882dbd609cc18b32c3b4ebfcd75a1c0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2c99f4d5b203fae41381baa039e1a506e3797dc5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        uuid \u003d self._post_server_group()"},{"line_number":71,"context_line":"        subs[\u0027id\u0027] \u003d uuid"},{"line_number":72,"context_line":"        response \u003d self._do_get(\u0027os-server-groups/%s\u0027 % uuid)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self._verify_response(\u0027server-groups-get-resp\u0027, subs, response, 200)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_server_groups_delete(self):"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a740942_1aff8502","side":"PARENT","line":73,"updated":"2015-12-10 12:06:02.000000000","message":"we shouldn\u0027t touch extra line","commit_id":"3f8c69b2ef3eef886e36c0b7f397b83a36a7beb8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e0a68843b70f869867cc607a336babb200fa5420","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(204, response.status_code)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ServerGroupsV213SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):"},{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"}],"source_content_type":"text/x-python","patch_set":53,"id":"da6ed579_4ace0a64","line":82,"updated":"2016-01-14 22:31:29.000000000","message":"This is not actually running any tests. See bug 1534354.","commit_id":"6c74a145bc3f412b0f5ef1965b00c8542963ed26"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9b180497e3690bd63249cef09b5105777ed9517","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(204, response.status_code)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ServerGroupsV213SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):"},{"line_number":83,"context_line":"    extension_name \u003d \"os-server-groups\""},{"line_number":84,"context_line":"    request_api_version \u003d \u00272.13\u0027"},{"line_number":85,"context_line":"    scenarios \u003d [(\u0027v2_13\u0027, {})]"}],"source_content_type":"text/x-python","patch_set":53,"id":"da6ed579_8d0e5ce3","line":82,"in_reply_to":"da6ed579_4ace0a64","updated":"2016-01-14 22:49:28.000000000","message":"https://review.openstack.org/#/c/267853/","commit_id":"6c74a145bc3f412b0f5ef1965b00c8542963ed26"}],"nova/tests/unit/api/openstack/compute/test_server_groups.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def test_list_server_group_all(self):"},{"line_number":385,"context_line":"        all_groups \u003d []"},{"line_number":386,"context_line":"        tenant_groups \u003d []"},{"line_number":387,"context_line":"        policies \u003d [\u0027anti-affinity\u0027]"},{"line_number":388,"context_line":"        members \u003d []"},{"line_number":389,"context_line":"        metadata \u003d {}  # always empty"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_7754eec8","line":386,"updated":"2015-08-21 07:29:45.000000000","message":"all_groups and tenant_groups is overrided at the following logic directly,  so we don\u0027t need to init them.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                                           name\u003dnames[1],"},{"line_number":400,"context_line":"                                           policies\u003dpolicies,"},{"line_number":401,"context_line":"                                           members\u003dmembers,"},{"line_number":402,"context_line":"                                           metadata\u003d{},"},{"line_number":403,"context_line":"                                           project_id\u003dp_id)"},{"line_number":404,"context_line":"        tenant_groups \u003d [sg2]"},{"line_number":405,"context_line":"        all_groups \u003d [sg1, sg2]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_776b8e85","line":402,"updated":"2015-08-21 07:29:45.000000000","message":"s/metadata\u003d{}/metadata\u003dmetadata/","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            return [server_group_db(sg) for sg in all_groups]"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        self.stubs.Set(nova.db, \u0027instance_group_get_all\u0027,"},{"line_number":414,"context_line":"                       return_all_server_groups)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        def return_tenant_server_groups(context, project_id):"},{"line_number":417,"context_line":"            return [server_group_db(sg) for sg in tenant_groups]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_b744c649","line":414,"updated":"2015-08-21 07:29:45.000000000","message":"let\u0027s use mock.patch.object() instead of self.stubs.Set()","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"640b4cb8c86fbf9ae7fc039d8c8e8c007fb469e6","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            return [server_group_db(sg) for sg in all_groups]"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        self.stubs.Set(nova.db, \u0027instance_group_get_all\u0027,"},{"line_number":414,"context_line":"                       return_all_server_groups)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        def return_tenant_server_groups(context, project_id):"},{"line_number":417,"context_line":"            return [server_group_db(sg) for sg in tenant_groups]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_a2000203","line":414,"in_reply_to":"fa1b9901_b744c649","updated":"2015-08-21 07:46:13.000000000","message":"+1","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            return [server_group_db(sg) for sg in tenant_groups]"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        self.stubs.Set(nova.db, \u0027instance_group_get_all_by_project_id\u0027,"},{"line_number":420,"context_line":"                       return_tenant_server_groups)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        path \u003d \u0027/os-server-groups?all_projects\u003dTrue\u0027"},{"line_number":423,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_77614ed2","line":420,"updated":"2015-08-21 07:29:45.000000000","message":"here","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        req \u003d fakes.HTTPRequest.blank(path, use_admin_context\u003dTrue,"},{"line_number":425,"context_line":"                                      version\u003dself.wsgi_api_version)"},{"line_number":426,"context_line":"        res_dict \u003d self.controller.index(req)"},{"line_number":427,"context_line":"        self.assertEqual(res_dict, all)"},{"line_number":428,"context_line":"        req \u003d fakes.HTTPRequest.blank(path,"},{"line_number":429,"context_line":"                                      version\u003dself.wsgi_api_version)"},{"line_number":430,"context_line":"        res_dict \u003d self.controller.index(req)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_37d67628","line":427,"updated":"2015-08-21 07:29:45.000000000","message":"self.assertEqual(expected, actual)","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        self.assertEqual(tenant_specific, res_dict)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def test_list_server_group_by_tenant(self):"},{"line_number":434,"context_line":"        groups \u003d []"},{"line_number":435,"context_line":"        policies \u003d [\u0027anti-affinity\u0027]"},{"line_number":436,"context_line":"        members \u003d []"},{"line_number":437,"context_line":"        metadata \u003d {}  # always empty"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_17849208","line":434,"updated":"2015-08-21 07:29:45.000000000","message":"don\u0027t need to init groups, it\u0027s overrided in the following logic.","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                                           name\u003dnames[1],"},{"line_number":448,"context_line":"                                           policies\u003dpolicies,"},{"line_number":449,"context_line":"                                           members\u003dmembers,"},{"line_number":450,"context_line":"                                           metadata\u003d{},"},{"line_number":451,"context_line":"                                           project_id\u003dp_id)"},{"line_number":452,"context_line":"        groups \u003d [sg1, sg2]"},{"line_number":453,"context_line":"        expected \u003d {\u0027server_groups\u0027: groups}"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_97a742a6","line":450,"updated":"2015-08-21 07:29:45.000000000","message":"s/metadata\u003d{}/metadata\u003dmetadata/","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"f2af314a220d4dbe103f1e1e1f2aa5bbfde28b89","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        def return_server_groups(context, project_id):"},{"line_number":456,"context_line":"            return [server_group_db(sg) for sg in groups]"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        self.stubs.Set(nova.db, \u0027instance_group_get_all_by_project_id\u0027,"},{"line_number":459,"context_line":"                       return_server_groups)"},{"line_number":460,"context_line":"        path \u003d \u0027/os-server-groups\u0027"},{"line_number":461,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(path,"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_b7d4c6eb","line":458,"updated":"2015-08-21 07:29:45.000000000","message":"use mock.patch() instead of self.stubs.Set()","commit_id":"645d9c1a52821de950467422d7a65bbe27fa3e09"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"3c9aacac5bd1b4317730cc9f42db63eed21e92a6","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        self.controller \u003d sg_v21.ServerGroupController()"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @mock.patch(nova.db, \u0027instance_group_get_all_by_project_id\u0027)"},{"line_number":387,"context_line":"    @mock.patch(nova.db, \u0027instance_group_get_all\u0027)"},{"line_number":388,"context_line":"    def test_list_server_group_all(self, mock_get_all,"},{"line_number":389,"context_line":"                                   mock_get_by_project):"},{"line_number":390,"context_line":"        policies \u003d [\u0027anti-affinity\u0027]"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_43455740","line":387,"updated":"2015-08-21 13:28:46.000000000","message":"You must use here \n1) \n @mock.patch.object(nova.db, \u0027instance_group_get_all\u0027)\n @mock.patch.object(nova.db, \u0027instance_group_get_all_by_project_id\u0027)\n\nor\n2) \n\n @mock.patch(\u0027nova.db.instance_group_get_all\u0027)\n @mock.patch(\u0027nova.db.instance_group_get_all_by_project_id\u0027)","commit_id":"17f734c381c310fd75f2b7cb91a826d3329bf032"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"74b5732462af2eb3cbd8c478eb4698c15f8dcf54","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        self.controller \u003d server_groups.ServerGroupController(ext_mgr)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"class ServerGroupTestV213(ServerGroupTestV21):"},{"line_number":381,"context_line":"    wsgi_api_version \u003d \u00272.13\u0027"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _setup_controller(self):"}],"source_content_type":"text/x-python","patch_set":42,"id":"fa80f949_956ecd94","line":380,"updated":"2015-11-05 06:48:35.000000000","message":"we can add UT as much as possible , i mean base class tests does not cover project_id etc for create/show APIs.\n\nSame suggestion, we should reuse the tests code. You can override sg1 and sg2 and run list tests","commit_id":"279955663cb3a944a7d98d7140b0a503f2b532fb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                       return_server_groups)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        res_dict \u003d self.controller.index(self.req)"},{"line_number":292,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def test_list_server_group_all(self):"},{"line_number":295,"context_line":"        all_groups \u003d []"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_cf7d99e8","line":292,"updated":"2015-11-05 11:35:36.000000000","message":"unrelated change","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0dc55151d3bc1f978f1b109c277f95449583b5ad","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                       return_server_groups)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        res_dict \u003d self.controller.index(self.req)"},{"line_number":292,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def test_list_server_group_all(self):"},{"line_number":295,"context_line":"        all_groups \u003d []"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_f5e86e12","line":292,"in_reply_to":"fa80f949_cf7d99e8","updated":"2015-11-05 12:07:47.000000000","message":"not good to fix it here?","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a4a8441f0bce84b9fed53bf074d760436843a34a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                       return_server_groups)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        res_dict \u003d self.controller.index(self.req)"},{"line_number":292,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def test_list_server_group_all(self):"},{"line_number":295,"context_line":"        all_groups \u003d []"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_e0ed0a26","line":292,"in_reply_to":"fa80f949_f5e86e12","updated":"2015-11-05 12:30:05.000000000","message":"yeah, those cleanup should be in separated patch.","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        self.assertEqual(res_dict, all)"},{"line_number":334,"context_line":"        req \u003d fakes.HTTPRequest.blank(path)"},{"line_number":335,"context_line":"        res_dict \u003d self.controller.index(req)"},{"line_number":336,"context_line":"        self.assertEqual(tenant_specific, res_dict)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def test_delete_server_group_by_id(self):"},{"line_number":339,"context_line":"        sg \u003d server_group_template(id\u003d\u0027123\u0027)"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_8f8791d6","line":336,"updated":"2015-11-05 11:35:36.000000000","message":"ditto","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f55e3337444dedf52aa86b6684ec4f71ad9f5b3","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    @mock.patch.object(nova.db, \u0027instance_group_get_all_by_project_id\u0027)"},{"line_number":387,"context_line":"    @mock.patch.object(nova.db, \u0027instance_group_get_all\u0027)"},{"line_number":388,"context_line":"    def test_list_server_group_all(self, mock_get_all,"},{"line_number":389,"context_line":"                                   mock_get_by_project):"},{"line_number":390,"context_line":"        policies \u003d [\u0027anti-affinity\u0027]"},{"line_number":391,"context_line":"        members \u003d []"},{"line_number":392,"context_line":"        metadata \u003d {}  # always empty"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa80f949_6fb7cd86","line":389,"updated":"2015-11-05 11:35:36.000000000","message":"if we can share some code with base class will be great","commit_id":"4e715fac4c3332c130b812e29ff395724ec2020c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2dcafee1682719f9f617041392f0130bdddd4550","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        names \u003d [\u0027default-x\u0027, \u0027test\u0027]"},{"line_number":142,"context_line":"        p_id \u003d \u0027project_id\u0027"},{"line_number":143,"context_line":"        u_id \u003d \u0027user_id\u0027"},{"line_number":144,"context_line":"        if api_version \u003e\u003d \u00272.13\u0027:"},{"line_number":145,"context_line":"            sg1 \u003d server_group_resp_template(id\u003dstr(1345),"},{"line_number":146,"context_line":"                                            name\u003dnames[0],"},{"line_number":147,"context_line":"                                            policies\u003dpolicies,"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a740942_efd815f1","line":144,"updated":"2015-12-14 16:12:16.000000000","message":"Nit: somehow, I think I would prefer this being overidden in ServerGroupTestV213, rather than having details for that in this base class. But this is readable enough, so I am OK with that.","commit_id":"6c74a145bc3f412b0f5ef1965b00c8542963ed26"},{"author":{"_account_id":17714,"name":"Augustina Ragwitz","email":"auggy@cpan.org","username":"mmmpork"},"change_message_id":"09ff1d9552dae989bc859eed41fd556dc1e774cd","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        names \u003d [\u0027default-x\u0027, \u0027test\u0027]"},{"line_number":142,"context_line":"        p_id \u003d \u0027project_id\u0027"},{"line_number":143,"context_line":"        u_id \u003d \u0027user_id\u0027"},{"line_number":144,"context_line":"        if api_version \u003e\u003d \u00272.13\u0027:"},{"line_number":145,"context_line":"            sg1 \u003d server_group_resp_template(id\u003dstr(1345),"},{"line_number":146,"context_line":"                                            name\u003dnames[0],"},{"line_number":147,"context_line":"                                            policies\u003dpolicies,"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a710552_c748828a","line":144,"in_reply_to":"7a740942_efd815f1","updated":"2015-12-14 19:32:11.000000000","message":"I agree, I think this could get messy down the road if we are adding additional logical branches for microversions whenever we change the response data. That being said if others are ok with it, I have no objection, but thought I\u0027d share my concerns.","commit_id":"6c74a145bc3f412b0f5ef1965b00c8542963ed26"}],"releasenotes/notes/bp-add-project-and-user-id-a560d087656157d4.yaml":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dadae38dd00c205e082ed29e265c60420d371473","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    to use this new feature, user have to contain the"},{"line_number":7,"context_line":"    header of request microversion v2.13 in the API"},{"line_number":8,"context_line":"    request."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    A new API microversion is bumped."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    Partial fixes bug #1481210"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"7a740942_e860faa6","line":14,"range":{"start_line":9,"start_character":0,"end_line":14,"end_character":30},"updated":"2015-12-09 09:38:48.000000000","message":"that\u0027s not needed, but thanks for providing a features section","commit_id":"c7cff2f7435c8ee6b1a5cdc064bc66960e8cbde3"}]}
