)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"13a8d801907074dd4145158c75f8cf5393621e08","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"    provider \u003d fernet"},{"line_number":1844,"context_line":"    key_repository \u003d /etc/keystone/credential-keys/"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"``[credential] provider`` defaults to the only option supplied by keystone,"},{"line_number":1847,"context_line":"``fernet``. There is no reason to change this option unless you wish to provide"},{"line_number":1848,"context_line":"a custom credential encryption implementation. The ``[credential]"},{"line_number":1849,"context_line":"key_repository`` location is a requirement of using ``fernet`` but will default"},{"line_number":1850,"context_line":"to the ``/etc/keystone/credential-keys/`` directory. Both ``[credential]"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_b3b5d0d1","line":1847,"range":{"start_line":1846,"start_character":26,"end_line":1847,"end_character":10},"updated":"2016-09-02 21:42:30.000000000","message":"This is no longer true.","commit_id":"cdf51e08960481dcb82b9252647a98b185a4e964"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4581f65f1588f036da9a48b1c3afca1914a41fad","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"    provider \u003d fernet"},{"line_number":1844,"context_line":"    key_repository \u003d /etc/keystone/credential-keys/"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"``[credential] provider`` defaults to the only option supplied by keystone,"},{"line_number":1847,"context_line":"``fernet``. There is no reason to change this option unless you wish to provide"},{"line_number":1848,"context_line":"a custom credential encryption implementation. The ``[credential]"},{"line_number":1849,"context_line":"key_repository`` location is a requirement of using ``fernet`` but will default"},{"line_number":1850,"context_line":"to the ``/etc/keystone/credential-keys/`` directory. Both ``[credential]"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a89bdaa_8e03430f","line":1847,"range":{"start_line":1846,"start_character":0,"end_line":1847,"end_character":11},"updated":"2016-09-02 22:49:30.000000000","message":"fernet is not the only provider now.  And it now defaults to noop, not fernet.","commit_id":"8d67e6c93aa1c625d669fcee9573a4fe3239e014"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f0331cbea5a941e4b238a6f9fd41ad15b375b6f0","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"    provider \u003d fernet"},{"line_number":1844,"context_line":"    key_repository \u003d /etc/keystone/credential-keys/"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"``[credential] provider`` defaults to the ``noop`` provider. To trnasition to"},{"line_number":1847,"context_line":"encrypting passwrods inside the credentials backend, you should switch"},{"line_number":1848,"context_line":"to using the ``fernet`` provider instead. The ``[credential]"},{"line_number":1849,"context_line":"key_repository`` location is a requirement of using ``fernet`` but will default"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a89bdaa_b41dac68","line":1846,"range":{"start_line":1846,"start_character":64,"end_line":1846,"end_character":74},"updated":"2016-09-03 16:48:09.000000000","message":"transition","commit_id":"6882455200a2e40390474234a5a464ef7670c6a2"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f0331cbea5a941e4b238a6f9fd41ad15b375b6f0","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"    key_repository \u003d /etc/keystone/credential-keys/"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"``[credential] provider`` defaults to the ``noop`` provider. To trnasition to"},{"line_number":1847,"context_line":"encrypting passwrods inside the credentials backend, you should switch"},{"line_number":1848,"context_line":"to using the ``fernet`` provider instead. The ``[credential]"},{"line_number":1849,"context_line":"key_repository`` location is a requirement of using ``fernet`` but will default"},{"line_number":1850,"context_line":"to the ``/etc/keystone/credential-keys/`` directory. Both ``[credential]"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a89bdaa_7413245d","line":1847,"range":{"start_line":1847,"start_character":11,"end_line":1847,"end_character":20},"updated":"2016-09-03 16:48:09.000000000","message":"passwords","commit_id":"6882455200a2e40390474234a5a464ef7670c6a2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b488f0b9a76ac1ce0fc43788eaf0c01a7a297f6","unresolved":false,"context_lines":[{"line_number":1819,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":1820,"context_line":""},{"line_number":1821,"context_line":"As of the Newton release, keystone is capable of encrypting all"},{"line_number":1822,"context_line":"credentials stored in the default ``sql`` backend. Credentials are"},{"line_number":1823,"context_line":"encrypted with the same mechanism used to encrypt Fernet tokens,"},{"line_number":1824,"context_line":"``fernet``.  By default, the credential provider uses a No-Operation"},{"line_number":1825,"context_line":"(noop) provider, to avoid breaking existing deployments. "}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_45b7f0d7","line":1822,"updated":"2016-09-06 15:46:43.000000000","message":"nit: \n\n  If configured to do so, keystone will encrypt credentials with the\n  same mechanism used to encrypt Fernet tokens. To maintain\n  backwards-compatibility with existing deployments, keystone also \n  provides a no-operation provider for credential encryption. It is\n  important to note that the `noop` provider will continue to store\n  credentials as plaintext in the backend, just as it did prior to the\n  Newton release.","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a951a8dfc994d46fc83f93e3991162cd02b2c2bb","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"credentials stored in the default ``sql`` backend. Credentials are"},{"line_number":1823,"context_line":"encrypted with the same mechanism used to encrypt Fernet tokens,"},{"line_number":1824,"context_line":"``fernet``.  By default, the credential provider uses a No-Operation"},{"line_number":1825,"context_line":"(noop) provider, to avoid breaking existing deployments. "},{"line_number":1826,"context_line":""},{"line_number":1827,"context_line":"Keystone provides a fernet based provider. In addition, the encryption"},{"line_number":1828,"context_line":"provider is pluggable in the event you wish to supply a custom"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_2dccd388","line":1825,"range":{"start_line":1825,"start_character":0,"end_line":1825,"end_character":6},"updated":"2016-09-05 11:19:10.000000000","message":"use between ``?","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b488f0b9a76ac1ce0fc43788eaf0c01a7a297f6","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"credentials stored in the default ``sql`` backend. Credentials are"},{"line_number":1823,"context_line":"encrypted with the same mechanism used to encrypt Fernet tokens,"},{"line_number":1824,"context_line":"``fernet``.  By default, the credential provider uses a No-Operation"},{"line_number":1825,"context_line":"(noop) provider, to avoid breaking existing deployments. "},{"line_number":1826,"context_line":""},{"line_number":1827,"context_line":"Keystone provides a fernet based provider. In addition, the encryption"},{"line_number":1828,"context_line":"provider is pluggable in the event you wish to supply a custom"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_c1169554","line":1825,"in_reply_to":"9a89bdaa_2dccd388","updated":"2016-09-06 15:46:43.000000000","message":"Whitespace?\n\nWe should also provide the configuration option needed to change this.","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a951a8dfc994d46fc83f93e3991162cd02b2c2bb","unresolved":false,"context_lines":[{"line_number":1824,"context_line":"``fernet``.  By default, the credential provider uses a No-Operation"},{"line_number":1825,"context_line":"(noop) provider, to avoid breaking existing deployments. "},{"line_number":1826,"context_line":""},{"line_number":1827,"context_line":"Keystone provides a fernet based provider. In addition, the encryption"},{"line_number":1828,"context_line":"provider is pluggable in the event you wish to supply a custom"},{"line_number":1829,"context_line":"implementation."},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"This document details how credential encryption works, how to migrate existing"},{"line_number":1832,"context_line":"credentials in a deployment, and how to manage encryption keys for credentials."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_edb90beb","line":1829,"range":{"start_line":1827,"start_character":56,"end_line":1829,"end_character":15},"updated":"2016-09-05 11:19:10.000000000","message":"think this can continue in the previous paragraph and add the \"noop\" part after it:\n\n  As of the Newton release, keystone encrypts all credentials stored in the default ``sql`` backend. Credentials are encrypted with the same mechanism used to encrypt Fernet tokens, ``fernet``. Keystone provides only one type of\ncredential encryption but the encryption provider is pluggable in the event you wish to supply a custom implementation.\n\n  By default, the credential provider uses a No-Operation\n``noop`` provider, to avoid breaking existing deployments.","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b488f0b9a76ac1ce0fc43788eaf0c01a7a297f6","unresolved":false,"context_lines":[{"line_number":1826,"context_line":""},{"line_number":1827,"context_line":"Keystone provides a fernet based provider. In addition, the encryption"},{"line_number":1828,"context_line":"provider is pluggable in the event you wish to supply a custom"},{"line_number":1829,"context_line":"implementation."},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"This document details how credential encryption works, how to migrate existing"},{"line_number":1832,"context_line":"credentials in a deployment, and how to manage encryption keys for credentials."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_a580bc47","line":1829,"in_reply_to":"9a89bdaa_edb90beb","updated":"2016-09-06 15:46:43.000000000","message":"We should be sure to explain that using the `noop` driver will leave credentials unencrypted in the backend and is insecure.","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"}],"keystone/conf/credential.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8272377c74f826b33f9b1cb731b33104d68b0f47","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    default\u003d\u0027noop\u0027,"},{"line_number":30,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":31,"context_line":"Entry point for credential encryption and decryption operations in the"},{"line_number":32,"context_line":"`keystone.credential.provider` namespace. Keystone provides `no op` and"},{"line_number":33,"context_line":"`fernet` drivers."},{"line_number":34,"context_line":"\"\"\"))"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_1fce8383","line":32,"range":{"start_line":32,"start_character":61,"end_line":32,"end_character":66},"updated":"2016-09-02 19:10:55.000000000","message":"noop","commit_id":"118d346a2728298687ba18a20302836fbe5fc9d5"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"33c9cb45fdcb5429e7b72605c0b558ac10cbe1bd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    default\u003d\u0027noop\u0027,"},{"line_number":30,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":31,"context_line":"Entry point for credential encryption and decryption operations in the"},{"line_number":32,"context_line":"`keystone.credential.provider` namespace. Keystone provides `no op` and"},{"line_number":33,"context_line":"`fernet` drivers."},{"line_number":34,"context_line":"\"\"\"))"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_7f2cefab","line":32,"range":{"start_line":32,"start_character":61,"end_line":32,"end_character":66},"updated":"2016-09-02 19:36:07.000000000","message":"`noop`","commit_id":"d6083b214299e4cf9ad0084d50cee1a8b7c4cfaf"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"33c9cb45fdcb5429e7b72605c0b558ac10cbe1bd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":31,"context_line":"Entry point for credential encryption and decryption operations in the"},{"line_number":32,"context_line":"`keystone.credential.provider` namespace. Keystone provides `no op` and"},{"line_number":33,"context_line":"`fernet` drivers."},{"line_number":34,"context_line":"\"\"\"))"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"key_repository \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_df117b5f","line":33,"range":{"start_line":33,"start_character":16,"end_line":33,"end_character":17},"updated":"2016-09-02 19:36:07.000000000","message":"I think you can leave the blurb about providing a custom entry point.","commit_id":"d6083b214299e4cf9ad0084d50cee1a8b7c4cfaf"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"b4aba2baec1019b360c28b6b41c5a6bf6f4a7dd2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    default\u003d\u0027noop\u0027,"},{"line_number":30,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":31,"context_line":"Entry point for credential encryption and decryption operations in the"},{"line_number":32,"context_line":"`keystone.credential.provider` namespace. Keystone provides `no op` and"},{"line_number":33,"context_line":"`fernet` drivers."},{"line_number":34,"context_line":"\"\"\"))"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_a8ed5f90","line":32,"updated":"2016-09-02 21:08:04.000000000","message":"no op-\u003enoop","commit_id":"bf49cdb0dc84d515505dd924eff0a9c796bcf14e"}],"keystone/credential/providers/noop.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"e9fd4bcb636667aba74c2791e7d57503ee6d6a48","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.credential.providers import core"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class Provider(core.Provider):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_bfd4b747","line":21,"range":{"start_line":20,"start_character":0,"end_line":21,"end_character":29},"updated":"2016-09-02 19:03:07.000000000","message":"not needed","commit_id":"118d346a2728298687ba18a20302836fbe5fc9d5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8272377c74f826b33f9b1cb731b33104d68b0f47","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.credential.providers import core"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class Provider(core.Provider):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_5fc80b75","line":21,"range":{"start_line":20,"start_character":0,"end_line":21,"end_character":29},"in_reply_to":"9a89bdaa_bfd4b747","updated":"2016-09-02 19:10:55.000000000","message":"++","commit_id":"118d346a2728298687ba18a20302836fbe5fc9d5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"6d3fde21ede12273a4968dd786a61562e3f1bcea","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        :param credential: a plaintext representation of a credential"},{"line_number":29,"context_line":"        :returns: an encrypted credential"},{"line_number":30,"context_line":"        \"\"\""},{"line_number":31,"context_line":"        return (credential, \"\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def decrypt(self, credential):"},{"line_number":34,"context_line":"        \"\"\"Attempt to decrypt a credential."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_9f9453e9","line":31,"range":{"start_line":31,"start_character":28,"end_line":31,"end_character":30},"updated":"2016-09-02 19:25:49.000000000","message":"what is this ?","commit_id":"d6083b214299e4cf9ad0084d50cee1a8b7c4cfaf"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"6efc5d6e34f7e71e801e386fd1a16bbe75909c7b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from keystone.credential.providers import core"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Provider(core.Provider):"},{"line_number":18,"context_line":"    def encrypt(self, credential):"},{"line_number":19,"context_line":"        \"\"\"Attempt to encrypt a plaintext credential."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_935fec0d","line":17,"updated":"2016-09-02 21:23:43.000000000","message":"maybe add a docstring explaining the goal of this provider","commit_id":"cdf51e08960481dcb82b9252647a98b185a4e964"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"6efc5d6e34f7e71e801e386fd1a16bbe75909c7b","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Provider(core.Provider):"},{"line_number":18,"context_line":"    def encrypt(self, credential):"},{"line_number":19,"context_line":"        \"\"\"Attempt to encrypt a plaintext credential."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"        :param credential: a plaintext representation of a credential"},{"line_number":22,"context_line":"        :returns: an encrypted credential"},{"line_number":23,"context_line":"        \"\"\""},{"line_number":24,"context_line":"        return (credential, \"\")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_13aafcd4","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":41},"updated":"2016-09-02 21:23:43.000000000","message":"this and the docstring of the method below are not accurate, maybe state that it is returning raw data.","commit_id":"cdf51e08960481dcb82b9252647a98b185a4e964"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4581f65f1588f036da9a48b1c3afca1914a41fad","unresolved":false,"context_lines":[{"line_number":17,"context_line":"class Provider(core.Provider):"},{"line_number":18,"context_line":"\u0027\u0027\u0027 A No Operation Provider."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    Provides the encrypy and decrypt function that pass through"},{"line_number":21,"context_line":"    the credentials unchanged.\u0027\u0027\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def encrypt(self, credential):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_190e9b34","line":20,"range":{"start_line":20,"start_character":17,"end_line":20,"end_character":24},"updated":"2016-09-02 22:49:30.000000000","message":"encrypt","commit_id":"8d67e6c93aa1c625d669fcee9573a4fe3239e014"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4581f65f1588f036da9a48b1c3afca1914a41fad","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        \"\"\"Attempt to decrypt a credential."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :param credential: an credential string"},{"line_number":35,"context_line":"        :returns: a the plain text credential"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        return credential"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_f91f3759","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":23},"updated":"2016-09-02 22:49:30.000000000","message":"remove the \u0027a\u0027 or \u0027the\u0027","commit_id":"8d67e6c93aa1c625d669fcee9573a4fe3239e014"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a951a8dfc994d46fc83f93e3991162cd02b2c2bb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\"Attempt to decrypt a credential."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param credential: an credential string"},{"line_number":36,"context_line":"        :returns: the plain text credential"},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        return credential"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_8d887f24","line":36,"range":{"start_line":36,"start_character":18,"end_line":36,"end_character":43},"updated":"2016-09-05 11:19:10.000000000","message":"it returns the same credential string, right?\n\n  :returns: a credential string","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"}],"keystone/tests/unit/test_backend_sql.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"668503fa71aefc14beacaa78a0fe3a50e06098a6","unresolved":false,"context_lines":[{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    def config_overrides(self):"},{"line_number":1029,"context_line":"        super(SqlCredential, self).config_overrides()"},{"line_number":1030,"context_line":"        # NOTE(lbragstad): The TokenCacheInvalidation tests are coded to work"},{"line_number":1031,"context_line":"        # against a persistent token backend. Only run these with token"},{"line_number":1032,"context_line":"        # providers that issue persistent tokens."},{"line_number":1033,"context_line":"        self.config_fixture.config(group\u003d\u0027credential\u0027, provider\u003d\u0027fernet\u0027)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_33262017","line":1032,"range":{"start_line":1030,"start_character":0,"end_line":1032,"end_character":49},"updated":"2016-09-02 21:43:33.000000000","message":"This note applies to tokens not credentials.","commit_id":"cdf51e08960481dcb82b9252647a98b185a4e964"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a951a8dfc994d46fc83f93e3991162cd02b2c2bb","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"                                        connection\u003d\u0027sqlite:///keystone.db\u0027)"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"class SqlCredential(SqlTests):"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"    def _create_credential_with_user_id(self, user_id\u003duuid.uuid4().hex):"},{"line_number":1015,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_8d2b1feb","line":1012,"range":{"start_line":1012,"start_character":6,"end_line":1012,"end_character":19},"updated":"2016-09-05 11:19:10.000000000","message":"Need to add tests for the \"noop\" provider. Think you can use this class as an abstract one and create two subclasses where the proper methods are overridden.","commit_id":"818ed9a10616b1b878bca8ac5dc6c0642dffaca3"}]}
