)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"853325b0f0af6c40e2907edac0d8c05548b9a9dc","unresolved":false,"context_lines":[{"line_number":626,"context_line":""},{"line_number":627,"context_line":"# A list of enabled identity extensions with a special entry all which"},{"line_number":628,"context_line":"# indicates every extension is enabled. Empty list indicates all"},{"line_number":629,"context_line":"# extensions are disabled.To get the list of extensions run: \u0027keystone"},{"line_number":630,"context_line":"# discover\u0027 (list value)"},{"line_number":631,"context_line":"#api_extensions \u003d all"},{"line_number":632,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":17,"id":"3a50d1a3_8d5b58f6","line":629,"updated":"2015-07-31 02:24:39.000000000","message":"s/disabled.To/disabled. To/","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"b563184f27e33fa3afbbf299c2c4dfb3a84c7860","unresolved":false,"context_lines":[{"line_number":626,"context_line":""},{"line_number":627,"context_line":"# A list of enabled identity extensions with a special entry all which"},{"line_number":628,"context_line":"# indicates every extension is enabled. Empty list indicates all"},{"line_number":629,"context_line":"# extensions are disabled.To get the list of extensions run: \u0027keystone"},{"line_number":630,"context_line":"# discover\u0027 (list value)"},{"line_number":631,"context_line":"#api_extensions \u003d all"},{"line_number":632,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":17,"id":"3a50d1a3_547a5725","line":629,"in_reply_to":"3a50d1a3_8d5b58f6","updated":"2015-08-03 12:58:07.000000000","message":"Done","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"}],"tempest/api/identity/v2/test_ec2_credentials.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f24f4891cc5dd343adc0bfa3b90372d33cb9cbe5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                        self.creds.credentials.user_id, access)"},{"line_number":41,"context_line":"        self.assertNotEmpty(resp[\u0027access\u0027])"},{"line_number":42,"context_line":"        self.assertNotEmpty(resp[\u0027secret\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(resp[\u0027user_id\u0027],"},{"line_number":44,"context_line":"                         self.creds.credentials.user_id)"},{"line_number":45,"context_line":"        self.assertEqual(resp[\u0027tenant_id\u0027],"},{"line_number":46,"context_line":"                         self.creds.credentials.tenant_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_7a493d5f","line":43,"updated":"2015-06-25 09:14:04.000000000","message":"You should prefer the following order:\n  self.assertEqual(expected, observed)\n\nThis is true for testtools (which we don\u0027t really use now, afaik) but that might change: http://testtools.readthedocs.org/en/latest/api.html#testtools.TestCase.assertEqual\n\nSee LP #1259292, #1425997, #1277104","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"1cd86351963685126a0437ad9b3a0e0d89fb5fb5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                        self.creds.credentials.user_id, access)"},{"line_number":41,"context_line":"        self.assertNotEmpty(resp[\u0027access\u0027])"},{"line_number":42,"context_line":"        self.assertNotEmpty(resp[\u0027secret\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(resp[\u0027user_id\u0027],"},{"line_number":44,"context_line":"                         self.creds.credentials.user_id)"},{"line_number":45,"context_line":"        self.assertEqual(resp[\u0027tenant_id\u0027],"},{"line_number":46,"context_line":"                         self.creds.credentials.tenant_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_ed7240e3","line":43,"in_reply_to":"fa32b979_7a493d5f","updated":"2015-06-26 11:58:02.000000000","message":"Done","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f24f4891cc5dd343adc0bfa3b90372d33cb9cbe5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # get the list of user ec2 credentials"},{"line_number":67,"context_line":"        resp \u003d self.non_admin_client.list_user_ec2_credentials("},{"line_number":68,"context_line":"            self.creds.credentials.user_id)"},{"line_number":69,"context_line":"        for i in resp:"},{"line_number":70,"context_line":"            fetched_creds.append(i[\u0027access\u0027])"},{"line_number":71,"context_line":"        # created credentials should be in a fetched list"},{"line_number":72,"context_line":"        missing \u003d [cred for cred in created_creds"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_daac09ef","line":69,"updated":"2015-06-25 09:14:04.000000000","message":"The variable \u0027i\u0027 is misnamed.\n\nYou should use a list comprehension anyway.","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"1cd86351963685126a0437ad9b3a0e0d89fb5fb5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # get the list of user ec2 credentials"},{"line_number":67,"context_line":"        resp \u003d self.non_admin_client.list_user_ec2_credentials("},{"line_number":68,"context_line":"            self.creds.credentials.user_id)"},{"line_number":69,"context_line":"        for i in resp:"},{"line_number":70,"context_line":"            fetched_creds.append(i[\u0027access\u0027])"},{"line_number":71,"context_line":"        # created credentials should be in a fetched list"},{"line_number":72,"context_line":"        missing \u003d [cred for cred in created_creds"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_b067afb6","line":69,"in_reply_to":"fa32b979_daac09ef","updated":"2015-06-26 11:58:02.000000000","message":"Done","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f24f4891cc5dd343adc0bfa3b90372d33cb9cbe5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # created credentials should be in a fetched list"},{"line_number":72,"context_line":"        missing \u003d [cred for cred in created_creds"},{"line_number":73,"context_line":"                   if cred not in fetched_creds]"},{"line_number":74,"context_line":"        self.assertEqual(0, len(missing),"},{"line_number":75,"context_line":"                         \"Failed to find ec2_credentials %s in fetched list\" %"},{"line_number":76,"context_line":"                         \u0027, \u0027.join(cred for cred in missing))"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_1af4b1ee","line":74,"range":{"start_line":74,"start_character":21,"end_line":74,"end_character":30},"updated":"2015-06-25 09:14:04.000000000","message":"You could you self.assertEmpty here","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"1cd86351963685126a0437ad9b3a0e0d89fb5fb5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # created credentials should be in a fetched list"},{"line_number":72,"context_line":"        missing \u003d [cred for cred in created_creds"},{"line_number":73,"context_line":"                   if cred not in fetched_creds]"},{"line_number":74,"context_line":"        self.assertEqual(0, len(missing),"},{"line_number":75,"context_line":"                         \"Failed to find ec2_credentials %s in fetched list\" %"},{"line_number":76,"context_line":"                         \u0027, \u0027.join(cred for cred in missing))"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_502ae330","line":74,"in_reply_to":"fa32b979_1af4b1ee","updated":"2015-06-26 11:58:02.000000000","message":"Done","commit_id":"1150f1aa846102dd2ca88d6732757c8ed7f4b73c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"853325b0f0af6c40e2907edac0d8c05548b9a9dc","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def setup_clients(cls):"},{"line_number":33,"context_line":"        super(EC2CredentialsTest, cls).setup_clients()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_4d6470e4","line":33,"updated":"2015-07-31 02:24:39.000000000","message":"I think this line 32-33 can be removed because this method just calls setup_clients() without any special way.","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"b563184f27e33fa3afbbf299c2c4dfb3a84c7860","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def setup_clients(cls):"},{"line_number":33,"context_line":"        super(EC2CredentialsTest, cls).setup_clients()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_f4728349","line":33,"in_reply_to":"3a50d1a3_4d6470e4","updated":"2015-08-03 12:58:07.000000000","message":"Done","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"853325b0f0af6c40e2907edac0d8c05548b9a9dc","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(ec2_creds[\u0027access\u0027], resp[\u0027access\u0027])"},{"line_number":100,"context_line":"        self.assertEqual(ec2_creds[\u0027secret\u0027], resp[\u0027secret\u0027])"},{"line_number":101,"context_line":"        self.assertEqual(ec2_creds[\u0027user_id\u0027], resp[\u0027user_id\u0027])"},{"line_number":102,"context_line":"        self.assertEqual(ec2_creds[\u0027tenant_id\u0027], resp[\u0027tenant_id\u0027])"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @test.idempotent_id(\u00276aba0d4c-b76b-4e46-aa42-add79bc1551d\u0027)"},{"line_number":105,"context_line":"    def test_delete_ec2_credentials(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_8d7fd865","line":102,"updated":"2015-07-31 02:24:39.000000000","message":"here(line99-102) can be\n\n for key in [\u0027access\u0027, \u0027secret\u0027, \u0027user_id\u0027, \u0027tentn_id\u0027]:\n     self.assertEqual(ec2_creds[key], resp[key])","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"b563184f27e33fa3afbbf299c2c4dfb3a84c7860","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(ec2_creds[\u0027access\u0027], resp[\u0027access\u0027])"},{"line_number":100,"context_line":"        self.assertEqual(ec2_creds[\u0027secret\u0027], resp[\u0027secret\u0027])"},{"line_number":101,"context_line":"        self.assertEqual(ec2_creds[\u0027user_id\u0027], resp[\u0027user_id\u0027])"},{"line_number":102,"context_line":"        self.assertEqual(ec2_creds[\u0027tenant_id\u0027], resp[\u0027tenant_id\u0027])"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @test.idempotent_id(\u00276aba0d4c-b76b-4e46-aa42-add79bc1551d\u0027)"},{"line_number":105,"context_line":"    def test_delete_ec2_credentials(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_4f116451","line":102,"in_reply_to":"3a50d1a3_8d7fd865","updated":"2015-08-03 12:58:07.000000000","message":"Done","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"6a700081689d680c9c40fc8347ab1fa187487a3b","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.idempotent_id(\u0027b580fab9-7ae9-46e8-8138-417260cb6f9f\u0027)"},{"line_number":37,"context_line":"    def test_create_ec2_credentials(self):"},{"line_number":38,"context_line":"        # Create user ec2 credentials"},{"line_number":39,"context_line":"        resp \u003d self.non_admin_client.create_user_ec2_credentials("},{"line_number":40,"context_line":"            self.creds.credentials.user_id,"},{"line_number":41,"context_line":"            self.creds.credentials.tenant_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a4dcd0f_bee44c3b","line":38,"updated":"2015-08-04 08:36:17.000000000","message":"We usually prefer multi line comment (\"\"\" blah \"\"\") for comments that describe the method.\n\n# blah is usually for inline comment that apply to the next following line only.","commit_id":"ba38b6ab4d51081d68eb0164e1d0dbd4add5f220"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"58c7b29c78804c1fad9e28195a252cc1ab13af8f","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.idempotent_id(\u0027b580fab9-7ae9-46e8-8138-417260cb6f9f\u0027)"},{"line_number":37,"context_line":"    def test_create_ec2_credentials(self):"},{"line_number":38,"context_line":"        # Create user ec2 credentials"},{"line_number":39,"context_line":"        resp \u003d self.non_admin_client.create_user_ec2_credentials("},{"line_number":40,"context_line":"            self.creds.credentials.user_id,"},{"line_number":41,"context_line":"            self.creds.credentials.tenant_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a4dcd0f_7e051778","line":38,"in_reply_to":"1a4dcd0f_bee44c3b","updated":"2015-08-05 11:12:51.000000000","message":"Done","commit_id":"ba38b6ab4d51081d68eb0164e1d0dbd4add5f220"}],"tempest/clients.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"0152ed2888847e2e264199dd92344994b133231f","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        public_params[\u0027endpoint_type\u0027] \u003d \u0027publicURL\u0027"},{"line_number":337,"context_line":"        self.identity_client \u003d IdentityClientJSON(self.auth_provider,"},{"line_number":338,"context_line":"                                                  **params)"},{"line_number":339,"context_line":"        self.public_identity_client \u003d IdentityClientJSON("},{"line_number":340,"context_line":"            self.auth_provider, **public_params)"},{"line_number":341,"context_line":"        self.identity_v3_client \u003d IdentityV3ClientJSON(self.auth_provider,"},{"line_number":342,"context_line":"                                                       **params)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_cc0bcc7c","line":339,"updated":"2015-06-29 10:14:39.000000000","message":"Why do you have to add a new client here ? I know it\u0027s to use the Keystone port 5000 instead of 35357 but your test passes even on port 35357. So this seems not strictly required.","commit_id":"a4fd59c003c50d10c86642341fe0208bc220fc0a"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"84fc1a88c3aef13e54d1402b4bc98f8d497e8ba9","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        public_params[\u0027endpoint_type\u0027] \u003d \u0027publicURL\u0027"},{"line_number":337,"context_line":"        self.identity_client \u003d IdentityClientJSON(self.auth_provider,"},{"line_number":338,"context_line":"                                                  **params)"},{"line_number":339,"context_line":"        self.public_identity_client \u003d IdentityClientJSON("},{"line_number":340,"context_line":"            self.auth_provider, **public_params)"},{"line_number":341,"context_line":"        self.identity_v3_client \u003d IdentityV3ClientJSON(self.auth_provider,"},{"line_number":342,"context_line":"                                                       **params)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_6ce60bb6","line":339,"in_reply_to":"ba3cc151_cc0bcc7c","updated":"2015-06-30 10:43:51.000000000","message":"We need a new non-admin client to make Identity API requests as a non-admin user. Since 35357 port is used as administrative endpoint it is not correct to use this admin port for testing keystone public user actions. In addition, that is useful for testing public clouds where this test via 35357 port would not pass because in public clouds 35357 port endpoint is unavailable.","commit_id":"a4fd59c003c50d10c86642341fe0208bc220fc0a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"4aa01c2a0aed1c9aa7bdd6d11f4f2c92e60f8e94","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        params \u003d {"},{"line_number":330,"context_line":"            \u0027service\u0027: CONF.identity.catalog_type,"},{"line_number":331,"context_line":"            \u0027region\u0027: CONF.identity.region,"},{"line_number":332,"context_line":"            \u0027endpoint_type\u0027: \u0027adminURL\u0027"},{"line_number":333,"context_line":"        }"},{"line_number":334,"context_line":"        params.update(self.default_params_with_timeout_values)"},{"line_number":335,"context_line":"        public_params \u003d params.copy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_66dfa6d6","line":332,"updated":"2015-07-08 15:53:36.000000000","message":"Why not just use the CONF.identity.endpoint_type option (it already exists) like the other services do. \n\n\nThis hard coding feels game feels really weird to me. IT is asserting that a particular cloud is setup in a particular way. We shouldn\u0027t be dictating how the entrypoints are setup in a catalog for keystone.","commit_id":"f0fd513031bfe0ce5ec6b2b051859d3938ee8661"}],"tempest/config.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"853325b0f0af6c40e2907edac0d8c05548b9a9dc","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":194,"context_line":"                help\u003d\"A list of enabled identity extensions with a special \""},{"line_number":195,"context_line":"                     \"entry all which indicates every extension is enabled. \""},{"line_number":196,"context_line":"                     \"Empty list indicates all extensions are disabled.\""},{"line_number":197,"context_line":"                     \"To get the list of extensions run: \u0027keystone discover\u0027\")"},{"line_number":198,"context_line":"]"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_4d47901d","line":196,"updated":"2015-07-31 02:24:39.000000000","message":"here should be\n\n - ... are disabled.\"\n + ... are disabled. \"\n\nfor readability.","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"b563184f27e33fa3afbbf299c2c4dfb3a84c7860","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                default\u003d[\u0027all\u0027],"},{"line_number":194,"context_line":"                help\u003d\"A list of enabled identity extensions with a special \""},{"line_number":195,"context_line":"                     \"entry all which indicates every extension is enabled. \""},{"line_number":196,"context_line":"                     \"Empty list indicates all extensions are disabled.\""},{"line_number":197,"context_line":"                     \"To get the list of extensions run: \u0027keystone discover\u0027\")"},{"line_number":198,"context_line":"]"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_ef3070eb","line":196,"in_reply_to":"3a50d1a3_4d47901d","updated":"2015-08-03 12:58:07.000000000","message":"Done","commit_id":"082b11dc984a31cc957ab472f0154350d684cc1f"}]}
