)]}'
{"keystoneclient/tests/functional/v3/client_fixtures.py":[{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"d2b5e96ed4831911003e55525cc9b34dac9c4887","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class Credential(Base):"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def __init__(self, client, user, type, blob, project\u003dNone):"},{"line_number":184,"context_line":"        super(Credential, self).__init__(client)"},{"line_number":185,"context_line":"        self.user \u003d user"},{"line_number":186,"context_line":"        self.type \u003d type"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_170f2c2f","line":183,"range":{"start_line":183,"start_character":43,"end_line":183,"end_character":47},"updated":"2016-07-28 21:14:42.000000000","message":"Didn\u0027t say blob\u003dNone considering data has been deprecated, and one of the two has to be presented to create a credential as per docs.","commit_id":"a16670b09c63e7e2001edc7af7c4ca3dfe6409e3"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"9e799308982a04d22515e4e91d9efb29cdada92e","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class Credential(Base):"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def __init__(self, client, user, type, blob, project\u003dNone):"},{"line_number":184,"context_line":"        super(Credential, self).__init__(client)"},{"line_number":185,"context_line":"        self.user \u003d user"},{"line_number":186,"context_line":"        self.type \u003d type"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_38dcca11","line":183,"range":{"start_line":183,"start_character":42,"end_line":183,"end_character":47},"updated":"2016-08-04 07:27:18.000000000","message":"Same as in PS1, Didn\u0027t say blob\u003dNone considering data has been deprecated, and one of the two has to be presented to create a credential as per docs. \nSo, shall I write blob \u003d None?","commit_id":"790abf9727563c8dd7837547d30addc58b257137"}],"keystoneclient/tests/functional/v3/test_credentials.py":[{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"d2b5e96ed4831911003e55525cc9b34dac9c4887","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(project)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"#       credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":65,"context_line":"#                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":66,"context_line":"#                          \u0027blob\u0027: uuid.uuid4().hex,"},{"line_number":67,"context_line":"#                          \u0027project\u0027: project.id}"},{"line_number":68,"context_line":"#        credential \u003d self.client.credentials.create(**credential_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"#        self.addCleanup(self.client.credentials.delete, credential)"},{"line_number":71,"context_line":"#        self.check_credential(credential, credential_ref)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_get_credential_of_cert_type(self):"},{"line_number":74,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_5c8f0bcc","line":71,"range":{"start_line":64,"start_character":0,"end_line":71,"end_character":58},"updated":"2016-07-28 21:14:42.000000000","message":"Getting error here - BadRequest: Invalid blob in credential","commit_id":"a16670b09c63e7e2001edc7af7c4ca3dfe6409e3"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"d2b5e96ed4831911003e55525cc9b34dac9c4887","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                                         blob\u003duuid.uuid4().hex)"},{"line_number":126,"context_line":"        self.useFixture(credential)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        new_type \u003d uuid.uuid4().hex"},{"line_number":129,"context_line":"        new_blob \u003d uuid.uuid4().hex"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        credential_ret \u003d self.client.credentials.update(credential.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_7c82cf95","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":35},"updated":"2016-07-28 21:14:42.000000000","message":"The type has to be only \u0027cert\u0027 or \u0027ec2\u0027 right?","commit_id":"a16670b09c63e7e2001edc7af7c4ca3dfe6409e3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f14e0f7e7a51eb0e5760e297065b3bfc8b1808c2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.assertEqual(credential_ref[\u0027type\u0027], credential.type)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_2ea90825","line":34,"updated":"2016-07-29 20:25:18.000000000","message":"Blob should be required, according to the spec..?","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"9e799308982a04d22515e4e91d9efb29cdada92e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.assertEqual(credential_ref[\u0027type\u0027], credential.type)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_782642bb","line":34,"in_reply_to":"bacf61ea_2ea90825","updated":"2016-08-04 07:27:18.000000000","message":"Either one of blob or data must be specified. As data attribute is deprecated, I will remove it from tests and check for blob as mandatory attribute. Please correct me if anything else can be done instead.","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"be00aab4cb0a4a3b7ee52549f2a7f55f958fe6f6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.assertEqual(credential_ref[\u0027type\u0027], credential.type)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_7741aca8","line":34,"in_reply_to":"bacf61ea_782642bb","updated":"2016-08-08 01:48:24.000000000","message":"++ I agree this is a good approach","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f14e0f7e7a51eb0e5760e297065b3bfc8b1808c2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"},{"line_number":38,"context_line":"            if hasattr(credential_ref, \u0027project\u0027):"},{"line_number":39,"context_line":"                self.assertEqual(credential_ref[\u0027project\u0027], credential.project)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_4e6a7cef","line":36,"updated":"2016-07-29 20:25:18.000000000","message":"I\u0027m not familiar with this attribute. Where is it documented?","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"9e799308982a04d22515e4e91d9efb29cdada92e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"},{"line_number":38,"context_line":"            if hasattr(credential_ref, \u0027project\u0027):"},{"line_number":39,"context_line":"                self.assertEqual(credential_ref[\u0027project\u0027], credential.project)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_d8bf6efa","line":36,"in_reply_to":"bacf61ea_4e6a7cef","updated":"2016-08-04 07:27:18.000000000","message":"See my above comment please.","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"889de4fe3ebce817345ed277467ebf000b046deb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":34,"context_line":"            if hasattr(credential_ref, \u0027blob\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":36,"context_line":"            if hasattr(credential_ref, \u0027data\u0027):"},{"line_number":37,"context_line":"                self.assertEqual(credential_ref[\u0027data\u0027], credential.data)"},{"line_number":38,"context_line":"            if hasattr(credential_ref, \u0027project\u0027):"},{"line_number":39,"context_line":"                self.assertEqual(credential_ref[\u0027project\u0027], credential.project)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_822ab98e","line":36,"in_reply_to":"bacf61ea_4e6a7cef","updated":"2016-08-03 20:46:52.000000000","message":"see comment in line 47 in https://review.openstack.org/#/c/348506/3/keystoneclient/v3/credentials.py\n\nL59 there also says removal_version\u003d\u00272.0.0\u0027, perhaps it should be removed","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f14e0f7e7a51eb0e5760e297065b3bfc8b1808c2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(project)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"#       credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":65,"context_line":"#                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":66,"context_line":"#                          \u0027blob\u0027: uuid.uuid4().hex,"},{"line_number":67,"context_line":"#                          \u0027project\u0027: project.id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_ce5dcc48","line":64,"updated":"2016-07-29 20:25:18.000000000","message":"? We should hve any reason to commit commented out code.","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"be00aab4cb0a4a3b7ee52549f2a7f55f958fe6f6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(project)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"#       credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":65,"context_line":"#                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":66,"context_line":"#                          \u0027blob\u0027: uuid.uuid4().hex,"},{"line_number":67,"context_line":"#                          \u0027project\u0027: project.id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_974260a9","line":64,"in_reply_to":"bacf61ea_386dea98","updated":"2016-08-08 01:48:24.000000000","message":"Nice, I am fine with this","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"889de4fe3ebce817345ed277467ebf000b046deb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(project)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"#       credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":65,"context_line":"#                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":66,"context_line":"#                          \u0027blob\u0027: uuid.uuid4().hex,"},{"line_number":67,"context_line":"#                          \u0027project\u0027: project.id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_2212ed62","line":64,"in_reply_to":"bacf61ea_ce5dcc48","updated":"2016-08-03 20:46:52.000000000","message":"++","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"9e799308982a04d22515e4e91d9efb29cdada92e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(project)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"#       credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":65,"context_line":"#                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":66,"context_line":"#                          \u0027blob\u0027: uuid.uuid4().hex,"},{"line_number":67,"context_line":"#                          \u0027project\u0027: project.id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_386dea98","line":64,"in_reply_to":"bacf61ea_ce5dcc48","updated":"2016-08-04 07:27:18.000000000","message":"I left a comment regarding this in PS 1, \nthis - \nNisha Yadav\nJul 29 2:44 AM\n\nGetting error here - BadRequest: Invalid blob in credential","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"9e799308982a04d22515e4e91d9efb29cdada92e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                                         blob\u003duuid.uuid4().hex)"},{"line_number":126,"context_line":"        self.useFixture(credential)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        new_type \u003d uuid.uuid4().hex"},{"line_number":129,"context_line":"        new_blob \u003d uuid.uuid4().hex"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        credential_ret \u003d self.client.credentials.update(credential.id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_78d3e238","line":128,"range":{"start_line":128,"start_character":7,"end_line":128,"end_character":35},"updated":"2016-08-04 07:27:18.000000000","message":"Same comment as in PS1, \nThe type has to be only \u0027cert\u0027 or \u0027ec2\u0027 or \u0027totp\u0027 right?","commit_id":"790abf9727563c8dd7837547d30addc58b257137"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9a52356dc23dafc2a0dcc80bfde64c8181ece2fb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.assertEqual(credential_ref[\u0027type\u0027], credential.type)"},{"line_number":32,"context_line":"            self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":35,"context_line":"            if hasattr(credential_ref, \u0027project\u0027):"},{"line_number":36,"context_line":"                self.assertEqual(credential_ref[\u0027project\u0027], credential.project)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        else:"},{"line_number":39,"context_line":"            # Only check remaining mandatory attributes"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_ec62bed7","line":36,"range":{"start_line":34,"start_character":12,"end_line":36,"end_character":79},"updated":"2016-08-08 21:58:02.000000000","message":"check if type is ec2. if it is, then check for project (it is mandatory)","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5ca098a6c4b2a68dd69a18ab3db3a5364700243a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.assertEqual(credential_ref[\u0027type\u0027], credential.type)"},{"line_number":32,"context_line":"            self.assertEqual(credential_ref[\u0027blob\u0027], credential.blob)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"            # There is no guarantee below attributes are present in credential"},{"line_number":35,"context_line":"            if hasattr(credential_ref, \u0027project\u0027):"},{"line_number":36,"context_line":"                self.assertEqual(credential_ref[\u0027project\u0027], credential.project)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        else:"},{"line_number":39,"context_line":"            # Only check remaining mandatory attributes"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_b9e0d0cd","line":36,"range":{"start_line":34,"start_character":12,"end_line":36,"end_character":79},"in_reply_to":"9ad45d7e_ec62bed7","updated":"2016-08-09 18:38:16.000000000","message":"Done","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9a52356dc23dafc2a0dcc80bfde64c8181ece2fb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.useFixture(credential)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            credential_ret \u003d self.client.credentials.get(credential.id)"},{"line_number":99,"context_line":"            # All credentials are valid"},{"line_number":100,"context_line":"            self.check_credential(credential_ret, credential.ref)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_list_credentials(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_ec9f5e5d","line":99,"range":{"start_line":99,"start_character":12,"end_line":99,"end_character":39},"updated":"2016-08-08 21:58:02.000000000","message":"unnecessary comment","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5ca098a6c4b2a68dd69a18ab3db3a5364700243a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.useFixture(credential)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            credential_ret \u003d self.client.credentials.get(credential.id)"},{"line_number":99,"context_line":"            # All credentials are valid"},{"line_number":100,"context_line":"            self.check_credential(credential_ret, credential.ref)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_list_credentials(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_195bdc88","line":99,"range":{"start_line":99,"start_character":12,"end_line":99,"end_character":39},"in_reply_to":"9ad45d7e_ec9f5e5d","updated":"2016-08-09 18:38:16.000000000","message":"Done","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9a52356dc23dafc2a0dcc80bfde64c8181ece2fb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":104,"context_line":"        self.useFixture(user)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        credential_one \u003d fixtures.Credential(self.client, user\u003duser.id,"},{"line_number":107,"context_line":"                                             type\u003d\u0027cert\u0027)"},{"line_number":108,"context_line":"        self.useFixture(credential_one)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_4c9e6a57","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":22},"updated":"2016-08-08 21:58:02.000000000","message":"(nit) I\u0027d call these by type.\n\nlike: cert_credential, ec2_credential, totp_credential","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5ca098a6c4b2a68dd69a18ab3db3a5364700243a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":104,"context_line":"        self.useFixture(user)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        credential_one \u003d fixtures.Credential(self.client, user\u003duser.id,"},{"line_number":107,"context_line":"                                             type\u003d\u0027cert\u0027)"},{"line_number":108,"context_line":"        self.useFixture(credential_one)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_99fd0c3d","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":22},"in_reply_to":"9ad45d7e_4c9e6a57","updated":"2016-08-09 18:38:16.000000000","message":"Nice, thanks","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9a52356dc23dafc2a0dcc80bfde64c8181ece2fb","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        new_user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(new_user)"},{"line_number":136,"context_line":"        domain \u003d fixtures.Domain(self.client)"},{"line_number":137,"context_line":"        self.useFixture(domain)"},{"line_number":138,"context_line":"        new_project \u003d fixtures.Project(self.client, domain.id)"},{"line_number":139,"context_line":"        self.useFixture(new_project)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_6ce7eee4","line":137,"range":{"start_line":136,"start_character":0,"end_line":137,"end_character":31},"updated":"2016-08-08 21:58:02.000000000","message":"self.project_domain_id can be used to simplify","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5ca098a6c4b2a68dd69a18ab3db3a5364700243a","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        new_user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(new_user)"},{"line_number":136,"context_line":"        domain \u003d fixtures.Domain(self.client)"},{"line_number":137,"context_line":"        self.useFixture(domain)"},{"line_number":138,"context_line":"        new_project \u003d fixtures.Project(self.client, domain.id)"},{"line_number":139,"context_line":"        self.useFixture(new_project)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_19b75c87","line":137,"range":{"start_line":136,"start_character":0,"end_line":137,"end_character":31},"in_reply_to":"9ad45d7e_6ce7eee4","updated":"2016-08-09 18:38:16.000000000","message":"Done","commit_id":"801cc9fb56fa8e7a559709410e5c139c8e9bb008"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"19d9141093bd351c06312963e35162248050a122","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(user)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # project is mandatory attribute if the credential type is ec2"},{"line_number":65,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":66,"context_line":"        self.useFixture(project)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_8d723348","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":70},"updated":"2016-08-12 14:15:44.000000000","message":"add a test where you don\u0027t pass the project and the creation fails","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"93c00c209ec1d3d7011fee743d0125e2c23817b6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":62,"context_line":"        self.useFixture(user)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # project is mandatory attribute if the credential type is ec2"},{"line_number":65,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":66,"context_line":"        self.useFixture(project)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_7a74a89b","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":70},"in_reply_to":"9ad45d7e_8d723348","updated":"2016-08-15 21:02:11.000000000","message":"Nice suggestion. Thanks, did the changes.","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b5d19201245172d521e230d7ceebd3c8e087ad8e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertIn(ec2_credential.entity, credentials)"},{"line_number":131,"context_line":"        self.assertIn(totp_credential.entity, credentials)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_update_credential(self):"},{"line_number":134,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(user)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_a861e5d5","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":30},"updated":"2016-08-12 14:24:40.000000000","message":"another interesting test is trying to update a credential to ec2 type without providing a project","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4988af0c74e100129da724c1ad024c739121a868","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertIn(ec2_credential.entity, credentials)"},{"line_number":131,"context_line":"        self.assertIn(totp_credential.entity, credentials)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_update_credential(self):"},{"line_number":134,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(user)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_4c913752","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":30},"in_reply_to":"3ac371cc_2b04a4be","updated":"2016-08-15 22:24:27.000000000","message":"That\u0027s the cause of the failure at \"check_credential\", but the server needs to validate the update action in the same way it does for the create [1].\n\n[1] https://bugs.launchpad.net/keystone/+bug/1613466","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"549e2be39e139a7a0814392d68827bf7692cfe0d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertIn(ec2_credential.entity, credentials)"},{"line_number":131,"context_line":"        self.assertIn(totp_credential.entity, credentials)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_update_credential(self):"},{"line_number":134,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(user)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_2b04a4be","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":30},"in_reply_to":"3ac371cc_b058fffb","updated":"2016-08-15 21:24:40.000000000","message":"I guess the None attributes are not passed to the server in an update","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"93c00c209ec1d3d7011fee743d0125e2c23817b6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertIn(ec2_credential.entity, credentials)"},{"line_number":131,"context_line":"        self.assertIn(totp_credential.entity, credentials)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_update_credential(self):"},{"line_number":134,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":135,"context_line":"        self.useFixture(user)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_b058fffb","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":30},"in_reply_to":"9ad45d7e_a861e5d5","updated":"2016-08-15 21:02:11.000000000","message":"I tried updating a \u0027cert\u0027 type credential to an \u0027ec2\u0027 type credential without passing a project but I was able to do so. And the test only failed at the check_credential. So, I didn\u0027t change this part. Please le\u0027me know if you still have any concerns. :)","commit_id":"3e1621b3eaa4d888236c39a6a88e495f4a29fffd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"7f0389e699c5c789e3a889d08158c76f353ea3bc","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        # project is mandatory attribute if the credential type is ec2"},{"line_number":65,"context_line":"        credential_ref \u003d {\u0027user\u0027: user.id,"},{"line_number":66,"context_line":"                          \u0027type\u0027: \u0027ec2\u0027,"},{"line_number":67,"context_line":"                          \u0027blob\u0027: (\"{\\\"access\\\":\\\"\" + uuid.uuid4().hex +"},{"line_number":68,"context_line":"                                   \"\\\",\\\"secret\\\":\\\"secretKey\\\"}\")}"},{"line_number":69,"context_line":"        self.assertRaises(http.BadRequest,"},{"line_number":70,"context_line":"                          self.client.credentials.create,"},{"line_number":71,"context_line":"                          **credential_ref)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_cc92474b","line":68,"range":{"start_line":67,"start_character":34,"end_line":68,"end_character":66},"updated":"2016-08-15 22:38:30.000000000","message":"you could extract this into a variable to be reused below","commit_id":"517ced18638d0ce3ce4d867d1af0c77a76afd771"}]}
