)]}'
{"novaclient/tests/functional/test_keypairs.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return keypair"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _test_import_keypair(self):"},{"line_number":67,"context_line":"        pub_key, fingerprint \u003d fake_crypto.get_ssh_pub_key_and_fingerprint()"},{"line_number":68,"context_line":"        pub_key_file \u003d self._create_public_key_file(public_key)"},{"line_number":69,"context_line":"        key_name \u003d self._create_keypair(pub_key\u003dpub_key_file)"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_e708fedb","line":66,"updated":"2015-07-30 22:49:18.000000000","message":"This test doesn\u0027t run because it\u0027s private. I don\u0027t see it called anywhere in this file either","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return keypair"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _test_import_keypair(self):"},{"line_number":67,"context_line":"        pub_key, fingerprint \u003d fake_crypto.get_ssh_pub_key_and_fingerprint()"},{"line_number":68,"context_line":"        pub_key_file \u003d self._create_public_key_file(public_key)"},{"line_number":69,"context_line":"        key_name \u003d self._create_keypair(pub_key\u003dpub_key_file)"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_71e8e916","line":66,"in_reply_to":"3a50d1a3_e708fedb","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertIn(key_name, keypair)"},{"line_number":110,"context_line":"        self.assertIn(\u0027x509\u0027, keypair)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _test_import_keypair(self):"},{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_471f7209","line":112,"updated":"2015-07-30 22:49:18.000000000","message":"This test doesn\u0027t run because it\u0027s private. I don\u0027t see it called anywhere in this file either","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertIn(key_name, keypair)"},{"line_number":110,"context_line":"        self.assertIn(\u0027x509\u0027, keypair)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _test_import_keypair(self):"},{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_91eb3512","line":112,"in_reply_to":"3a50d1a3_471f7209","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertIn(\u0027x509\u0027, keypair)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _test_import_keypair(self):"},{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _test_import_keypair_x509(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_87db3a4f","line":113,"updated":"2015-07-30 22:49:18.000000000","message":"Base class TestKeypairsNovaClient has no method \"test_import_keypair\" (it has \"_test_import_keypair\")","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertIn(\u0027x509\u0027, keypair)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _test_import_keypair(self):"},{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _test_import_keypair_x509(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_31f26107","line":113,"in_reply_to":"3a50d1a3_87db3a4f","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _test_import_keypair_x509(self):"},{"line_number":117,"context_line":"        certif, fingerprint \u003d fake_crypto.get_x509_cert_and_fingerprint()"},{"line_number":118,"context_line":"        pub_key_file \u003d self._create_public_key_file(certif)"},{"line_number":119,"context_line":"        key_name \u003d self._create_keypair(key_type\u003d\u0027x509\u0027, pub_key\u003dpub_key_file)"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_27ed86ef","line":116,"updated":"2015-07-30 22:49:18.000000000","message":"This test doesn\u0027t run because it\u0027s private. I don\u0027t see it called anywhere in this file either","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()"},{"line_number":114,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _test_import_keypair_x509(self):"},{"line_number":117,"context_line":"        certif, fingerprint \u003d fake_crypto.get_x509_cert_and_fingerprint()"},{"line_number":118,"context_line":"        pub_key_file \u003d self._create_public_key_file(certif)"},{"line_number":119,"context_line":"        key_name \u003d self._create_keypair(key_type\u003d\u0027x509\u0027, pub_key\u003dpub_key_file)"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_51f5adea","line":116,"in_reply_to":"3a50d1a3_27ed86ef","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9f8e76d826516365fe2c2a0a3d0d710bea61419d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def test_import_keypair(self):"},{"line_number":115,"context_line":"        pub_key, fingerprint \u003d fake_crypto.get_ssh_pub_key_and_fingerprint()"},{"line_number":116,"context_line":"        pub_key_file \u003d self._create_public_key_file(pub_key)"},{"line_number":117,"context_line":"        keypair \u003d self._test_import_keypair(fingerprint, pub_key\u003dpub_key_file)"},{"line_number":118,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_import_keypair_x509(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a4dcd0f_67728b4b","line":117,"updated":"2015-08-04 22:00:06.000000000","message":"I think you could have left this part the way it was\n\n keypair \u003d super(TestKeypairsNovaClientV22, self).test_import_keypair()\n\ninstead of copying the code, since you fixed the method name in TestKeypairsNovaClient","commit_id":"0b46f65530dbf8d458139c53be338c07bc2a400f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"029bc6acc611fc20d5be7b7f770dc3dc79786f9f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def test_import_keypair(self):"},{"line_number":115,"context_line":"        pub_key, fingerprint \u003d fake_crypto.get_ssh_pub_key_and_fingerprint()"},{"line_number":116,"context_line":"        pub_key_file \u003d self._create_public_key_file(pub_key)"},{"line_number":117,"context_line":"        keypair \u003d self._test_import_keypair(fingerprint, pub_key\u003dpub_key_file)"},{"line_number":118,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_import_keypair_x509(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a4dcd0f_d1e3e2a2","line":117,"in_reply_to":"1a4dcd0f_40e06cfa","updated":"2015-08-05 19:15:12.000000000","message":"I see, I think that makes sense","commit_id":"0b46f65530dbf8d458139c53be338c07bc2a400f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"49db295f479770e8e94fae7ef0385f696ab7d25e","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def test_import_keypair(self):"},{"line_number":115,"context_line":"        pub_key, fingerprint \u003d fake_crypto.get_ssh_pub_key_and_fingerprint()"},{"line_number":116,"context_line":"        pub_key_file \u003d self._create_public_key_file(pub_key)"},{"line_number":117,"context_line":"        keypair \u003d self._test_import_keypair(fingerprint, pub_key\u003dpub_key_file)"},{"line_number":118,"context_line":"        self.assertIn(\u0027ssh\u0027, keypair)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_import_keypair_x509(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a4dcd0f_40e06cfa","line":117,"in_reply_to":"1a4dcd0f_67728b4b","updated":"2015-08-05 15:07:33.000000000","message":"Imo, test method should not return any values, that is why I create a separate method.","commit_id":"0b46f65530dbf8d458139c53be338c07bc2a400f"}],"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"d4e740637a6e44b7d6e09b21a9a84952a375594b","unresolved":false,"context_lines":[{"line_number":2183,"context_line":""},{"line_number":2184,"context_line":"class FakeSessionClient(fakes.FakeClient, client.Client):"},{"line_number":2185,"context_line":""},{"line_number":2186,"context_line":"    def __init__(self, api_version, *args, **kwargs):"},{"line_number":2187,"context_line":"        client.Client.__init__(self, \u0027username\u0027, \u0027password\u0027,"},{"line_number":2188,"context_line":"                               \u0027project_id\u0027, \u0027auth_url\u0027,"},{"line_number":2189,"context_line":"                               extensions\u003dkwargs.get(\u0027extensions\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa53dc9_67970649","line":2186,"updated":"2015-04-08 13:17:29.000000000","message":"Looks like not related to this patch. Andrey, could you please move it to one of changes about microversions?","commit_id":"08c51966e85e37ab9a331778377c6b8151c733b5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"36a25c2877cf3279c29ed8cec9275263ba03b2ce","unresolved":false,"context_lines":[{"line_number":2183,"context_line":""},{"line_number":2184,"context_line":"class FakeSessionClient(fakes.FakeClient, client.Client):"},{"line_number":2185,"context_line":""},{"line_number":2186,"context_line":"    def __init__(self, api_version, *args, **kwargs):"},{"line_number":2187,"context_line":"        client.Client.__init__(self, \u0027username\u0027, \u0027password\u0027,"},{"line_number":2188,"context_line":"                               \u0027project_id\u0027, \u0027auth_url\u0027,"},{"line_number":2189,"context_line":"                               extensions\u003dkwargs.get(\u0027extensions\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa53dc9_e74b1686","line":2186,"in_reply_to":"9aa53dc9_67970649","updated":"2015-04-08 13:26:11.000000000","message":"imo, this piece of code should be left here, because it can not be tested without tests of real microversion.","commit_id":"08c51966e85e37ab9a331778377c6b8151c733b5"}],"novaclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":2364,"context_line":"        self.assertRaises(exceptions.ResourceNotFound,"},{"line_number":2365,"context_line":"                          self.run_command,"},{"line_number":2366,"context_line":"                          \"ssh --ipv6 --network nonexistent server\")"},{"line_number":2367,"context_line":""},{"line_number":2368,"context_line":"    def _check_keypair_add(self, expected_key_type\u003dNone, extra_args\u003d\u0027\u0027,"},{"line_number":2369,"context_line":"                           api_version\u003dNone):"},{"line_number":2370,"context_line":"        self.run_command(\"keypair-add %s test\" % extra_args,"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_47f7728c","line":2367,"updated":"2015-07-30 22:49:18.000000000","message":"General question on the keypairs tests: Shouldn\u0027t we still test the default old api version and not only 2.2 in these?","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":2364,"context_line":"        self.assertRaises(exceptions.ResourceNotFound,"},{"line_number":2365,"context_line":"                          self.run_command,"},{"line_number":2366,"context_line":"                          \"ssh --ipv6 --network nonexistent server\")"},{"line_number":2367,"context_line":""},{"line_number":2368,"context_line":"    def _check_keypair_add(self, expected_key_type\u003dNone, extra_args\u003d\u0027\u0027,"},{"line_number":2369,"context_line":"                           api_version\u003dNone):"},{"line_number":2370,"context_line":"        self.run_command(\"keypair-add %s test\" % extra_args,"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_d1453d43","line":2367,"in_reply_to":"3a50d1a3_47f7728c","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"}],"novaclient/tests/v1_1/test_shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"dcfa8272e048fb9d265a0a354c2341f600b18f82","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"                          \"ssh --ipv6 --network nonexistent server\")"},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":"    def _check_keypair_add(self, expected_key_type, *args):"},{"line_number":2250,"context_line":"        extra_args \u003d \u0027 \u0027.join(args)"},{"line_number":2251,"context_line":"        self.run_command(\u0027keypair-add %s test\u0027 % extra_args)"},{"line_number":2252,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/os-keypairs\u0027,"},{"line_number":2253,"context_line":"                           {\u0027keypair\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_125beaf6","line":2250,"updated":"2014-11-21 19:54:36.000000000","message":"Why not drop the *args and just pass an extra_args parameter that defaults to the empty string?  e.g.:\n\n    def _check_keypair_add(self, expected_key_type, extra_args\u003d\u0027\u0027):\n        …\n\n    def test_keypair_add_ssh(self):\n        self._check_keypair_add(\u0027ssh\u0027, \u0027--key-type ssh\u0027)","commit_id":"6b02258703e1c3fc502736ae13cd4d7c993e949c"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"c00708436e58d041cd60593821f96dbe22c1a510","unresolved":false,"context_lines":[{"line_number":2264,"context_line":""},{"line_number":2265,"context_line":"    @mock.patch.object(builtins, \u0027open\u0027,"},{"line_number":2266,"context_line":"                       mock.mock_open(read_data\u003d\u0027FAKE_PUBLIC_KEY\u0027))"},{"line_number":2267,"context_line":"    def _check_keypair_import(self, expected_key_type, *args):"},{"line_number":2268,"context_line":"        extra_args \u003d \u0027 \u0027.join(args)"},{"line_number":2269,"context_line":"        self.run_command(\u0027keypair-add --pub-key test.pub %s test\u0027 % extra_args)"},{"line_number":2270,"context_line":"        self.assert_called("}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_f8d86af2","line":2267,"updated":"2014-11-27 11:43:23.000000000","message":"You should remove *ars and use extra_args just as you did above.","commit_id":"7c58034dc8c2211493b36f115ade3c582d2e515f"}],"novaclient/v1_1/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"dcfa8272e048fb9d265a0a354c2341f600b18f82","unresolved":false,"context_lines":[{"line_number":2805,"context_line":"    help\u003dargparse.SUPPRESS)"},{"line_number":2806,"context_line":"@utils.arg(\u0027--key-type\u0027, metavar\u003d\u0027\u003ckey-type\u003e\u0027, default\u003d\u0027ssh\u0027,"},{"line_number":2807,"context_line":"           help\u003d\u0027Keypair type. Can be ssh or x509.\u0027)"},{"line_number":2808,"context_line":"@utils.arg(\u0027--key_type\u0027, help\u003dargparse.SUPPRESS)"},{"line_number":2809,"context_line":"def do_keypair_add(cs, args):"},{"line_number":2810,"context_line":"    \"\"\"Create a new key pair for use with servers.\"\"\""},{"line_number":2811,"context_line":"    name \u003d args.name"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_7200aeab","line":2808,"updated":"2014-11-21 19:54:36.000000000","message":"Let\u0027s not add immediately deprecated options.  The only reason for the \u0027_\u0027 forms of options above is to keep from inconveniencing users that are still using that form and haven\u0027t switched to the form with dashes.","commit_id":"6b02258703e1c3fc502736ae13cd4d7c993e949c"}],"novaclient/v2/keypairs.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c36c61fc0ba9814ad984bdd437614d047a98ffe","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        :param name: name for the keypair to create"},{"line_number":88,"context_line":"        :param public_key: existing public key to import"},{"line_number":89,"context_line":"        :param kwargs: \"key_pair\" - keypair type to create[available since 2.2]"},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        body \u003d {\u0027keypair\u0027: {\u0027name\u0027: name,"},{"line_number":92,"context_line":"                            \u0027type\u0027: key_type}}"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_07c3aa39","line":89,"range":{"start_line":89,"start_character":15,"end_line":89,"end_character":33},"updated":"2015-07-30 22:49:18.000000000","message":"The param name doesn\u0027t match the signature here\n\ns/kwargs: \"key_pair\"/key_type/","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"252c8c4c339dec38ed2662aa33c1711b99b5341f","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        :param name: name for the keypair to create"},{"line_number":88,"context_line":"        :param public_key: existing public key to import"},{"line_number":89,"context_line":"        :param kwargs: \"key_pair\" - keypair type to create[available since 2.2]"},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        body \u003d {\u0027keypair\u0027: {\u0027name\u0027: name,"},{"line_number":92,"context_line":"                            \u0027type\u0027: key_type}}"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a50d1a3_31a4a106","line":89,"in_reply_to":"3a50d1a3_07c3aa39","updated":"2015-08-01 12:33:09.000000000","message":"Done","commit_id":"165374c694118ffd2e74600481937451af0d3bc5"}]}
