)]}'
{"openstack_dashboard/static/app/core/server_groups/details/overview.controller.js":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"98787c003cca8c3ebb34f4c99706b05b6479833d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    function onGetServerGroup(servergroup) {"},{"line_number":67,"context_line":"      ctrl.servergroup \u003d servergroup.data;"},{"line_number":68,"context_line":"      if (servergroup.data.members.length \u003e 0) {"},{"line_number":69,"context_line":"        nova.getServers({all_tenants: true}).then(function getServerInfo(servers) {"},{"line_number":70,"context_line":"            var members \u003d [];"},{"line_number":71,"context_line":"            servergroup.data.members.forEach(function(member) {"},{"line_number":72,"context_line":"              for(var i\u003d0;i\u003cservers.data.items.length;i++){"}],"source_content_type":"text/javascript","patch_set":11,"id":"1f485f77_91cc298a","line":69,"range":{"start_line":69,"start_character":38,"end_line":69,"end_character":42},"updated":"2017-11-13 12:29:00.000000000","message":"In fact, this side needs to determine whether it is True or False based on the current path. However, the current details url does\u0027t contains project or admin. Do we have a good way to distinguish whether it is currently in project or admin?","commit_id":"6506813f29a6f6bbae3ca18b62c46981660e6e83"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"b98bef4fcb47cf174c8b83995877cdd727370259","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    function onGetServerGroup(servergroup) {"},{"line_number":67,"context_line":"      ctrl.servergroup \u003d servergroup.data;"},{"line_number":68,"context_line":"      if (servergroup.data.members.length \u003e 0) {"},{"line_number":69,"context_line":"        nova.getServers({all_tenants: true}).then(function getServerInfo(servers) {"},{"line_number":70,"context_line":"            var members \u003d [];"},{"line_number":71,"context_line":"            servergroup.data.members.forEach(function(member) {"},{"line_number":72,"context_line":"              for(var i\u003d0;i\u003cservers.data.items.length;i++){"}],"source_content_type":"text/javascript","patch_set":11,"id":"1f485f77_d1716ae0","line":69,"range":{"start_line":69,"start_character":38,"end_line":69,"end_character":42},"in_reply_to":"1f485f77_91cc298a","updated":"2017-11-14 06:17:01.000000000","message":"Currently, in addition to adding project or admin to the details url, we can also get the current dashboard information from the navigation bar, such as using: $(angular.element(\u0027.page-breadcrumb\u0027).find(\u0027li\u0027)[0]).text().\nBut, this is not a good solution. When I review other patch, https://review.openstack.org/#/c/491346/ looks better solve this problem, use the new \u0027defaultIndexUrl\u0027 parameter and its getter/setter into resource-type-service, but the work is still in progress.","commit_id":"6506813f29a6f6bbae3ca18b62c46981660e6e83"}],"openstack_dashboard/static/app/core/server_groups/server-groups.module.js":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"10dadd2c3cbedf60f1344c22cbf19a2c41be8175","unresolved":false,"context_lines":[{"line_number":95,"context_line":"      id: gettext(\u0027ID\u0027),"},{"line_number":96,"context_line":"      policy: gettext(\u0027Policy\u0027),"},{"line_number":97,"context_line":"      project_id: gettext(\u0027Project\u0027),"},{"line_number":98,"context_line":"      user_id: gettext(\u0027User ID\u0027)"},{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":"  }"},{"line_number":101,"context_line":""}],"source_content_type":"text/javascript","patch_set":25,"id":"5f93b717_21400fa5","line":98,"range":{"start_line":98,"start_character":15,"end_line":98,"end_character":33},"updated":"2018-01-31 19:57:01.000000000","message":"Both \"Project\" and \"User ID\" show ID, but the one has \"ID\" and the other has no \"ID\". Looks tricky.","commit_id":"70acc3c86df09d1453b27b1a56fff70b5612ada7"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"6c1d053b565853df84e40960a369a8633180319b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"      id: gettext(\u0027ID\u0027),"},{"line_number":96,"context_line":"      policy: gettext(\u0027Policy\u0027),"},{"line_number":97,"context_line":"      project_id: gettext(\u0027Project\u0027),"},{"line_number":98,"context_line":"      user_id: gettext(\u0027User ID\u0027)"},{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":"  }"},{"line_number":101,"context_line":""}],"source_content_type":"text/javascript","patch_set":25,"id":"3fa0c359_22eb3cdc","line":98,"range":{"start_line":98,"start_character":15,"end_line":98,"end_character":33},"in_reply_to":"5f93b717_21400fa5","updated":"2018-02-11 12:23:37.000000000","message":"Thanks for remind. I have changed the \u0027Project\u0027 to \u0027Project ID\u0027.","commit_id":"70acc3c86df09d1453b27b1a56fff70b5612ada7"}],"openstack_dashboard/test/unit/api/rest/test_nova.py":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"a1e00eda319c198c90a5fe0b93d16b19ad10b924","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        nova.ServerGroup().delete(request, \"1\")"},{"line_number":395,"context_line":"        self.mock_server_group_delete.assert_called_once_with(request, \"1\")"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    @mock.patch.object(nova.api, \u0027nova\u0027)"},{"line_number":398,"context_line":"    def test_server_group_get_single(self, nc):"},{"line_number":399,"context_line":"        request \u003d self.mock_rest_request()"},{"line_number":400,"context_line":"        nc.server_group_get.return_value.to_dict.return_value \u003d {\u0027name\u0027: \u00271\u0027}"}],"source_content_type":"text/x-python","patch_set":34,"id":"df7087c5_3836ce52","line":397,"range":{"start_line":397,"start_character":4,"end_line":397,"end_character":40},"updated":"2018-03-16 16:31:06.000000000","message":"Should also avoid mocking whole module api.nova.","commit_id":"42a3f196247d2afcca776ec6895a4feef840e44a"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"bd5eb76f5539e6344e72a694c53c1201d8227a56","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        nova.ServerGroup().delete(request, \"1\")"},{"line_number":395,"context_line":"        self.mock_server_group_delete.assert_called_once_with(request, \"1\")"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    @mock.patch.object(nova.api, \u0027nova\u0027)"},{"line_number":398,"context_line":"    def test_server_group_get_single(self, nc):"},{"line_number":399,"context_line":"        request \u003d self.mock_rest_request()"},{"line_number":400,"context_line":"        nc.server_group_get.return_value.to_dict.return_value \u003d {\u0027name\u0027: \u00271\u0027}"}],"source_content_type":"text/x-python","patch_set":34,"id":"df7087c5_7868c6f3","line":397,"range":{"start_line":397,"start_character":4,"end_line":397,"end_character":40},"in_reply_to":"df7087c5_3836ce52","updated":"2018-03-16 16:39:56.000000000","message":"Done","commit_id":"42a3f196247d2afcca776ec6895a4feef840e44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4f825c7ac16072a1f32d3651f54c48f0695a8833","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    @test.create_mocks({api.nova: [\u0027server_group_get\u0027]})"},{"line_number":398,"context_line":"    def test_server_group_get_single(self):"},{"line_number":399,"context_line":"        request \u003d self.mock_rest_request()"},{"line_number":400,"context_line":"        self.mock_server_group_get.return_value.to_dict.return_value \u003d \\"},{"line_number":401,"context_line":"            {\u0027name\u0027: \u00271\u0027}"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        response \u003d nova.ServerGroup().get(request, \"1\")"},{"line_number":404,"context_line":"        self.assertStatusCode(response, 200)"}],"source_content_type":"text/x-python","patch_set":35,"id":"df7087c5_b1caeb17","line":401,"range":{"start_line":400,"start_character":47,"end_line":401,"end_character":25},"updated":"2018-03-18 08:12:04.000000000","message":"Personally it is better to use self.server_groups.first(). It is simpler and we can avoid unexpected attribute access (as a mocked method returns Mock() object for unknown attribute access).","commit_id":"972024deae6ca190bd726d90cedba83fc8c04417"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"c309c1cf512e723266bc16a8a0770977812020a2","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    @test.create_mocks({api.nova: [\u0027server_group_get\u0027]})"},{"line_number":398,"context_line":"    def test_server_group_get_single(self):"},{"line_number":399,"context_line":"        request \u003d self.mock_rest_request()"},{"line_number":400,"context_line":"        self.mock_server_group_get.return_value.to_dict.return_value \u003d \\"},{"line_number":401,"context_line":"            {\u0027name\u0027: \u00271\u0027}"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        response \u003d nova.ServerGroup().get(request, \"1\")"},{"line_number":404,"context_line":"        self.assertStatusCode(response, 200)"}],"source_content_type":"text/x-python","patch_set":35,"id":"df7087c5_27d699c5","line":401,"range":{"start_line":400,"start_character":47,"end_line":401,"end_character":25},"in_reply_to":"df7087c5_b1caeb17","updated":"2018-03-18 14:45:51.000000000","message":"Done","commit_id":"972024deae6ca190bd726d90cedba83fc8c04417"}]}
