)]}'
{"releasenotes/notes/add-list-security-groups-by-servers-to-servers-client-library-088df48f6d81f4be.yaml":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"8a9b042e96112a892935a9dfaa4abcd2a53fff0c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add the list security groups by server API to the servers_client "},{"line_number":5,"context_line":"    library. This feature enables the possibility to list security"},{"line_number":6,"context_line":"    groups for a server instance."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"da36d5c6_998610b8","line":4,"range":{"start_line":4,"start_character":68,"end_line":4,"end_character":69},"updated":"2017-02-20 08:31:26.000000000","message":"redundant space?","commit_id":"5c9ead8020ad38a1f8aaf4aae02cfa6b9cf29f53"}],"tempest/api/compute/security_groups/test_security_groups.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    @test.services(\u0027network\u0027)"},{"line_number":150,"context_line":"    def test_list_security_groups_by_server(self):"},{"line_number":151,"context_line":"        # List the security group id that a user has access upon"},{"line_number":152,"context_line":"        assigned_security_groups_ids \u003d list()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Create a couple security groups that we will use"},{"line_number":155,"context_line":"        # for the server resource this test creates"},{"line_number":156,"context_line":"        sg \u003d self.create_security_group()"},{"line_number":157,"context_line":"        assigned_security_groups_ids.append(sg[\u0027id\u0027])"},{"line_number":158,"context_line":"        sg2 \u003d self.create_security_group()"},{"line_number":159,"context_line":"        assigned_security_groups_ids.append(sg2[\u0027id\u0027])"},{"line_number":160,"context_line":"        # Create server and add the security group created"},{"line_number":161,"context_line":"        # above to the server we just created"},{"line_number":162,"context_line":"        server \u003d self.create_test_server()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_f04a4d25","line":159,"range":{"start_line":152,"start_character":0,"end_line":159,"end_character":54},"updated":"2017-02-14 03:16:32.000000000","message":"will below code looks simpler?\n        # Create a couple security groups that we will use\n        # for the server resource this test creates\n        sg \u003d self.create_security_group()\n        sg2 \u003d self.create_security_group()\n        assigned_security_groups_ids \u003d [sg[\u0027id\u0027], sg2[\u0027id\u0027]]","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        assigned_security_groups_ids.append(sg2[\u0027id\u0027])"},{"line_number":160,"context_line":"        # Create server and add the security group created"},{"line_number":161,"context_line":"        # above to the server we just created"},{"line_number":162,"context_line":"        server \u003d self.create_test_server()"},{"line_number":163,"context_line":"        server_id \u003d server[\u0027id\u0027]"},{"line_number":164,"context_line":"        waiters.wait_for_server_status(self.servers_client, server_id,"},{"line_number":165,"context_line":"                                       \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_5084f95c","line":162,"range":{"start_line":162,"start_character":17,"end_line":162,"end_character":42},"updated":"2017-02-14 03:16:32.000000000","message":"self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        # above to the server we just created"},{"line_number":162,"context_line":"        server \u003d self.create_test_server()"},{"line_number":163,"context_line":"        server_id \u003d server[\u0027id\u0027]"},{"line_number":164,"context_line":"        waiters.wait_for_server_status(self.servers_client, server_id,"},{"line_number":165,"context_line":"                                       \u0027ACTIVE\u0027)"},{"line_number":166,"context_line":"        # add security groups to server"},{"line_number":167,"context_line":"        self.servers_client.add_security_group(server_id, name\u003dsg[\u0027name\u0027])"},{"line_number":168,"context_line":"        self.servers_client.add_security_group(server_id, name\u003dsg2[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_7089fd74","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":48},"updated":"2017-02-14 03:16:32.000000000","message":"this can be removed","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                server_id)[\u0027security_groups\u0027])"},{"line_number":174,"context_line":"        fetched_security_groups_ids \u003d [i[\u0027id\u0027] for i in fetched_groups]"},{"line_number":175,"context_line":"        # verifying the security groups ids in list"},{"line_number":176,"context_line":"        missing_security_groups \u003d\\"},{"line_number":177,"context_line":"            [p for p in assigned_security_groups_ids"},{"line_number":178,"context_line":"             if p not in fetched_security_groups_ids]"},{"line_number":179,"context_line":"        self.assertEqual(0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_7033bdab","line":176,"updated":"2017-02-14 03:16:32.000000000","message":"It seems we can judge whether fetched_security_groups_ids is equal to assigned_security_groups_ids?\ni.e., \nassertEqual(set(fetched_security_groups_ids), set(assigned_security_groups_ids))","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        missing_security_groups \u003d\\"},{"line_number":177,"context_line":"            [p for p in assigned_security_groups_ids"},{"line_number":178,"context_line":"             if p not in fetched_security_groups_ids]"},{"line_number":179,"context_line":"        self.assertEqual(0,"},{"line_number":180,"context_line":"                         len(missing_security_groups),"},{"line_number":181,"context_line":"                         \"Failed to find security_groups %s in fetched list\" %"},{"line_number":182,"context_line":"                         \u0027, \u0027.join(i for i in missing_security_groups))"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_308ce57e","line":180,"range":{"start_line":179,"start_character":0,"end_line":180,"end_character":54},"updated":"2017-02-14 03:16:32.000000000","message":"maybe you can use assertEmpty(missing_security_groups)","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e2ff686589a5f460f5ea612d6c87824af1b7a436","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertEqual(0,"},{"line_number":180,"context_line":"                         len(missing_security_groups),"},{"line_number":181,"context_line":"                         \"Failed to find security_groups %s in fetched list\" %"},{"line_number":182,"context_line":"                         \u0027, \u0027.join(i for i in missing_security_groups))"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_d0c62999","line":182,"range":{"start_line":182,"start_character":46,"end_line":182,"end_character":69},"updated":"2017-02-14 03:16:32.000000000","message":"fetched_security_groups_id ?","commit_id":"ec6f4bfbba2d6e9daf561d94e07f2cbb4c516d81"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"fafb5358e7564e9aa33f14f2693e713dcf5cb66a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        assigned_security_groups_ids \u003d [sg[\u0027id\u0027], sg2[\u0027id\u0027]]"},{"line_number":156,"context_line":"        # Create server and add the security group created"},{"line_number":157,"context_line":"        # above to the server we just created"},{"line_number":158,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":159,"context_line":"        server_id \u003d server[\u0027id\u0027]"},{"line_number":160,"context_line":"        # add security groups to server"},{"line_number":161,"context_line":"        self.servers_client.add_security_group(server_id, name\u003dsg[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa31d9ce_593221a8","line":158,"updated":"2017-02-15 11:21:37.000000000","message":"Given that you are not reusing this \"server\" variable, you could have done:\n\nserver_id \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)[\u0027id\u0027]","commit_id":"2ce75b6f3def10d40c06d943b9f87bd5e4d1eac3"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"fafb5358e7564e9aa33f14f2693e713dcf5cb66a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"             if p not in fetched_security_groups_ids]"},{"line_number":173,"context_line":"        self.assertEmpty(missing_security_groups,"},{"line_number":174,"context_line":"                         \"Failed to find security_groups %s in fetched list\" %"},{"line_number":175,"context_line":"                         \u0027, \u0027.join(i for i in missing_security_groups))"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa31d9ce_79aa8586","line":175,"updated":"2017-02-15 11:21:37.000000000","message":"The join here is weird. You are using a generator comprehension but not \"transforming\" the items. You could do just:\n\n\u0027, \u0027.join(missing_security_groups))","commit_id":"2ce75b6f3def10d40c06d943b9f87bd5e4d1eac3"}],"tempest/lib/services/compute/servers_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"6db43e0f42550d412d6d92cf3b2f9faf2753516a","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        http://developer.openstack.org/api-ref-compute-v2.1.html#listSecurityGroupsByServer"},{"line_number":725,"context_line":"        \"\"\""},{"line_number":726,"context_line":"        resp, body \u003d self.get(\"servers/%s/os-security-groups\" % server_id)"},{"line_number":727,"context_line":"        body \u003d json.loads(body)"},{"line_number":728,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_7f0d698f","line":727,"updated":"2017-02-13 14:56:39.000000000","message":"Would you mind adding the corresponding json schema ? (the validate_response() call)","commit_id":"a3ee3525298576a0c7baf5f214ac8e495affa40a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6a115c56cf565e45386dda84629951c8d31f2589","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from six.moves.urllib import parse as urllib"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.lib.api_schema.response.compute.v2_1 import \\"},{"line_number":23,"context_line":"    security_groups as schema_of_security_groups"},{"line_number":24,"context_line":"from tempest.lib.api_schema.response.compute.v2_1 import servers as schema"},{"line_number":25,"context_line":"from tempest.lib.api_schema.response.compute.v2_16 import servers as schemav216"},{"line_number":26,"context_line":"from tempest.lib.api_schema.response.compute.v2_19 import servers as schemav219"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa31d9ce_65081229","line":23,"range":{"start_line":23,"start_character":23,"end_line":23,"end_character":48},"updated":"2017-02-15 12:52:03.000000000","message":"you can name it security_groups_schema","commit_id":"3f69fdc6608f250b744c16b890c882d069b00c37"}]}
