)]}'
{"nova/api/openstack/compute/contrib/keypairs.py":[{"author":{"_account_id":518,"name":"Soren Hansen","email":"soren@linux2go.dk","username":"soren"},"change_message_id":"1e535ba285549035f1848c24303649467c45144e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"class KeypairController(object):"},{"line_number":49,"context_line":"    \"\"\" Keypair API controller for the OpenStack API \"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    \"\"\"The Host Aggregates API controller for the OpenStack API.\"\"\""},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        self.api \u003d compute_api.KeypairAPI()"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F8eg%3D","line":51,"updated":"2012-05-14 08:09:51.000000000","message":"No, it\u0027s not :)","commit_id":"05987671295ef3e874785597782f8d29f29f3b81"}],"nova/compute/api.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"3295cc595fec2812e692fcd3f99310e79cac609f","unresolved":false,"context_lines":[{"line_number":1928,"context_line":"        except exception.NotFound:"},{"line_number":1929,"context_line":"            pass"},{"line_number":1930,"context_line":""},{"line_number":1931,"context_line":"    def import_key_pair(self, context, key_name, public_key):"},{"line_number":1932,"context_line":"        \"\"\"Import a key pair using an existing public key.\"\"\""},{"line_number":1933,"context_line":"        self._validate_keypair_name(context, key_name)"},{"line_number":1934,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9Bo%3D","line":1931,"updated":"2012-05-11 14:24:52.000000000","message":"The only suggestion I have here is to explicitly pass in the user_id rather than extracting it from context within import, create, delete, get.","commit_id":"eaa91e837ce2998600e532c6b9e39ac6a95f9cb6"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"070ec621e91a5984746564f5110ef294900cf96f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2011 Piston Cloud Computing, Inc."},{"line_number":6,"context_line":"# Copyright 2012 (c) Red Hat, Inc."},{"line_number":7,"context_line":"# All Rights Reserved."},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8b4%3D","line":6,"updated":"2012-05-14 13:31:11.000000000","message":"The (c) thing is in the wrong place, it would be:\n\n  # Copyright (c) 2012 Red Hat, Inc.\n\nbut it\u0027s fine to just do:\n\n  # Copyright 2012 Red Hat, Inc.","commit_id":"b0b5807129171c3594f3d39327c44e6e52b9745e"},{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"8ae58f1173aac46fdbae18f7d87d8f563bf38c35","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2011 Piston Cloud Computing, Inc."},{"line_number":6,"context_line":"# Copyright 2012 (c) Red Hat, Inc."},{"line_number":7,"context_line":"# All Rights Reserved."},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8VE%3D","line":6,"in_reply_to":"AAAAHX%2F%2F8b4%3D","updated":"2012-05-14 15:41:54.000000000","message":"Gotcha. Will fix this up shortly.","commit_id":"b0b5807129171c3594f3d39327c44e6e52b9745e"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"fddeb98fb347144b3cee23329f22f606f6a549ea","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"        return result"},{"line_number":1914,"context_line":""},{"line_number":1915,"context_line":""},{"line_number":1916,"context_line":"class KeypairAPI(base.Base):"},{"line_number":1917,"context_line":"    \"\"\"Sub-set of the Compute Manager API for managing key pairs.\"\"\""},{"line_number":1918,"context_line":"    def __init__(self, **kwargs):"},{"line_number":1919,"context_line":"        super(KeypairAPI, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8bc%3D","line":1916,"updated":"2012-05-14 13:37:07.000000000","message":"Is there any reason to lump this into nova/compute/api.py ?\n\nHow about:\n\n  nova/api/keypairs.py\n\nor\n\n  nova/compute/keypairs.py","commit_id":"b0b5807129171c3594f3d39327c44e6e52b9745e"},{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"8ae58f1173aac46fdbae18f7d87d8f563bf38c35","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"        return result"},{"line_number":1914,"context_line":""},{"line_number":1915,"context_line":""},{"line_number":1916,"context_line":"class KeypairAPI(base.Base):"},{"line_number":1917,"context_line":"    \"\"\"Sub-set of the Compute Manager API for managing key pairs.\"\"\""},{"line_number":1918,"context_line":"    def __init__(self, **kwargs):"},{"line_number":1919,"context_line":"        super(KeypairAPI, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8U4%3D","line":1916,"in_reply_to":"AAAAHX%2F%2F8bc%3D","updated":"2012-05-14 15:41:54.000000000","message":"I\u0027d be up for moving it. I thought about doing it as a separate module but just followed suite by putting it into the existing compute API.\n\nIf we move keypairs into its own file I would suggest we also consider moving some of the other classes in the compute/api.py into their own files as well.\n\nPerhaps we can do this in a separate commit?","commit_id":"b0b5807129171c3594f3d39327c44e6e52b9745e"}],"nova/tests/test_api.py":[{"author":{"_account_id":518,"name":"Soren Hansen","email":"soren@linux2go.dk","username":"soren"},"change_message_id":"1e535ba285549035f1848c24303649467c45144e","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        # NOTE(vish): create depends on pool, so call helper directly"},{"line_number":296,"context_line":"        keypair_api \u003d compute_api.KeypairAPI()"},{"line_number":297,"context_line":"        cxtx \u003d context.get_admin_context()"},{"line_number":298,"context_line":"        return keypair_api.create_key_pair(cxtx, cxtx.user_id, keyname)"},{"line_number":299,"context_line":"        self.expect_http()"},{"line_number":300,"context_line":"        self.mox.ReplayAll()"},{"line_number":301,"context_line":"        rv \u003d self.ec2.get_all_key_pairs()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F8ek%3D","line":298,"updated":"2012-05-14 08:09:51.000000000","message":"Is this some leftover debugging stuff?","commit_id":"05987671295ef3e874785597782f8d29f29f3b81"}],"nova/tests/test_compute.py":[{"author":{"_account_id":518,"name":"Soren Hansen","email":"soren@linux2go.dk","username":"soren"},"change_message_id":"1e535ba285549035f1848c24303649467c45144e","unresolved":false,"context_lines":[{"line_number":3944,"context_line":"                                                   self.ctxt.user_id,"},{"line_number":3945,"context_line":"                                                   \u0027foo\u0027,"},{"line_number":3946,"context_line":"                                                   self.pub_key)"},{"line_number":3947,"context_line":"        self.assertEqual(\u0027foo\u0027, keypair[\u0027name\u0027])"},{"line_number":3948,"context_line":""},{"line_number":3949,"context_line":"    def test_import_keypair_bad_public_key(self):"},{"line_number":3950,"context_line":"        self.assertRaises(exception.InvalidKeypair,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F8eo%3D","line":3947,"updated":"2012-05-14 08:09:51.000000000","message":"You should probably verify the contents as well?","commit_id":"05987671295ef3e874785597782f8d29f29f3b81"}]}
