)]}'
{"tempest/api/compute/keypairs/base.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c3fc3705a18dc46628a2187433f1cf186fe625d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        kwargs \u003d {\u0027name\u0027: keypair_name}"},{"line_number":32,"context_line":"        if pub_key:"},{"line_number":33,"context_line":"            kwargs.update({\u0027public_key\u0027: pub_key})"},{"line_number":34,"context_line":"        if type:"},{"line_number":35,"context_line":"            kwargs.update({\u0027type\u0027: type})"},{"line_number":36,"context_line":"        body \u003d self.client.create_keypair(**kwargs)[\u0027keypair\u0027]"},{"line_number":37,"context_line":"        self.addCleanup(self._delete_keypair, keypair_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_f4ccce6b","line":34,"updated":"2015-11-26 11:57:17.000000000","message":"Nit: not sure I like the use of type as a variable, but _type is ugly.\n\nMaybe we should use keypair_type instead?","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        kwargs \u003d {\u0027name\u0027: keypair_name}"},{"line_number":32,"context_line":"        if pub_key:"},{"line_number":33,"context_line":"            kwargs.update({\u0027public_key\u0027: pub_key})"},{"line_number":34,"context_line":"        if type:"},{"line_number":35,"context_line":"            kwargs.update({\u0027type\u0027: type})"},{"line_number":36,"context_line":"        body \u003d self.client.create_keypair(**kwargs)[\u0027keypair\u0027]"},{"line_number":37,"context_line":"        self.addCleanup(self._delete_keypair, keypair_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_50657c1b","line":34,"in_reply_to":"9a8ffd7b_f4ccce6b","updated":"2015-11-27 09:33:12.000000000","message":"Yea. I will update.","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"}],"tempest/api/compute/keypairs/test_keypairs_v22.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c3fc3705a18dc46628a2187433f1cf186fe625d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        if type is None:"},{"line_number":28,"context_line":"            type \u003d \u0027ssh\u0027"},{"line_number":29,"context_line":"        self.assertIn(\u0027type\u0027, keypair)"},{"line_number":30,"context_line":"        self.assertEqual(type, keypair[\u0027type\u0027])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _test_keypairs_create_list_show(self, type\u003dNone):"},{"line_number":33,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_08a616ae","line":30,"updated":"2015-11-26 11:57:17.000000000","message":"Doesn\u0027t the schema check deal with all these checks already?","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        if type is None:"},{"line_number":28,"context_line":"            type \u003d \u0027ssh\u0027"},{"line_number":29,"context_line":"        self.assertIn(\u0027type\u0027, keypair)"},{"line_number":30,"context_line":"        self.assertEqual(type, keypair[\u0027type\u0027])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _test_keypairs_create_list_show(self, type\u003dNone):"},{"line_number":33,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_10429468","line":30,"in_reply_to":"9a8ffd7b_08a616ae","updated":"2015-11-27 09:33:12.000000000","message":"Schema check self.assertIn thing but not self.assertEqual.\n\nwe can remove assertIn from here/","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c3fc3705a18dc46628a2187433f1cf186fe625d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":59,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":60,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":61,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_9438e2f0","line":61,"updated":"2015-11-26 11:57:17.000000000","message":"should we not test the case where you specify public_key too?","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":59,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":60,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":61,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_93320ef1","line":61,"in_reply_to":"9a8ffd7b_9438e2f0","updated":"2015-11-27 09:33:12.000000000","message":"That is tested in existing keypair tests. this only tests the change part of that version. But I can add that too as it does not cost anything","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c3fc3705a18dc46628a2187433f1cf186fe625d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."},{"line_number":65,"context_line":"        self.assertIn(\u0027x-openstack-nova-api-version\u0027, keypair.response)"},{"line_number":66,"context_line":"        self.assertEqual(self.request_microversion,"},{"line_number":67,"context_line":"                         keypair.response[\u0027x-openstack-nova-api-version\u0027])"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_a8c10a56","line":65,"updated":"2015-11-26 11:57:17.000000000","message":"Nit: Feels like this should be a util function, like assertVersionHeaderMatchesRequest(keypair.response) or something?","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."},{"line_number":65,"context_line":"        self.assertIn(\u0027x-openstack-nova-api-version\u0027, keypair.response)"},{"line_number":66,"context_line":"        self.assertEqual(self.request_microversion,"},{"line_number":67,"context_line":"                         keypair.response[\u0027x-openstack-nova-api-version\u0027])"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_73544afe","line":65,"in_reply_to":"9a8ffd7b_a8c10a56","updated":"2015-11-27 09:33:12.000000000","message":"Sure.","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2c3fc3705a18dc46628a2187433f1cf186fe625d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                         keypair.response[\u0027x-openstack-nova-api-version\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class KeyPairsV22AgainstV21TestJSON(KeyPairsV22TestJSON):"},{"line_number":71,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":72,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_8884465e","line":70,"updated":"2015-11-26 11:57:17.000000000","message":"should this not instead just be the existing keypair test that is extended to check the badrequest things?","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                         keypair.response[\u0027x-openstack-nova-api-version\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class KeyPairsV22AgainstV21TestJSON(KeyPairsV22TestJSON):"},{"line_number":71,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":72,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_b315d2e5","line":70,"in_reply_to":"9a8ffd7b_8884465e","updated":"2015-11-27 09:33:12.000000000","message":"Existing keypair tests can be run for \u003e2.2 version also (as shown in matrix  - https://review.openstack.org/#/c/169126/14/specs/tempest/api-microversions-testing-support.rst)\n\nWhere this tests will fail. So added as separate tests which always request with 2.1(immediate previous version)","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ca7ae51611d85bca3f6d59870a6c4c70b4c52d8d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        super(KeyPairsV22AgainstV21TestJSON, cls).setup_clients()"},{"line_number":77,"context_line":"        # Set microversion \u00272.1\u0027 on client and tests version v2.2"},{"line_number":78,"context_line":"        # changes does not reflect on v2.1 response."},{"line_number":79,"context_line":"        cls.client.api_microversion \u003d \u00272.1\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _check_keypair_type(self, keypair, type):"},{"line_number":82,"context_line":"        self.assertNotIn(\u0027type\u0027, keypair)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_283f5a25","line":79,"updated":"2015-11-26 11:57:49.000000000","message":"This seems confusing given the above min/max settings.","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f27bd99297cb8b84970fd31af06f7654322e9608","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        super(KeyPairsV22AgainstV21TestJSON, cls).setup_clients()"},{"line_number":77,"context_line":"        # Set microversion \u00272.1\u0027 on client and tests version v2.2"},{"line_number":78,"context_line":"        # changes does not reflect on v2.1 response."},{"line_number":79,"context_line":"        cls.client.api_microversion \u003d \u00272.1\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _check_keypair_type(self, keypair, type):"},{"line_number":82,"context_line":"        self.assertNotIn(\u0027type\u0027, keypair)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_53eb4613","line":79,"in_reply_to":"9a8ffd7b_283f5a25","updated":"2015-11-27 09:33:12.000000000","message":"Actually this tests the version 2.2 changes are not present with version 2.1(immediate previous version)\n\nmin_microversion and max_microversion allows to run this tests for mentioned range of version but request with previous version to check the above behavior.","commit_id":"d5a9ad92d7348e660aae78dc14f91df1f225d8c4"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"903c3be12dee65e759f74f5e8de7a2cd748a09cb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":61,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."},{"line_number":65,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":66,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_dd7297b0","line":63,"updated":"2015-12-09 12:43:44.000000000","message":"s/miceroversion/microversion/","commit_id":"00b37e06c9c0962de4cda233cde00c79639e112e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fef4f7985cf0a3aa7870eeacfccb82092e132936","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":61,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":62,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":63,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":64,"context_line":"        # and with expected value."},{"line_number":65,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":66,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_d2aedde6","line":63,"in_reply_to":"7a740942_dd7297b0","updated":"2015-12-10 01:51:59.000000000","message":"ops Thanks. Done","commit_id":"00b37e06c9c0962de4cda233cde00c79639e112e"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"903c3be12dee65e759f74f5e8de7a2cd748a09cb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":96,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name}"},{"line_number":97,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":98,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":99,"context_line":"        # and with expected value."},{"line_number":100,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":101,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_1d61ffd3","line":98,"updated":"2015-12-09 12:43:44.000000000","message":"the same\n\ns/miceroversion/microversion/","commit_id":"00b37e06c9c0962de4cda233cde00c79639e112e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fef4f7985cf0a3aa7870eeacfccb82092e132936","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":96,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name}"},{"line_number":97,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":98,"context_line":"        # Verify whether miceroversion header is present in response"},{"line_number":99,"context_line":"        # and with expected value."},{"line_number":100,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":101,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_92b8552c","line":98,"in_reply_to":"7a740942_1d61ffd3","updated":"2015-12-10 01:51:59.000000000","message":"ops Thanks. Done","commit_id":"00b37e06c9c0962de4cda233cde00c79639e112e"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"d0c8ca5c0f3d0f12d2576d111ea7073241801630","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        # changes does not reflect on v2.1 response."},{"line_number":80,"context_line":"        cls.client.set_api_microversion(\u00272.1\u0027)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":83,"context_line":"        self.assertNotIn(\u0027type\u0027, keypair)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @test.idempotent_id(\u002733702a48-5158-404b-afb4-eb186f45d7d0\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_02040515","line":82,"range":{"start_line":82,"start_character":43,"end_line":82,"end_character":55},"updated":"2015-12-17 13:12:53.000000000","message":"where variable keypair_type is used ?\n\nwhere method _check_keypair_type is used ?","commit_id":"9e0b7a4c8c495e610b44bca94cf717a545058657"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7fae010707fd3e2494d04428c36874c8d7d6c0ff","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        # changes does not reflect on v2.1 response."},{"line_number":80,"context_line":"        cls.client.set_api_microversion(\u00272.1\u0027)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":83,"context_line":"        self.assertNotIn(\u0027type\u0027, keypair)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @test.idempotent_id(\u002733702a48-5158-404b-afb4-eb186f45d7d0\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_653fe5d6","line":82,"range":{"start_line":82,"start_character":43,"end_line":82,"end_character":55},"in_reply_to":"3a7e1126_02040515","updated":"2015-12-18 02:56:26.000000000","message":"_check_keypair_type is being used at L37.\n\nThis and base test class just override the _check_keypair_type method due to differences of expected response","commit_id":"9e0b7a4c8c495e610b44bca94cf717a545058657"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"11d28e89e497989ad7cea456774c804bfc79edd2","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            keypair.response)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class KeyPairsV22AgainstV21TestJSON(KeyPairsV22TestJSON):"},{"line_number":72,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":73,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a7b0d38_707d6a6d","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":57},"updated":"2015-12-25 05:27:50.000000000","message":"I think this test class is a little overkill at this early stage.\nIn addition, it is not good to contain negative tests(import lib_exc) in normal test file like this.","commit_id":"2ad78bee502b98adb15629c06bed7c5545de24e6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2f4b68d0f00a2c4495c4c23a91748d0b0f3f5923","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            keypair.response)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class KeyPairsV22AgainstV21TestJSON(KeyPairsV22TestJSON):"},{"line_number":72,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":73,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a7b0d38_70ffaa67","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":57},"in_reply_to":"1a7b0d38_707d6a6d","updated":"2015-12-25 06:35:43.000000000","message":"Yes, as discussed it is more like negative tests and can be covered in Nova side.\n\nIf really needed we can add later.","commit_id":"2ad78bee502b98adb15629c06bed7c5545de24e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"11d28e89e497989ad7cea456774c804bfc79edd2","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        cls.client.set_api_microversion(\u00272.1\u0027)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":83,"context_line":"        self.assertNotIn(\u0027type\u0027, keypair)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @test.idempotent_id(\u002733702a48-5158-404b-afb4-eb186f45d7d0\u0027)"},{"line_number":86,"context_line":"    def test_keypairsv22_create_list_show_with_type(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a7b0d38_30b12248","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":41},"updated":"2015-12-25 05:27:50.000000000","message":"This seems to be covered with json-schema, right?","commit_id":"2ad78bee502b98adb15629c06bed7c5545de24e6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a98da6b6cbb9d70905e8fe9463b0adb1dce84837","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def test_keypairsv22_create_list_show_with_type(self):"},{"line_number":51,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":52,"context_line":"        self._test_keypairs_create_list_show(keypair_type\u003dkeypair_type)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @test.idempotent_id(\u0027603c8271-02a6-46d4-b65f-0cf713fc92cf\u0027)"},{"line_number":55,"context_line":"    def test_v22_microversion_header(self):"},{"line_number":56,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":57,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":58,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":59,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":60,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":61,"context_line":"        # Verify whether microversion header is present in response"},{"line_number":62,"context_line":"        # and with expected value."},{"line_number":63,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":64,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"},{"line_number":65,"context_line":"            self.request_microversion,"},{"line_number":66,"context_line":"            keypair.response)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_2f7fffe0","line":66,"range":{"start_line":53,"start_character":0,"end_line":66,"end_character":29},"updated":"2016-01-07 02:07:31.000000000","message":"This header test is not specific for keypair test, so how about separating this test from keypar test and implement it on tempest/api/compute/test_microversions.py or some place?","commit_id":"7059b8fb9306c9ff7a2be1bd1789e5599159a91e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ea491af840d20bad050d35873d40d6fce4a2c1ef","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def test_keypairsv22_create_list_show_with_type(self):"},{"line_number":51,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":52,"context_line":"        self._test_keypairs_create_list_show(keypair_type\u003dkeypair_type)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @test.idempotent_id(\u0027603c8271-02a6-46d4-b65f-0cf713fc92cf\u0027)"},{"line_number":55,"context_line":"    def test_v22_microversion_header(self):"},{"line_number":56,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"},{"line_number":57,"context_line":"        keypair_type \u003d \u0027ssh\u0027"},{"line_number":58,"context_line":"        kwargs \u003d {\u0027name\u0027: k_name,"},{"line_number":59,"context_line":"                  \u0027type\u0027: keypair_type}"},{"line_number":60,"context_line":"        keypair \u003d self.client.create_keypair(**kwargs)"},{"line_number":61,"context_line":"        # Verify whether microversion header is present in response"},{"line_number":62,"context_line":"        # and with expected value."},{"line_number":63,"context_line":"        api_version_utils.assert_version_header_matches_request("},{"line_number":64,"context_line":"            \u0027x-openstack-nova-api-version\u0027,"},{"line_number":65,"context_line":"            self.request_microversion,"},{"line_number":66,"context_line":"            keypair.response)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_c921789f","line":66,"range":{"start_line":53,"start_character":0,"end_line":66,"end_character":29},"in_reply_to":"fa69d971_2f7fffe0","updated":"2016-01-07 07:10:49.000000000","message":"Yea, separating it will be nice idea. And Nova adds this header during wsgi level so checking it once with any API should be enough.","commit_id":"7059b8fb9306c9ff7a2be1bd1789e5599159a91e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"18547773fdd08ea59701a05434633a2f5fdb3592","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":22,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_2326f616","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":25},"updated":"2016-01-08 03:21:24.000000000","message":"Current patch is small now, so can we implement this in tempest/api/compute/keypairs/test_keypairs.py together?\n\nEach change of each microversion should be small by nature, and the corresponding tests also should be small difference between previous microversion. So it is easy to review the microversion patch if implementing it on the same file.\n\nIn the future, the file can become huge if implementing many microversion tests and it would be nice to separate them at the time.","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"18547773fdd08ea59701a05434633a2f5fdb3592","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":22,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_c39fdab2","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":58},"updated":"2016-01-08 03:21:24.000000000","message":"I am feeling we need to cap base KeyPairsV2TestJSON side with \u00272.1\u0027 as max_microversion because the same tests will run with current patch.","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"91a4191003ad0222a412e45c4aef891cba90a700","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":22,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_7124b5ae","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":25},"in_reply_to":"fa69d971_2326f616","updated":"2016-01-08 04:16:27.000000000","message":"Yea, we can do that but i like to write in separate file as it gives more clear view of test file but not so strong on this:)","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ce889f55e53917331f11d3e7b2bb58f87ba7d1c9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":22,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_758edad1","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":58},"in_reply_to":"fa69d971_bebe7cd2","updated":"2016-01-08 05:58:03.000000000","message":"As discussed, we should cap this to avoid running duplicate tests if 2.2 is configured as min base version.\n\nDone.","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"91a4191003ad0222a412e45c4aef891cba90a700","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.2\u0027"},{"line_number":22,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_bebe7cd2","line":20,"range":{"start_line":20,"start_character":40,"end_line":20,"end_character":58},"in_reply_to":"fa69d971_c39fdab2","updated":"2016-01-08 04:16:27.000000000","message":"KeyPairsV2TestJSON should be able top run for all microversions so cap might be not good idea.\n\nI derived v22 tests from KeyPairsV2TestJSON to runn all existing tests also for 2.2\n\nThat is not hard rule for all microversion tests. Based on each microversion we can run tests of microversion alone or with existing tests too","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"18547773fdd08ea59701a05434633a2f5fdb3592","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":25,"context_line":"        if keypair_type is None:"},{"line_number":26,"context_line":"            keypair_type \u003d \u0027ssh\u0027"},{"line_number":27,"context_line":"        self.assertEqual(keypair_type, keypair[\u0027type\u0027])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _test_keypairs_create_list_show(self, keypair_type\u003dNone):"},{"line_number":30,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_e319be23","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":55},"updated":"2016-01-08 03:21:24.000000000","message":"On current implementation, keypair_type is always \u0027ssh\u0027.\n\nSo can we add another type?","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ce889f55e53917331f11d3e7b2bb58f87ba7d1c9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":25,"context_line":"        if keypair_type is None:"},{"line_number":26,"context_line":"            keypair_type \u003d \u0027ssh\u0027"},{"line_number":27,"context_line":"        self.assertEqual(keypair_type, keypair[\u0027type\u0027])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _test_keypairs_create_list_show(self, keypair_type\u003dNone):"},{"line_number":30,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_75a57a45","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":55},"in_reply_to":"fa69d971_3e74cccd","updated":"2016-01-08 05:58:03.000000000","message":"Done. we can do with \u0027x509\u0027","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"91a4191003ad0222a412e45c4aef891cba90a700","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def _check_keypair_type(self, keypair, keypair_type):"},{"line_number":25,"context_line":"        if keypair_type is None:"},{"line_number":26,"context_line":"            keypair_type \u003d \u0027ssh\u0027"},{"line_number":27,"context_line":"        self.assertEqual(keypair_type, keypair[\u0027type\u0027])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _test_keypairs_create_list_show(self, keypair_type\u003dNone):"},{"line_number":30,"context_line":"        k_name \u003d data_utils.rand_name(\u0027keypair\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa69d971_3e74cccd","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":55},"in_reply_to":"fa69d971_e319be23","updated":"2016-01-08 04:16:27.000000000","message":"Nova has only two keypair_type supported as of now, ssh and \u0027x509\u0027 for window authentication.","commit_id":"7f3079516e39e6d1fe357e889cc11c6fb1d61ddb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7c56e8909f191db7815d71f761bc4a1672cc52c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 NEC Corporation.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":32,"id":"da6ed579_ee9e65b7","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-01-13 08:26:24.000000000","message":"super nit: 2016","commit_id":"55861fbcef69c3c0177b06dd463cd39951601c1d"}],"tempest/api_schema/response/compute/v2_2/keypairs.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7c56e8909f191db7815d71f761bc4a1672cc52c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 NEC Corporation.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":32,"id":"da6ed579_ce74c19d","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-01-13 08:26:24.000000000","message":"super nit: 2016","commit_id":"55861fbcef69c3c0177b06dd463cd39951601c1d"}]}
