)]}'
{"tempest/api/compute/v3/keypairs/test_keypairs.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            k_name \u003d data_utils.rand_name(\u0027keypair-\u0027)"},{"line_number":38,"context_line":"            resp, keypair \u003d self.client.create_keypair(k_name)"},{"line_number":39,"context_line":"            # Need to pop these keys so that our compare doesn\u0027t fail later,"},{"line_number":40,"context_line":"            # as the keypair dicts from list API doesn\u0027t have them."},{"line_number":41,"context_line":"            keypair.pop(\u0027private_key\u0027)"},{"line_number":42,"context_line":"            keypair.pop(\u0027user_id\u0027)"},{"line_number":43,"context_line":"            self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zFY%3D","line":40,"updated":"2013-12-05 19:44:13.000000000","message":"If you create them, surely they need to be cleaned up afterwards? Rather than doing a list at the bottom, which is code we might not reach, please use addCleanup instead.","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                         \"to the requested name\")"},{"line_number":76,"context_line":"        self.assertTrue(private_key is not None,"},{"line_number":77,"context_line":"                        \"Field private_key is empty or not found.\")"},{"line_number":78,"context_line":"        resp, _ \u003d self.client.delete_keypair(k_name)"},{"line_number":79,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @attr(type\u003d\u0027gate\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zEg%3D","line":78,"updated":"2013-12-05 19:44:13.000000000","message":"Again, this is after assertions so may not be reached - please be more defensive here. (e.g. use addCleanUp)","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # Keypair should be created, Got details by name and deleted"},{"line_number":84,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair-\u0027)"},{"line_number":85,"context_line":"        resp, keypair \u003d self.client.create_keypair(k_name)"},{"line_number":86,"context_line":"        self.addCleanup(self.client.delete_keypair, k_name)"},{"line_number":87,"context_line":"        resp, keypair_detail \u003d self.client.get_keypair(k_name)"},{"line_number":88,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":89,"context_line":"        self.assertIn(\u0027name\u0027, keypair_detail)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zEI%3D","line":86,"updated":"2013-12-05 19:44:13.000000000","message":"Lovely, thank you!","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(key_name, k_name,"},{"line_number":117,"context_line":"                         \"The created keypair name is not equal \""},{"line_number":118,"context_line":"                         \"to the requested name!\")"},{"line_number":119,"context_line":"        resp, _ \u003d self.client.delete_keypair(k_name)"},{"line_number":120,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zDw%3D","line":119,"updated":"2013-12-05 19:44:13.000000000","message":"But here again we might not reach it, so addCleanup is needed.","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"}],"tempest/api/compute/v3/keypairs/test_keypairs_negative.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        k_name \u003d data_utils.rand_name(\"keypair-\")"},{"line_number":60,"context_line":"        pub_key \u003d \u0027ssh-rsa \u0027 + \u0027A\u0027 * 2048 + \u0027 openstack@ubuntu\u0027"},{"line_number":61,"context_line":"        self.assertRaises(exceptions.BadRequest, self.client.create_keypair,"},{"line_number":62,"context_line":"                          k_name, pub_key)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":65,"context_line":"    def test_create_keypair_with_duplicate_name(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zDU%3D","line":62,"updated":"2013-12-05 19:44:13.000000000","message":"So if this doesn\u0027t throw, we\u0027ll leak a keypair into the test environment. This needs more complex code to avoid that. - All the tests here do.","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b24c2ed5cc8486abcb07e175f07066f158e72b95","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # Now try the same keyname to create another key"},{"line_number":71,"context_line":"        self.assertRaises(exceptions.Conflict, self.client.create_keypair,"},{"line_number":72,"context_line":"                          k_name)"},{"line_number":73,"context_line":"        resp, _ \u003d self.client.delete_keypair(k_name)"},{"line_number":74,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zDE%3D","line":73,"updated":"2013-12-05 19:44:13.000000000","message":"This should be using addCleanup too.","commit_id":"84be699ddcdf9ef744ca8139d2f85c7c69da2daf"}]}
