)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor Base64 use and other changes for Python3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is WIP until Oslo.Serialization 1.10 is added to global requirements."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"It is an OpenStack goal to make the code base Python 2 and 3 compatible."},{"line_number":12,"context_line":"This commit makes several changes to enable that and extends the py34"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9a68dd71_1d6515e0","line":9,"updated":"2016-01-22 05:57:47.000000000","message":"No longer WIP: https://github.com/openstack/requirements/blob/master/global-requirements.txt#L104","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"}],"barbican/api/controllers/__init__.py":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4dfc5b4cfe60f0a8406916dd621dafb1b4f25ec8","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if isinstance(pecan_req.content_type, bytes):"},{"line_number":130,"context_line":"            content_type \u003d pecan_req.content_type.decode(\u0027utf-8\u0027)"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            content_type \u003d pecan_req.content_type"},{"line_number":133,"context_line":"        m \u003d u._("},{"line_number":134,"context_line":"            \"Unexpected content type: {type}. Expected content types \""},{"line_number":135,"context_line":"            \"are: {expected}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_26491d32","line":132,"updated":"2016-01-12 21:25:16.000000000","message":"There are currently no tests which cover this case.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"e83f4ae8a8137319a6d1184c1f5d4428f8ba05b0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if isinstance(pecan_req.content_type, bytes):"},{"line_number":130,"context_line":"            content_type \u003d pecan_req.content_type.decode(\u0027utf-8\u0027)"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            content_type \u003d pecan_req.content_type"},{"line_number":133,"context_line":"        m \u003d u._("},{"line_number":134,"context_line":"            \"Unexpected content type: {type}. Expected content types \""},{"line_number":135,"context_line":"            \"are: {expected}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_61b93fe9","line":132,"in_reply_to":"da6ed579_26491d32","updated":"2016-01-12 21:29:49.000000000","message":"That line should only be reachable running py34, so a py27 coverage test is not possible.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"9bb16b33cceed177ffabe40364455f5e43380d00","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if isinstance(pecan_req.content_type, bytes):"},{"line_number":130,"context_line":"            content_type \u003d pecan_req.content_type.decode(\u0027utf-8\u0027)"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            content_type \u003d pecan_req.content_type"},{"line_number":133,"context_line":"        m \u003d u._("},{"line_number":134,"context_line":"            \"Unexpected content type: {type}. Expected content types \""},{"line_number":135,"context_line":"            \"are: {expected}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_e103ef0d","line":132,"in_reply_to":"da6ed579_61b93fe9","updated":"2016-01-12 21:42:41.000000000","message":"So in py27 do we know that the pecan content type will always be str (since bytes is basically an alias for str in py2x)?","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"d569a6e2c37a44380ec32015d98a2285e070f29f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if isinstance(pecan_req.content_type, bytes):"},{"line_number":130,"context_line":"            content_type \u003d pecan_req.content_type.decode(\u0027utf-8\u0027)"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            content_type \u003d pecan_req.content_type"},{"line_number":133,"context_line":"        m \u003d u._("},{"line_number":134,"context_line":"            \"Unexpected content type: {type}. Expected content types \""},{"line_number":135,"context_line":"            \"are: {expected}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_51f2ccd3","line":132,"in_reply_to":"da6ed579_e103ef0d","updated":"2016-01-12 21:52:56.000000000","message":"Yep.\nin Py27: \"bytes is str\" returns True.\nin Py34: \"bytes is str\" returns False.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"}],"barbican/plugin/crypto/p11_crypto.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"a316cb23516841307b773b97c18b44630016adfe","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        return kek_meta_dto"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def generate_symmetric(self, generate_dto, kek_meta_dto, project_id):"},{"line_number":161,"context_line":"        byte_length \u003d generate_dto.bit_length // 8"},{"line_number":162,"context_line":"        session \u003d self.pkcs11.create_working_session()"},{"line_number":163,"context_line":"        buf \u003d self.pkcs11.generate_random(byte_length, session)"},{"line_number":164,"context_line":"        self.pkcs11.close_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_06109b4d","line":161,"updated":"2015-10-13 00:09:50.000000000","message":"The java guy in me sees // and thinks \"comment here\" :-)","commit_id":"bedc5a685747669abfffd3f8638bc3cb8f9a3f26"}],"barbican/plugin/crypto/pkcs11.py":[{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"dc13f7ccbd80ad097f7d0b7878ef4cd88bc2ba9b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                attributes[index].value_len \u003d 8"},{"line_number":409,"context_line":"            elif isinstance(attr.value, str):"},{"line_number":410,"context_line":"                val_list.append(self.ffi.new(\"char []\","},{"line_number":411,"context_line":"                                             attr.value.encode(\u0027utf-8\u0027)))"},{"line_number":412,"context_line":"                attributes[index].value_len \u003d len(attr.value)"},{"line_number":413,"context_line":"            elif isinstance(attr.value, bytes):"},{"line_number":414,"context_line":"                val_list.append(self.ffi.new(\"char []\", attr.value))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_06392ed7","line":411,"updated":"2015-11-24 08:38:32.000000000","message":"uhm... so encode the string to utf-8 and then form a new character array... that seems pretty strange to me. Has this been tested? Why is this approach being taken?","commit_id":"e8d9ab7df3e99c59cc5641dd90fc29ef21e70939"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"59c7de5e252fb8d12153af2ddc93dd5a4466d965","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                attributes[index].value_len \u003d 8"},{"line_number":409,"context_line":"            elif isinstance(attr.value, str):"},{"line_number":410,"context_line":"                val_list.append(self.ffi.new(\"char []\","},{"line_number":411,"context_line":"                                             attr.value.encode(\u0027utf-8\u0027)))"},{"line_number":412,"context_line":"                attributes[index].value_len \u003d len(attr.value)"},{"line_number":413,"context_line":"            elif isinstance(attr.value, bytes):"},{"line_number":414,"context_line":"                val_list.append(self.ffi.new(\"char []\", attr.value))"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_0c0317ba","line":411,"in_reply_to":"ba8a016a_06392ed7","updated":"2016-01-11 22:29:39.000000000","message":"Done","commit_id":"e8d9ab7df3e99c59cc5641dd90fc29ef21e70939"},{"author":{"_account_id":12920,"name":"Jason Fritcher","email":"jason_fritcher@symantec.com","username":"jfritcher"},"change_message_id":"7e1a93eda7f9be782592c881212b0d7001966911","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                attributes[index].value_len \u003d 8"},{"line_number":409,"context_line":"            elif isinstance(attr.value, str):"},{"line_number":410,"context_line":"                val_list.append(self.ffi.new(\"char []\","},{"line_number":411,"context_line":"                                             attr.value.encode(\u0027utf-8\u0027)))"},{"line_number":412,"context_line":"                attributes[index].value_len \u003d len(attr.value)"},{"line_number":413,"context_line":"            elif isinstance(attr.value, bytes):"},{"line_number":414,"context_line":"                val_list.append(self.ffi.new(\"char []\", attr.value))"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_6948852e","line":411,"in_reply_to":"ba8a016a_06392ed7","updated":"2016-01-11 22:13:25.000000000","message":"This is creating a cFFI character buffer, and that doesn\u0027t accept unicode characters, so it needs to be encoded to utf-8 first.","commit_id":"e8d9ab7df3e99c59cc5641dd90fc29ef21e70939"}],"barbican/plugin/crypto/simple_crypto.py":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __init__(self, conf\u003dCONF):"},{"line_number":46,"context_line":"        self.master_kek \u003d conf.simple_crypto_plugin.kek"},{"line_number":47,"context_line":"        if isinstance(self.master_kek, str):"},{"line_number":48,"context_line":"            self.master_kek \u003d self.master_kek.encode(\u0027utf-8\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _get_kek(self, kek_meta_dto):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_5daf0d94","line":47,"updated":"2016-01-22 05:57:47.000000000","message":"I like the way this is done over the base. The conf will have a string value. If we find self.master_kek to be a string type we return an encoded version of the string as a bytes object.","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"}],"barbican/tasks/certificate_resources.py":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4dfc5b4cfe60f0a8406916dd621dafb1b4f25ec8","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        )"},{"line_number":470,"context_line":"    else:"},{"line_number":471,"context_line":"        if not isinstance(passphrase, bytes):"},{"line_number":472,"context_line":"            passphrase \u003d passphrase.encode(\u0027utf-8\u0027)"},{"line_number":473,"context_line":"        pkey \u003d crypto.load_privatekey("},{"line_number":474,"context_line":"            crypto.FILETYPE_PEM,"},{"line_number":475,"context_line":"            private_key,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_665dd5e8","line":472,"updated":"2016-01-12 21:25:16.000000000","message":"No test which covers this line.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"e83f4ae8a8137319a6d1184c1f5d4428f8ba05b0","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        )"},{"line_number":470,"context_line":"    else:"},{"line_number":471,"context_line":"        if not isinstance(passphrase, bytes):"},{"line_number":472,"context_line":"            passphrase \u003d passphrase.encode(\u0027utf-8\u0027)"},{"line_number":473,"context_line":"        pkey \u003d crypto.load_privatekey("},{"line_number":474,"context_line":"            crypto.FILETYPE_PEM,"},{"line_number":475,"context_line":"            private_key,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_e1ee8feb","line":472,"in_reply_to":"da6ed579_665dd5e8","updated":"2016-01-12 21:29:49.000000000","message":"That line should only be reachable running py34, so a py27 coverage test is not possible.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"}],"barbican/tests/api/test_resources_policy.py":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            req.accept.header_value.return_value \u003d accept"},{"line_number":130,"context_line":"        else:"},{"line_number":131,"context_line":"            req.accept \u003d None"},{"line_number":132,"context_line":"        req.url \u003d \"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        return req"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_9d3585f8","line":132,"updated":"2016-01-22 05:57:47.000000000","message":"Why is this needed? I don\u0027t see it used anywhere.","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"}],"barbican/tests/plugin/util/test_translations.py":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.denormalize \u003d translations.denormalize_after_decryption"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_ascii_characters_to_utf8_with_plain_text(self):"},{"line_number":227,"context_line":"        secret \u003d b\u0027bam\u0027"},{"line_number":228,"context_line":"        normalized_secret \u003d base64.encode_as_bytes(secret)"},{"line_number":229,"context_line":"        unencrypted \u003d self.denormalize(normalized_secret, \u0027text/plain\u0027)"},{"line_number":230,"context_line":"        self.assertEqual(secret, unencrypted)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_80d43e20","line":227,"updated":"2016-01-22 05:57:47.000000000","message":"I don\u0027t think we need the b\u0027 here since we can encode a text string. https://github.com/openstack/oslo.serialization/blob/master/oslo_serialization/base64.py#L29-L42","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        self.assertEqual(secret, unencrypted)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_ascii_characters_to_utf8_with_app_octet_stream(self):"},{"line_number":233,"context_line":"        unencrypted \u003d self.denormalize(base64.encode_as_bytes(b\u0027bam\u0027),"},{"line_number":234,"context_line":"                                       \u0027application/octet-stream\u0027)"},{"line_number":235,"context_line":"        self.assertEqual(b\u0027bam\u0027, unencrypted)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_802d1e48","line":233,"updated":"2016-01-22 05:57:47.000000000","message":"I don\u0027t think we need the b\u0027 here since we can encode a text string. https://github.com/openstack/oslo.serialization/blob/master/oslo_serialization/base64.py#L29-L42","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"}],"tox.ini":[{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"9222b29bf762b5848cc36509ede9a922df639e83","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    {[testenv]deps}"},{"line_number":28,"context_line":"    nose"},{"line_number":29,"context_line":"commands \u003d"},{"line_number":30,"context_line":"    nosetests barbican/tests"},{"line_number":31,"context_line":"whitelist_externals \u003d bash"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":4,"id":"3a29b11f_1408a290","line":30,"updated":"2015-10-20 05:24:05.000000000","message":"May want to add {posargs} so that user can specify path, verbose, etc.","commit_id":"397cb8ea43257f109bd2fd98fdb593b25b8759da"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"4dfc5b4cfe60f0a8406916dd621dafb1b4f25ec8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"[testenv:releasenotes]"},{"line_number":26,"context_line":"commands \u003d sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"[testenv:py34]"},{"line_number":29,"context_line":"deps \u003d"},{"line_number":30,"context_line":"    {[testenv]deps}"},{"line_number":31,"context_line":"    nose"}],"source_content_type":"text/x-properties","patch_set":8,"id":"da6ed579_a6366d01","line":28,"updated":"2016-01-12 21:25:16.000000000","message":"This gate runs nose, so this is fine since we have the same behavior, but should we consider running tests on top and in the gate in the future in order to have the same process as py27. I give a +1 for this, just adding it as a suggestion for the future.","commit_id":"03d4c2d8ce2854818e11fd901ee23ba2b8c956f8"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"655e9a6fbcccecebd8538a365edfc3a2673284b7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    {[testenv]deps}"},{"line_number":31,"context_line":"    nose"},{"line_number":32,"context_line":"commands \u003d"},{"line_number":33,"context_line":"    nosetests barbican/tests"},{"line_number":34,"context_line":"whitelist_externals \u003d bash"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":9,"id":"9a68dd71_40b5e6eb","line":33,"updated":"2016-01-22 05:57:47.000000000","message":"Any reason we run nosetest over testr.","commit_id":"e1b772409b99fd8b89b206af181fc8c5a57e1cba"}]}
