)]}'
{"functional/common/test.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b0e32c7b672a9c25fd9c9ff32306538a82d58c74","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ComputeTestsBase(TestCase):"},{"line_number":191,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":192,"context_line":"    import uuid"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def keypair_create(self, name\u003dstr(uuid.uuid4())):"},{"line_number":195,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_45aea281","line":192,"updated":"2016-03-31 13:38:36.000000000","message":"imports should be at the top of the file","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"f75cce2a07453ee23ba1fbe0394e333666fc8c22","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ComputeTestsBase(TestCase):"},{"line_number":191,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":192,"context_line":"    import uuid"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def keypair_create(self, name\u003dstr(uuid.uuid4())):"},{"line_number":195,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_53a2e599","line":192,"in_reply_to":"ba0121b8_45aea281","updated":"2016-03-31 15:25:41.000000000","message":"Done","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b0e32c7b672a9c25fd9c9ff32306538a82d58c74","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":192,"context_line":"    import uuid"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def keypair_create(self, name\u003dstr(uuid.uuid4())):"},{"line_number":195,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"},{"line_number":196,"context_line":"        self.addCleanup(self.keypair_delete, name, True)"},{"line_number":197,"context_line":"        if not raw_output:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_ca748137","line":194,"updated":"2016-03-31 13:38:36.000000000","message":"Please use oslo_utils.uuidutils.generate_uuid","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"f75cce2a07453ee23ba1fbe0394e333666fc8c22","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":192,"context_line":"    import uuid"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def keypair_create(self, name\u003dstr(uuid.uuid4())):"},{"line_number":195,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"},{"line_number":196,"context_line":"        self.addCleanup(self.keypair_delete, name, True)"},{"line_number":197,"context_line":"        if not raw_output:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_b3ab8174","line":194,"in_reply_to":"ba0121b8_ca748137","updated":"2016-03-31 15:25:41.000000000","message":"Done","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4a88319ce373557bcb3d1778e307bca1492f23a7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return \u0027{0}{1}\u0027.format(name, random.randint(1, 0x7fffffff))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class ComputeTestsBase(TestCase):"},{"line_number":197,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def keypair_create(self, name\u003duuidutils.generate_uuid()):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_bf6dfbcd","line":196,"updated":"2016-03-31 17:47:22.000000000","message":"This should not be here.  It has only keypair-related methods, so should be in test_keypair.py.\n\nIn fact, I\u0027m not sure exactly what these are used for...","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"0e5e533020c369cd42bd82ec55739777f78be53e","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return \u0027{0}{1}\u0027.format(name, random.randint(1, 0x7fffffff))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class ComputeTestsBase(TestCase):"},{"line_number":197,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def keypair_create(self, name\u003duuidutils.generate_uuid()):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_7c6af61b","line":196,"in_reply_to":"ba0121b8_bf6dfbcd","updated":"2016-04-04 17:14:04.000000000","message":"Done. I have moved keypair-related methods. I placed them here them to separate cleanups and exception handling out from tests.\nAnd i`d like to keep rand_name() method above, ok? It can be usable for other tests to randomize some entities names.","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8f72df774fe787c0a3391c0b523700abe3a378eb","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            start \u003d end + 1"},{"line_number":181,"context_line":"        return positions"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def rand_name(self, name\u003d\u0027test-\u0027):"},{"line_number":184,"context_line":"        \"\"\"Generate randomized name for entities.\"\"\""},{"line_number":185,"context_line":"        return \u0027{0}{1}\u0027.format(name, random.randint(1, 0x7fffffff))"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_65f4d685","line":185,"range":{"start_line":183,"start_character":0,"end_line":185,"end_character":67},"updated":"2016-04-18 19:15:56.000000000","message":"tempest lib already has a function similar to this and we use it in tests, look at this for an example: https://github.com/openstack/python-openstackclient/blob/52b70a99ed39085256a16a157098cc16ed2e7232/functional/tests/identity/v3/test_domain.py#L13-L22","commit_id":"e133306cdb9d820b755dde72d1064adff5fc5630"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"ce51e7078a04fb390d2fe064acacc2b982822ab2","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            start \u003d end + 1"},{"line_number":181,"context_line":"        return positions"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def rand_name(self, name\u003d\u0027test-\u0027):"},{"line_number":184,"context_line":"        \"\"\"Generate randomized name for entities.\"\"\""},{"line_number":185,"context_line":"        return \u0027{0}{1}\u0027.format(name, random.randint(1, 0x7fffffff))"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_4c7f2366","line":185,"range":{"start_line":183,"start_character":0,"end_line":185,"end_character":67},"in_reply_to":"1a122d0e_65f4d685","updated":"2016-04-19 12:07:56.000000000","message":"Thanks!","commit_id":"e133306cdb9d820b755dde72d1064adff5fc5630"}],"functional/tests/compute/v2/test_keypair.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b0e32c7b672a9c25fd9c9ff32306538a82d58c74","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(KeypairTests, self).setUp()"},{"line_number":22,"context_line":"        self.KPName \u003d \u0027TestKeyPair\u0027"},{"line_number":23,"context_line":"        self.keypair \u003d self.keypair_create(self.KPName)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_keypair_create(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_45fce271","line":22,"updated":"2016-03-31 13:38:36.000000000","message":"If such key pair already exists, there will be a conflict. Please add some randomisation to name.","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"f75cce2a07453ee23ba1fbe0394e333666fc8c22","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(KeypairTests, self).setUp()"},{"line_number":22,"context_line":"        self.KPName \u003d \u0027TestKeyPair\u0027"},{"line_number":23,"context_line":"        self.keypair \u003d self.keypair_create(self.KPName)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_keypair_create(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_5625b306","line":22,"in_reply_to":"ba0121b8_45fce271","updated":"2016-03-31 15:25:41.000000000","message":"Done","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b0e32c7b672a9c25fd9c9ff32306538a82d58c74","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_keypair_create(self):"},{"line_number":26,"context_line":"        \"\"\"Test keypair create command.\"\"\""},{"line_number":27,"context_line":"        NewName \u003d \u0027TestKeyPairCreated\u0027"},{"line_number":28,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + NewName)"},{"line_number":29,"context_line":"        self.addCleanup(self.openstack, \u0027keypair delete \u0027 + NewName)"},{"line_number":30,"context_line":"        self.assertInOutput(\u0027-----BEGIN RSA PRIVATE KEY-----\u0027, raw_output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_2501ee6a","line":27,"updated":"2016-03-31 13:38:36.000000000","message":"ditto","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"f75cce2a07453ee23ba1fbe0394e333666fc8c22","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_keypair_create(self):"},{"line_number":26,"context_line":"        \"\"\"Test keypair create command.\"\"\""},{"line_number":27,"context_line":"        NewName \u003d \u0027TestKeyPairCreated\u0027"},{"line_number":28,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + NewName)"},{"line_number":29,"context_line":"        self.addCleanup(self.openstack, \u0027keypair delete \u0027 + NewName)"},{"line_number":30,"context_line":"        self.assertInOutput(\u0027-----BEGIN RSA PRIVATE KEY-----\u0027, raw_output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_b61ecfb8","line":27,"in_reply_to":"ba0121b8_2501ee6a","updated":"2016-03-31 15:25:41.000000000","message":"Done","commit_id":"f00bb4cb7110122e039883a37d73e3d8489ba91d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4a88319ce373557bcb3d1778e307bca1492f23a7","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertIn(\u0027tmpkey\u0027, raw_output)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_keypair_list(self):"},{"line_number":62,"context_line":"        opts \u003d self.get_list_opts(self.HEADERS)"},{"line_number":63,"context_line":"        raw_output \u003d self.openstack(\u0027keypair list\u0027 + opts)"},{"line_number":64,"context_line":"        self.assertIn(self.NAME, raw_output)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_7f2ec3fb","side":"PARENT","line":62,"updated":"2016-03-31 17:47:22.000000000","message":"Why remove this?","commit_id":"f48f9398b86c8612b6514218efd6566fe0bbd568"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"0e5e533020c369cd42bd82ec55739777f78be53e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertIn(\u0027tmpkey\u0027, raw_output)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_keypair_list(self):"},{"line_number":62,"context_line":"        opts \u003d self.get_list_opts(self.HEADERS)"},{"line_number":63,"context_line":"        raw_output \u003d self.openstack(\u0027keypair list\u0027 + opts)"},{"line_number":64,"context_line":"        self.assertIn(self.NAME, raw_output)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_53ff2001","side":"PARENT","line":62,"in_reply_to":"ba0121b8_7f2ec3fb","updated":"2016-04-04 17:14:04.000000000","message":"I mean to call for the full CLI command output, not limited by special options. Maybe it`s also worth to add tests for filtered output by type (value, csv, json etc) and by headers?","commit_id":"f48f9398b86c8612b6514218efd6566fe0bbd568"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4a88319ce373557bcb3d1778e307bca1492f23a7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.assertInOutput(\u0027-----END RSA PRIVATE KEY-----\u0027, raw_output)"},{"line_number":45,"context_line":"        self.assertIn(NewName, self.keypair_list())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_keypair_create_fixed(self):"},{"line_number":48,"context_line":"        \"\"\"Test for create keypair with --public-key option.\"\"\""},{"line_number":49,"context_line":"        TMP_FILE \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        self.addCleanup(os.remove, TMP_FILE)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_c4d0e6cb","line":47,"updated":"2016-03-31 17:47:22.000000000","message":"I\u0027m not sure what _fixed means here, maybe _public_key is more descriptive","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"0e5e533020c369cd42bd82ec55739777f78be53e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.assertInOutput(\u0027-----END RSA PRIVATE KEY-----\u0027, raw_output)"},{"line_number":45,"context_line":"        self.assertIn(NewName, self.keypair_list())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_keypair_create_fixed(self):"},{"line_number":48,"context_line":"        \"\"\"Test for create keypair with --public-key option.\"\"\""},{"line_number":49,"context_line":"        TMP_FILE \u003d uuid.uuid4().hex"},{"line_number":50,"context_line":"        self.addCleanup(os.remove, TMP_FILE)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_bc2c8eac","line":47,"in_reply_to":"ba0121b8_c4d0e6cb","updated":"2016-04-04 17:14:04.000000000","message":"Done","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4a88319ce373557bcb3d1778e307bca1492f23a7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assert_table_structure(items, HEADERS)"},{"line_number":77,"context_line":"        self.assertInOutput(self.KPName, raw_output)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_keypair_delete(self):"},{"line_number":80,"context_line":"        \"\"\"Test keypair delete command.\"\"\""},{"line_number":81,"context_line":"        self.openstack(\u0027keypair delete \u0027 + self.KPName)"},{"line_number":82,"context_line":"        self.assertNotIn(self.KPName, self.keypair_list())"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_bf0e9be2","line":79,"updated":"2016-03-31 17:47:22.000000000","message":"The test classes should be sorted","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"0e5e533020c369cd42bd82ec55739777f78be53e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assert_table_structure(items, HEADERS)"},{"line_number":77,"context_line":"        self.assertInOutput(self.KPName, raw_output)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_keypair_delete(self):"},{"line_number":80,"context_line":"        \"\"\"Test keypair delete command.\"\"\""},{"line_number":81,"context_line":"        self.openstack(\u0027keypair delete \u0027 + self.KPName)"},{"line_number":82,"context_line":"        self.assertNotIn(self.KPName, self.keypair_list())"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_1760f534","line":79,"in_reply_to":"ba0121b8_bf0e9be2","updated":"2016-04-04 17:14:04.000000000","message":"Done. Sorted them alphabetically.","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4a88319ce373557bcb3d1778e307bca1492f23a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.openstack(\u0027keypair delete \u0027 + self.KPName)"},{"line_number":82,"context_line":"        self.assertNotIn(self.KPName, self.keypair_list())"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_negative_create_duplicate(self):"},{"line_number":85,"context_line":"        \"\"\"Try to create duplicate name keypair.\"\"\""},{"line_number":86,"context_line":"        self.assertRaises(exceptions.CommandFailed,"},{"line_number":87,"context_line":"                          self.openstack, \u0027keypair create \u0027 + self.KPName)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba0121b8_ffcdb366","line":84,"updated":"2016-03-31 17:47:22.000000000","message":"you can probably leave out \u0027_negative\u0027, the descriptions seem to be enough on their own.  Also it will sort the _create tests together, etc.  If you feel it is necessary, the only other place \u0027_negative\u0027 occirs in OSc it comes at the end of the method name (test_subnet_pool).","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"0e5e533020c369cd42bd82ec55739777f78be53e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.openstack(\u0027keypair delete \u0027 + self.KPName)"},{"line_number":82,"context_line":"        self.assertNotIn(self.KPName, self.keypair_list())"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_negative_create_duplicate(self):"},{"line_number":85,"context_line":"        \"\"\"Try to create duplicate name keypair.\"\"\""},{"line_number":86,"context_line":"        self.assertRaises(exceptions.CommandFailed,"},{"line_number":87,"context_line":"                          self.openstack, \u0027keypair create \u0027 + self.KPName)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_d74e7dc0","line":84,"in_reply_to":"ba0121b8_ffcdb366","updated":"2016-04-04 17:14:04.000000000","message":"Done. Sorted them.","commit_id":"a87356ba255ac25f471e8efe4712664bbb9b077a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8f72df774fe787c0a3391c0b523700abe3a378eb","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.common import test"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":"from tempest_lib import exceptions"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_852f72f5","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":32},"updated":"2016-04-18 19:15:56.000000000","message":"use tempest_lib\u0027s data_utils","commit_id":"e133306cdb9d820b755dde72d1064adff5fc5630"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8f72df774fe787c0a3391c0b523700abe3a378eb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        keypair \u003d self.get_keypair_dict(name)"},{"line_number":31,"context_line":"        return keypair"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_keypair_dict(self, name):"},{"line_number":34,"context_line":"        \"\"\"Return dictionary with specified keypair by name.\"\"\""},{"line_number":35,"context_line":"        raw_output \u003d self.openstack(\u0027keypair show \u0027 + name)"},{"line_number":36,"context_line":"        return self.parse_show_as_object(raw_output)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_e50d8691","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":24},"updated":"2016-04-18 19:15:56.000000000","message":"suggest calling this `keypair_show` to match the names of the other methods","commit_id":"e133306cdb9d820b755dde72d1064adff5fc5630"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"ce51e7078a04fb390d2fe064acacc2b982822ab2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        keypair \u003d self.get_keypair_dict(name)"},{"line_number":31,"context_line":"        return keypair"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_keypair_dict(self, name):"},{"line_number":34,"context_line":"        \"\"\"Return dictionary with specified keypair by name.\"\"\""},{"line_number":35,"context_line":"        raw_output \u003d self.openstack(\u0027keypair show \u0027 + name)"},{"line_number":36,"context_line":"        return self.parse_show_as_object(raw_output)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_8cae5be4","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":24},"in_reply_to":"1a122d0e_e50d8691","updated":"2016-04-19 12:07:56.000000000","message":"Ok, and it looks that we do not need this method, because it is used only several rows above in:\nkeypair \u003d self.get_keypair_dict(name)\nreturn keypair\nAnd we do not need to return parsed keypair because we can track it by name (same as in nova server tests)","commit_id":"e133306cdb9d820b755dde72d1064adff5fc5630"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"679e1105a34cd71328580c93e411951d03c9a7b7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class KeypairBase(test.TestCase):"},{"line_number":22,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def keypair_create(self, name\u003ddata_utils.rand_uuid()):"},{"line_number":25,"context_line":"        \"\"\"Create keypair and add cleanup.\"\"\""},{"line_number":26,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"},{"line_number":27,"context_line":"        self.addCleanup(self.keypair_delete, name, True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_5db98b78","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":56},"updated":"2016-04-19 13:10:21.000000000","message":"so one tip about using this convention is that you will get the same random string every time, this doesn\u0027t matter so much for tests, but just a heads up if you\u0027re using this in other places:\n\nyou can see it in action here:\n\n\u003e\u003e\u003e import uuid\n\u003e\u003e\u003e def create_a_thing(name\u003duuid.uuid4().hex):\n...     print(name)\n... \n\u003e\u003e\u003e create_a_thing(name\u003d\"blah\")\nblah\n\u003e\u003e\u003e create_a_thing()\n9144b6c0a9f84597b95ce2667738cdc7\n\u003e\u003e\u003e create_a_thing()\n9144b6c0a9f84597b95ce2667738cdc7\n\u003e\u003e\u003e create_a_thing()\n9144b6c0a9f84597b95ce2667738cdc7","commit_id":"ff62c832b5397b1cb4d948f5f88c303434f49b11"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"85231539d71ec51ef17fb59146d49dddd5cac7b7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class KeypairBase(test.TestCase):"},{"line_number":22,"context_line":"    \"\"\"Methods for functional tests.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def keypair_create(self, name\u003ddata_utils.rand_uuid()):"},{"line_number":25,"context_line":"        \"\"\"Create keypair and add cleanup.\"\"\""},{"line_number":26,"context_line":"        raw_output \u003d self.openstack(\u0027keypair create \u0027 + name)"},{"line_number":27,"context_line":"        self.addCleanup(self.keypair_delete, name, True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_4539b1a3","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":56},"in_reply_to":"1a122d0e_5db98b78","updated":"2016-04-19 14:21:53.000000000","message":"Thank you, Steve. I really appreciate your help because of my lack of experience in programming.","commit_id":"ff62c832b5397b1cb4d948f5f88c303434f49b11"}]}
