)]}'
{"keystoneauth1/fixture/hooks.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"Module providing a set of hooksr specially designed for"},{"line_number":16,"context_line":"   interacting with clouds and keystone authentication."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":":author: Yolanda Robla"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_ca385ca2","line":15,"range":{"start_line":15,"start_character":29,"end_line":15,"end_character":35},"updated":"2016-05-04 07:35:06.000000000","message":"hooks*","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# it will mask all credentials for a given content"},{"line_number":25,"context_line":"def mask_credentials(content):"},{"line_number":26,"context_line":"    content \u003d re.sub(r\u0027\"tenantName\": \"(.*?)\"\u0027,"},{"line_number":27,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_aa5400ca","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":50},"updated":"2016-05-04 07:35:06.000000000","message":"make this a docstring instead","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    return content"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# it will set token expiration in the long future"},{"line_number":36,"context_line":"def update_expiration(content):"},{"line_number":37,"context_line":"    content \u003d re.sub(r\u0027\"expires\": \"(.*?)\"\u0027,"},{"line_number":38,"context_line":"                     \u0027\"expires\": \"9999-12-31T23:59:59Z\"\u0027, content)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_ca5fbce2","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":49},"updated":"2016-05-04 07:35:06.000000000","message":"make this a docstring instead","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    return content"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def pre_record_hook(interaction, cassette):"},{"line_number":43,"context_line":"    interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("},{"line_number":44,"context_line":"        interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":45,"context_line":"    interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_4a6c4c9d","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":19},"updated":"2016-05-04 07:35:06.000000000","message":"add a docstring here","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    return content"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def pre_record_hook(interaction, cassette):"},{"line_number":43,"context_line":"    interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("},{"line_number":44,"context_line":"        interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":45,"context_line":"    interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_2a5750cb","line":42,"range":{"start_line":42,"start_character":33,"end_line":42,"end_character":41},"updated":"2016-05-04 07:35:06.000000000","message":"cassette is not used","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"3a3d4b9f3c188abf45ffdad50980c1c81909a75e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    return content"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def pre_record_hook(interaction, cassette):"},{"line_number":43,"context_line":"    interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("},{"line_number":44,"context_line":"        interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":45,"context_line":"    interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_e5862b15","line":42,"range":{"start_line":42,"start_character":33,"end_line":42,"end_character":41},"updated":"2016-05-04 08:09:33.000000000","message":"that is part of the method signature, it expects two parameters here","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"0bc9a2d6cdc9dd021e45e2b7a082aca89274e497","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("},{"line_number":52,"context_line":"        interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":53,"context_line":"    interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027] \u003d mask_credentials("},{"line_number":54,"context_line":"        interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":55,"context_line":"    interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027] \u003d update_expiration("},{"line_number":56,"context_line":"        interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_3a962c94","line":53,"updated":"2016-05-05 16:19:42.000000000","message":"What about something like:\n\n    response_body \u003d interaction.data[\u0027response\u0027][\u0027body\u0027]\n    response_body[\u0027string\u0027] \u003d update_expiration(mask_credentials(\n        response_body[\u0027string\u0027]))","commit_id":"56a90251c9f1ebcd7948a54c0af2cfc31404068f"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"651a79f48c58c58fac7b71a5304f636fcf6936b6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    - mask user, project and password in the saved data"},{"line_number":49,"context_line":"    - set token expiration time to an inifinite time."},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    request_body \u003d interaction.data[\u0027request\u0027][\u0027body\u0027]"},{"line_number":52,"context_line":"    request_body[\u0027string\u0027] \u003d mask_credentials("},{"line_number":53,"context_line":"        request_body[\u0027string\u0027])"},{"line_number":54,"context_line":"    response_body \u003d interaction.data[\u0027response\u0027][\u0027body\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_0d8fb723","line":51,"updated":"2016-05-05 18:44:04.000000000","message":"One other note:\n\nRight now, let\u0027s say that we make a post that has\n\n    {\"tenantName\": \"test-tenant\", \"username\": \"demo\", \"password\": \"password\"}\n\nIn the body, this pre-record hook only goes one way. In other words, when this gets returned to whatever made the request then it will see\n\n    {\"tenantName\": \"dummy\", \"username\": \"dummy\", \"password\": \"********\"}\n\nevery time. This includes when any of those are in the response and it\u0027s played back. That may not be a problem, but another solution may be using hooks as we describe towards the end of the documentation here: https://betamax.readthedocs.io/en/latest/configuring.html#filtering-sensitive-data\n\nI\u0027m not sure it\u0027s necessary or even preferable for Keystone, it\u0027s just something I thought I would note.","commit_id":"363b048a77b205b6371fc4dd9bc7267e9a39397f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"28d1b1b8ff0a04be43f8cb8b8ded3ccbfa5d50ab","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from betamax.cassette import cassette"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def find_credentials(body, credentials\u003d[\u0027username\u0027, \u0027password\u0027, \u0027tenantName\u0027,"},{"line_number":27,"context_line":"                                        \u0027expires\u0027]):"},{"line_number":28,"context_line":"    data \u003d json.loads(body)"},{"line_number":29,"context_line":"    return {token: data.get(token) for token in credentials}"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_cdbc8a08","line":26,"updated":"2016-05-10 23:59:38.000000000","message":"Do not use mutable default arguments.","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9fff68e67ed22b4a6011fa0e504ec0aff0f10ebb","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from betamax.cassette import cassette"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def find_credentials(body, credentials\u003d[\u0027username\u0027, \u0027password\u0027, \u0027tenantName\u0027,"},{"line_number":27,"context_line":"                                        \u0027expires\u0027]):"},{"line_number":28,"context_line":"    data \u003d json.loads(body)"},{"line_number":29,"context_line":"    return {token: data.get(token) for token in credentials}"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_cda80a23","line":26,"in_reply_to":"dab17558_cdbc8a08","updated":"2016-05-11 00:30:07.000000000","message":"tenantName is v2 only, why do we care about tenant name and not like project_name?","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9fff68e67ed22b4a6011fa0e504ec0aff0f10ebb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    request_credentials \u003d find_credentials("},{"line_number":39,"context_line":"        interaction.data[\u0027request\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":40,"context_line":"    response_credentials \u003d find_credentials("},{"line_number":41,"context_line":"        interaction.data[\u0027response\u0027][\u0027body\u0027][\u0027string\u0027])"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    total_creds \u003d request_credentials.items() + response_credentials.items()"},{"line_number":44,"context_line":"    extra_placeholders \u003d [cassette.Placeholder(\u0027\u003c\u0027 + token + \u0027\u003e\u0027, value)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_ada5c647","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":19},"updated":"2016-05-11 00:30:07.000000000","message":"why would there be credentials in the response?","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"5f5fd16633e5bb69b6487881f9600e460d837bbc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def mask_credentials(content):"},{"line_number":26,"context_line":"    \"\"\"it will mask all credentials for a given content.\"\"\""},{"line_number":27,"context_line":"    content \u003d re.sub(r\u0027\"tenantName\": \"(.*?)\"\u0027,"},{"line_number":28,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"},{"line_number":29,"context_line":"    content \u003d re.sub(r\u0027\"username\": \"(.*?)\"\u0027,"},{"line_number":30,"context_line":"                     \u0027\"username\": \"dummy\"\u0027, content)"},{"line_number":31,"context_line":"    content \u003d re.sub(r\u0027\"password\": \"(.*?)\"\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"bab6814e_145aedf1","line":28,"updated":"2016-05-23 13:23:28.000000000","message":"Would domain_name/domain_id also be sensitive information to sanitize here?","commit_id":"0d364782c6576c5f1f8b7e18533e404a344f0c8e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"742ab454a669a65cfd4fd87b05c32ff9ae0ebc07","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def mask_credentials(content):"},{"line_number":26,"context_line":"    \"\"\"it will mask all credentials for a given content.\"\"\""},{"line_number":27,"context_line":"    content \u003d re.sub(r\u0027\"tenantName\": \"(.*?)\"\u0027,"},{"line_number":28,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"},{"line_number":29,"context_line":"    content \u003d re.sub(r\u0027\"username\": \"(.*?)\"\u0027,"},{"line_number":30,"context_line":"                     \u0027\"username\": \"dummy\"\u0027, content)"},{"line_number":31,"context_line":"    content \u003d re.sub(r\u0027\"password\": \"(.*?)\"\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"bab6814e_670ad48b","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":54},"updated":"2016-05-21 22:32:20.000000000","message":"i would also recommend adding projectName to this as well","commit_id":"0d364782c6576c5f1f8b7e18533e404a344f0c8e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1997469f47fe8408a33ff3cfdf09aede417e6aed","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def mask_credentials(content):"},{"line_number":26,"context_line":"    \"\"\"it will mask all credentials for a given content.\"\"\""},{"line_number":27,"context_line":"    content \u003d re.sub(r\u0027\"tenantName\": \"(.*?)\"\u0027,"},{"line_number":28,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"},{"line_number":29,"context_line":"    content \u003d re.sub(r\u0027\"username\": \"(.*?)\"\u0027,"},{"line_number":30,"context_line":"                     \u0027\"username\": \"dummy\"\u0027, content)"},{"line_number":31,"context_line":"    content \u003d re.sub(r\u0027\"password\": \"(.*?)\"\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_d0b33ce8","line":28,"range":{"start_line":27,"start_character":4,"end_line":28,"end_character":54},"updated":"2016-05-23 19:19:23.000000000","message":"we\u0027re going to need to add V3 masking as well. not just v2.","commit_id":"aae4612534afc6469997afb0443fa2e9d87411e8"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1997469f47fe8408a33ff3cfdf09aede417e6aed","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\"it will mask all credentials for a given content.\"\"\""},{"line_number":27,"context_line":"    content \u003d re.sub(r\u0027\"tenantName\": \"(.*?)\"\u0027,"},{"line_number":28,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"},{"line_number":29,"context_line":"    content \u003d re.sub(r\u0027\"username\": \"(.*?)\"\u0027,"},{"line_number":30,"context_line":"                     \u0027\"username\": \"dummy\"\u0027, content)"},{"line_number":31,"context_line":"    content \u003d re.sub(r\u0027\"password\": \"(.*?)\"\u0027,"},{"line_number":32,"context_line":"                     \u0027\"password\": \"********\"\u0027, content)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_f0e640af","line":29,"range":{"start_line":29,"start_character":21,"end_line":29,"end_character":43},"updated":"2016-05-23 19:19:23.000000000","message":"I hope we never run into this, but if the user has a literal \" in her username, this will break/not work right.\n\nA known edge-case. This also applies to tenantName","commit_id":"aae4612534afc6469997afb0443fa2e9d87411e8"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1997469f47fe8408a33ff3cfdf09aede417e6aed","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                     \u0027\"tenantName\": \"dummy\"\u0027, content)"},{"line_number":29,"context_line":"    content \u003d re.sub(r\u0027\"username\": \"(.*?)\"\u0027,"},{"line_number":30,"context_line":"                     \u0027\"username\": \"dummy\"\u0027, content)"},{"line_number":31,"context_line":"    content \u003d re.sub(r\u0027\"password\": \"(.*?)\"\u0027,"},{"line_number":32,"context_line":"                     \u0027\"password\": \"********\"\u0027, content)"},{"line_number":33,"context_line":"    return content"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_50f8ec49","line":31,"updated":"2016-05-23 19:19:23.000000000","message":"Passwords are a bit trickier, same thing applies as above comment with \" being in the password.","commit_id":"aae4612534afc6469997afb0443fa2e9d87411e8"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1997469f47fe8408a33ff3cfdf09aede417e6aed","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def update_expiration(content):"},{"line_number":37,"context_line":"    \"\"\"it will set token expiration in the long future.\"\"\""},{"line_number":38,"context_line":"    content \u003d re.sub(r\u0027\"expires\": \"(.*?)\"\u0027,"},{"line_number":39,"context_line":"                     \u0027\"expires\": \"9999-12-31T23:59:59Z\"\u0027, content)"},{"line_number":40,"context_line":"    return content"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_70da5019","line":39,"range":{"start_line":39,"start_character":34,"end_line":39,"end_character":54},"updated":"2016-05-23 19:19:23.000000000","message":"as long as nothing breaks with this i\u0027m good with it, though usually i try and keep it to like 2030 or some such, just so we aren\u0027t hitting other potential edge cases because we\u0027re lookingat the year 9999","commit_id":"aae4612534afc6469997afb0443fa2e9d87411e8"}],"keystoneauth1/tests/unit/test_betamax_hooks.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"28d1b1b8ff0a04be43f8cb8b8ded3ccbfa5d50ab","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            Placeholder(placeholder\u003d\u0027\u003cexpires\u003e\u0027,"},{"line_number":77,"context_line":"                        replace\u003du\u00272001-01-01T00:00:00Z\u0027),"},{"line_number":78,"context_line":"            Placeholder(placeholder\u003d\u0027\u003ctenantName\u003e\u0027, replace\u003du\u0027tenant\u0027)]"},{"line_number":79,"context_line":"        self.assertEqual(cassette.placeholders, expected_placeholders)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_6dc3de89","line":79,"updated":"2016-05-10 23:59:38.000000000","message":"++ what adam said, please dict compare if it\u0027s a dict.","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bbdc2ee65e07ae3cd9fa7f602890a37eab648a55","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            Placeholder(placeholder\u003d\u0027\u003cexpires\u003e\u0027,"},{"line_number":77,"context_line":"                        replace\u003du\u00272001-01-01T00:00:00Z\u0027),"},{"line_number":78,"context_line":"            Placeholder(placeholder\u003d\u0027\u003ctenantName\u003e\u0027, replace\u003du\u0027tenant\u0027)]"},{"line_number":79,"context_line":"        self.assertEqual(cassette.placeholders, expected_placeholders)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_7dde3e12","line":79,"updated":"2016-05-09 18:25:32.000000000","message":"this should probably be a dictionary compare.  It might just be the ordering that is wrong, but we really want to see that the same key gets the same value from both dicts.","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"861939d17173d1e4ab267acfd69412cd6952d7f1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                    \u0027username\u0027: \u0027user\u0027,"},{"line_number":48,"context_line":"                    \u0027password\u0027: \u0027password\u0027"},{"line_number":49,"context_line":"                },"},{"line_number":50,"context_line":"                \u0027tenantName\u0027: \u0027dummy\u0027,"},{"line_number":51,"context_line":"            },"},{"line_number":52,"context_line":"            \u0027access\u0027: {"},{"line_number":53,"context_line":"                \u0027token\u0027: {"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_709250f8","line":50,"range":{"start_line":50,"start_character":30,"end_line":50,"end_character":38},"updated":"2016-05-23 19:20:33.000000000","message":"should this be different than the result post record hook?","commit_id":"aae4612534afc6469997afb0443fa2e9d87411e8"}],"setup.cfg":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"saml2 \u003d"},{"line_number":29,"context_line":"  lxml\u003e\u003d2.3 # BSD"},{"line_number":30,"context_line":"betamax \u003d"},{"line_number":31,"context_line":"  betamax\u003e\u003d0.7.0 # Apache-2.0"},{"line_number":32,"context_line":"  fixtures\u003c2.0,\u003e\u003d1.3.1 # Apache-2.0/BSD"},{"line_number":33,"context_line":"  mock\u003e\u003d1.2 # BSD"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"1a122d0e_6a1f8809","line":31,"range":{"start_line":31,"start_character":2,"end_line":31,"end_character":29},"updated":"2016-05-04 07:35:06.000000000","message":"make this change in global-requirements, bump the minimum version","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"260066c02f47ac829dd92c0b2dfc95e419252b0c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"saml2 \u003d"},{"line_number":29,"context_line":"  lxml\u003e\u003d2.3 # BSD"},{"line_number":30,"context_line":"betamax \u003d"},{"line_number":31,"context_line":"  betamax\u003e\u003d0.7.0 # Apache-2.0"},{"line_number":32,"context_line":"  fixtures\u003c2.0,\u003e\u003d1.3.1 # Apache-2.0/BSD"},{"line_number":33,"context_line":"  mock\u003e\u003d1.2 # BSD"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"1a122d0e_458f1f2e","line":31,"range":{"start_line":31,"start_character":2,"end_line":31,"end_character":29},"in_reply_to":"1a122d0e_6a1f8809","updated":"2016-05-04 08:08:44.000000000","message":"yes, i had it pending. I didn\u0027t propose the change because our mirrors currently don\u0027t have this version available.","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"}],"test-requirements.txt":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f8e70446b9b8d880db51d3d4fc118d14f1ccf55d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"oslo.utils\u003e\u003d3.5.0 # Apache-2.0"},{"line_number":15,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":16,"context_line":"os-testr\u003e\u003d0.4.1 # Apache-2.0"},{"line_number":17,"context_line":"betamax\u003e\u003d0.7.0 # Apache-2.0"},{"line_number":18,"context_line":"pycrypto\u003e\u003d2.6 # Public Domain"},{"line_number":19,"context_line":"reno\u003e\u003d1.6.2 # Apache2"},{"line_number":20,"context_line":"requests-mock\u003e\u003d0.7.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"1a122d0e_aa19a024","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":27},"updated":"2016-05-04 07:35:06.000000000","message":"same comment as in setup.cfg","commit_id":"6aac132d8e8d2dfeb4af72d56cb2bc7445dbc262"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9fff68e67ed22b4a6011fa0e504ec0aff0f10ebb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"oslo.utils\u003e\u003d3.5.0 # Apache-2.0"},{"line_number":15,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":16,"context_line":"os-testr\u003e\u003d0.4.1 # Apache-2.0"},{"line_number":17,"context_line":"betamax\u003e\u003d0.7.0 # Apache-2.0"},{"line_number":18,"context_line":"pycrypto\u003e\u003d2.6 # Public Domain"},{"line_number":19,"context_line":"reno\u003e\u003d1.6.2 # Apache2"},{"line_number":20,"context_line":"requests-mock\u003e\u003d0.7.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"dab17558_cd75aafa","line":17,"range":{"start_line":17,"start_character":25,"end_line":17,"end_character":26},"updated":"2016-05-11 00:30:07.000000000","message":"let global-requirements do this.","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e5381e7b27d97edb949ff5616f14103ec1459012","unresolved":false,"context_lines":[{"line_number":14,"context_line":"oslo.utils\u003e\u003d3.5.0 # Apache-2.0"},{"line_number":15,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":16,"context_line":"os-testr\u003e\u003d0.4.1 # Apache-2.0"},{"line_number":17,"context_line":"betamax\u003e\u003d0.7.0 # Apache-2.0"},{"line_number":18,"context_line":"pycrypto\u003e\u003d2.6 # Public Domain"},{"line_number":19,"context_line":"reno\u003e\u003d1.6.2 # Apache2"},{"line_number":20,"context_line":"requests-mock\u003e\u003d0.7.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"dab17558_4d1d3165","line":17,"range":{"start_line":17,"start_character":25,"end_line":17,"end_character":26},"in_reply_to":"dab17558_cd75aafa","updated":"2016-05-11 06:30:09.000000000","message":"++","commit_id":"cae9ca6770dfca26f835d4ef4102429fc0c87b2e"}]}
