)]}'
{"tempest/services/nova/json/keypairs_client.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Created on Jan 17, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: patilk"},{"line_number":5,"context_line":"\u0027\u0027\u0027"},{"line_number":6,"context_line":"from tempest.common import rest_client"},{"line_number":7,"context_line":"import json"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nc%3D","line":5,"updated":"2012-01-19 14:46:20.000000000","message":"Please remove this header. We use a standard copyright header in OpenStack projects that still needs to be added to files that do not have it. We will add an Authors file that you will have your name added to.","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Created on Jan 17, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: patilk"},{"line_number":5,"context_line":"\u0027\u0027\u0027"},{"line_number":6,"context_line":"from tempest.common import rest_client"},{"line_number":7,"context_line":"import json"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Kk%3D","line":5,"in_reply_to":"AAAAD3%2F%2F8nc%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done. It was eclipse which introduced this nd i forgot to remove it from this file.","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        self.headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":16,"context_line":"                        \u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def list(self):"},{"line_number":19,"context_line":"        resp, body \u003d self.client.get(\"/os-keypairs\")"},{"line_number":20,"context_line":"        body \u003d json.loads(body)"},{"line_number":21,"context_line":"        #Each returned keypair is embedded within an unnecessary \u0027keypair\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nM%3D","line":18,"updated":"2012-01-19 14:46:20.000000000","message":"Please rename to list_keypairs() to be consistent with the other client classes. Same for get, create and delete below","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        self.headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":16,"context_line":"                        \u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def list(self):"},{"line_number":19,"context_line":"        resp, body \u003d self.client.get(\"/os-keypairs\")"},{"line_number":20,"context_line":"        body \u003d json.loads(body)"},{"line_number":21,"context_line":"        #Each returned keypair is embedded within an unnecessary \u0027keypair\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Kg%3D","line":18,"in_reply_to":"AAAAD3%2F%2F8nM%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        resp, body \u003d self.client.get(\"/os-keypairs\")"},{"line_number":20,"context_line":"        body \u003d json.loads(body)"},{"line_number":21,"context_line":"        #Each returned keypair is embedded within an unnecessary \u0027keypair\u0027"},{"line_number":22,"context_line":"        #element which is a deviation from other resources like floating-ips, "},{"line_number":23,"context_line":"        #servers, etc. A bug?"},{"line_number":24,"context_line":"        #So we shall remove the leading key keypair and return"},{"line_number":25,"context_line":"        #only the dict containing the keypair info"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nY%3D","line":22,"updated":"2012-01-19 14:46:20.000000000","message":"extra whitespace at the end of this line and also at end of file to remove...","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        resp, body \u003d self.client.get(\"/os-keypairs\")"},{"line_number":20,"context_line":"        body \u003d json.loads(body)"},{"line_number":21,"context_line":"        #Each returned keypair is embedded within an unnecessary \u0027keypair\u0027"},{"line_number":22,"context_line":"        #element which is a deviation from other resources like floating-ips, "},{"line_number":23,"context_line":"        #servers, etc. A bug?"},{"line_number":24,"context_line":"        #So we shall remove the leading key keypair and return"},{"line_number":25,"context_line":"        #only the dict containing the keypair info"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Kc%3D","line":22,"in_reply_to":"AAAAD3%2F%2F8nY%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        #element which is a deviation from other resources like floating-ips, "},{"line_number":23,"context_line":"        #servers, etc. A bug?"},{"line_number":24,"context_line":"        #So we shall remove the leading key keypair and return"},{"line_number":25,"context_line":"        #only the dict containing the keypair info"},{"line_number":26,"context_line":"        new_list \u003d list()"},{"line_number":27,"context_line":"        for keypair in body[\u0027keypairs\u0027]:"},{"line_number":28,"context_line":"            new_list.append(keypair[\u0027keypair\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nQ%3D","line":25,"updated":"2012-01-19 14:46:20.000000000","message":"For right now, let\u0027s ensure that the output produces the expected result per the spec file. Unfortunately, I\u0027ve not been able to find any spec file for the keypairs extension :( I will ask around to see where that might be.","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        #element which is a deviation from other resources like floating-ips, "},{"line_number":23,"context_line":"        #servers, etc. A bug?"},{"line_number":24,"context_line":"        #So we shall remove the leading key keypair and return"},{"line_number":25,"context_line":"        #only the dict containing the keypair info"},{"line_number":26,"context_line":"        new_list \u003d list()"},{"line_number":27,"context_line":"        for keypair in body[\u0027keypairs\u0027]:"},{"line_number":28,"context_line":"            new_list.append(keypair[\u0027keypair\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8KY%3D","line":25,"in_reply_to":"AAAAD3%2F%2F8nQ%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def create(self, name, pub_key\u003dNone):"},{"line_number":37,"context_line":"        post_body \u003d {\u0027keypair\u0027: {\u0027name\u0027: name}}"},{"line_number":38,"context_line":"        if pub_key:"},{"line_number":39,"context_line":"            post_body [\u0027keypair\u0027] [\u0027public_key\u0027] \u003d pub_key"},{"line_number":40,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":41,"context_line":"        resp, body \u003d self.client.post(\"/os-keypairs\",headers\u003dself.headers, body\u003dpost_body)"},{"line_number":42,"context_line":"        body \u003d json.loads(body)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nI%3D","line":39,"updated":"2012-01-19 14:46:20.000000000","message":"Please remove spaces between variable and brackets. Should be:\n\n post_body[\u0027keypair\u0027][\u0027public_key\u0027] \u003d pub_key","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def create(self, name, pub_key\u003dNone):"},{"line_number":37,"context_line":"        post_body \u003d {\u0027keypair\u0027: {\u0027name\u0027: name}}"},{"line_number":38,"context_line":"        if pub_key:"},{"line_number":39,"context_line":"            post_body [\u0027keypair\u0027] [\u0027public_key\u0027] \u003d pub_key"},{"line_number":40,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":41,"context_line":"        resp, body \u003d self.client.post(\"/os-keypairs\",headers\u003dself.headers, body\u003dpost_body)"},{"line_number":42,"context_line":"        body \u003d json.loads(body)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8KU%3D","line":39,"in_reply_to":"AAAAD3%2F%2F8nI%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if pub_key:"},{"line_number":39,"context_line":"            post_body [\u0027keypair\u0027] [\u0027public_key\u0027] \u003d pub_key"},{"line_number":40,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":41,"context_line":"        resp, body \u003d self.client.post(\"/os-keypairs\",headers\u003dself.headers, body\u003dpost_body)"},{"line_number":42,"context_line":"        body \u003d json.loads(body)"},{"line_number":43,"context_line":"        return resp, body[\u0027keypair\u0027]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nE%3D","line":41,"updated":"2012-01-19 14:46:20.000000000","message":"space needed after , and before headers.\n\nFYI, in order to find these types of issues, do:\n\n pep8 --repeat tempest\n\nfrom the main src dir","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if pub_key:"},{"line_number":39,"context_line":"            post_body [\u0027keypair\u0027] [\u0027public_key\u0027] \u003d pub_key"},{"line_number":40,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":41,"context_line":"        resp, body \u003d self.client.post(\"/os-keypairs\",headers\u003dself.headers, body\u003dpost_body)"},{"line_number":42,"context_line":"        body \u003d json.loads(body)"},{"line_number":43,"context_line":"        return resp, body[\u0027keypair\u0027]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8KQ%3D","line":41,"in_reply_to":"AAAAD3%2F%2F8nE%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"}],"tempest/tests/test_keypairs.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":21,"context_line":"            k_name \u003d rand_name(\u0027keypair-\u0027)"},{"line_number":22,"context_line":"            resp, keypair \u003d self.client.create(k_name)"},{"line_number":23,"context_line":"            #Need to pop these keys so that our compare doesn\u0027t fail later,"},{"line_number":24,"context_line":"            #as the keyapir dicts from list API doesn\u0027t have them."},{"line_number":25,"context_line":"            keypair.pop(\u0027private_key\u0027)"},{"line_number":26,"context_line":"            keypair.pop(\u0027user_id\u0027)"},{"line_number":27,"context_line":"            self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8nA%3D","line":24,"updated":"2012-01-19 14:46:20.000000000","message":"s/keyapir/keypair","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":21,"context_line":"            k_name \u003d rand_name(\u0027keypair-\u0027)"},{"line_number":22,"context_line":"            resp, keypair \u003d self.client.create(k_name)"},{"line_number":23,"context_line":"            #Need to pop these keys so that our compare doesn\u0027t fail later,"},{"line_number":24,"context_line":"            #as the keyapir dicts from list API doesn\u0027t have them."},{"line_number":25,"context_line":"            keypair.pop(\u0027private_key\u0027)"},{"line_number":26,"context_line":"            keypair.pop(\u0027user_id\u0027)"},{"line_number":27,"context_line":"            self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Jk%3D","line":24,"in_reply_to":"AAAAD3%2F%2F8nA%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                fetched_list.index(keypair)"},{"line_number":36,"context_line":"            except ValueError:"},{"line_number":37,"context_line":"                self.fail(\"Created Keypair not found in the fetched list: \""},{"line_number":38,"context_line":"                         + keypair[\u0027name\u0027])"},{"line_number":39,"context_line":"        #Delete all the keypairs created"},{"line_number":40,"context_line":"        for keypair in key_list:"},{"line_number":41,"context_line":"            resp, _ \u003d self.client.delete(keypair[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8mw%3D","line":38,"updated":"2012-01-19 14:46:20.000000000","message":"The above could also be written (a little more Pythonically) like so:\n\n missing_kps \u003d [kp for kp in key_list if kp not in fetched_list]\n self.assertFalse(missing_kps, \"Failed to find keypairs %s in fetched list\"\n                  % \u0027, \u0027.join(missing_kps))","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                fetched_list.index(keypair)"},{"line_number":36,"context_line":"            except ValueError:"},{"line_number":37,"context_line":"                self.fail(\"Created Keypair not found in the fetched list: \""},{"line_number":38,"context_line":"                         + keypair[\u0027name\u0027])"},{"line_number":39,"context_line":"        #Delete all the keypairs created"},{"line_number":40,"context_line":"        for keypair in key_list:"},{"line_number":41,"context_line":"            resp, _ \u003d self.client.delete(keypair[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8J8%3D","line":38,"in_reply_to":"AAAAD3%2F%2F8mw%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done. Thanks for the nice code. I am still a beginner in python :)","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        resp, keypair \u003d self.client.create(k_name)"},{"line_number":64,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":65,"context_line":"        #Need to pop these keys so that our compare doesn\u0027t fail later,"},{"line_number":66,"context_line":"        #as the keyapir dicts from get API doesn\u0027t have them."},{"line_number":67,"context_line":"        keypair.pop(\u0027private_key\u0027)"},{"line_number":68,"context_line":"        keypair.pop(\u0027user_id\u0027)"},{"line_number":69,"context_line":"        #Now fetch the created keypair by its name"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8m0%3D","line":66,"updated":"2012-01-19 14:46:20.000000000","message":"s/keyapir/keypair","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        resp, keypair \u003d self.client.create(k_name)"},{"line_number":64,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":65,"context_line":"        #Need to pop these keys so that our compare doesn\u0027t fail later,"},{"line_number":66,"context_line":"        #as the keyapir dicts from get API doesn\u0027t have them."},{"line_number":67,"context_line":"        keypair.pop(\u0027private_key\u0027)"},{"line_number":68,"context_line":"        keypair.pop(\u0027user_id\u0027)"},{"line_number":69,"context_line":"        #Now fetch the created keypair by its name"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Jo%3D","line":66,"in_reply_to":"AAAAD3%2F%2F8m0%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"368ac61a182aefb5e96d906d6855fe2a4fce20de","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \"\"\"Keypair should be created with a given public key\"\"\""},{"line_number":82,"context_line":"        k_name \u003d rand_name(\u0027keypair-\u0027)"},{"line_number":83,"context_line":"        #This shows up in pep8 but can\u0027t break it over multiple lines"},{"line_number":84,"context_line":"        pub_key \u003d \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsNe3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vdaZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbwKAxfsdF9laBYVsex3m3Wmui3uYrKyumsoJn2g9GNnG1PI1mrVjZ61i0GY3khna+wzlTpCCmy5HNlrmbj3XLqBUpipTOXmsnr4sChzC53KCd8LXuwc1i/CZPvF+3XipvAgFSE53pCtLOeB1kYMOBaiUPLQTWXR3JpckqFIQwhIH0zoHlJvZE8hh90XcPojYN56tI0OlrGqojbediJYD0rUsJu4weZpbn8vilb3JuDY+jwssnSA8wzBx3A/8y9Pp1B nova@ubuntu\""},{"line_number":85,"context_line":"        resp, keypair \u003d self.client.create(k_name, pub_key)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertFalse(\u0027private_key\u0027 in keypair,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8m8%3D","line":84,"updated":"2012-01-19 14:46:20.000000000","message":"You can break it over multiple lines like so:\n\n pub_key \u003d (\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs\"\n            \"Ne3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vd\"\n            \"aZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbw\"\n            \"KAxfsdF9laBYVsex3m3Wmui3uYrKyumsoJn2g9GNnG1P\"\n            \"I1mrVjZ61i0GY3khna+wzlTpCCmy5HNlrmbj3XLqBUpip\"\n            \"TOXmsnr4sChzC53KCd8LXuwc1i/CZPvF+3XipvAgFSE53pCt\"\n            \"LOeB1kYMOBaiUPLQTWXR3JpckqFIQwhIH0zoHlJvZE8hh90\"\n            \"XcPojYN56tI0OlrGqojbediJYD0rUsJu4weZpbn8vilb3JuDY+jws\"\n            \"snSA8wzBx3A/8y9Pp1B nova@ubuntu\")","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"},{"author":{"_account_id":1836,"name":"kavan-patil","username":"kavan-patil"},"change_message_id":"8e725eeaab9a148e7e57d3ed1757842e46deb356","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \"\"\"Keypair should be created with a given public key\"\"\""},{"line_number":82,"context_line":"        k_name \u003d rand_name(\u0027keypair-\u0027)"},{"line_number":83,"context_line":"        #This shows up in pep8 but can\u0027t break it over multiple lines"},{"line_number":84,"context_line":"        pub_key \u003d \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsNe3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vdaZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbwKAxfsdF9laBYVsex3m3Wmui3uYrKyumsoJn2g9GNnG1PI1mrVjZ61i0GY3khna+wzlTpCCmy5HNlrmbj3XLqBUpipTOXmsnr4sChzC53KCd8LXuwc1i/CZPvF+3XipvAgFSE53pCtLOeB1kYMOBaiUPLQTWXR3JpckqFIQwhIH0zoHlJvZE8hh90XcPojYN56tI0OlrGqojbediJYD0rUsJu4weZpbn8vilb3JuDY+jwssnSA8wzBx3A/8y9Pp1B nova@ubuntu\""},{"line_number":85,"context_line":"        resp, keypair \u003d self.client.create(k_name, pub_key)"},{"line_number":86,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":87,"context_line":"        self.assertFalse(\u0027private_key\u0027 in keypair,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F8Js%3D","line":84,"in_reply_to":"AAAAD3%2F%2F8m8%3D","updated":"2012-01-20 11:18:23.000000000","message":"Done. I never realized this!","commit_id":"a1ca9c2dd2b9b27cc48e646b1cd6f3842dd663e4"}]}
