)]}'
{"swift/common/middleware/keymaster.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"75edd7cb866f4e58b77c9b6580ec0661837e4ad6","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def __call__(self, env, start_response):"},{"line_number":184,"context_line":"        req \u003d Request(env)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        if env.get(CRYPTO_KEY_CALLBACK):"},{"line_number":187,"context_line":"            return self.app(env, start_response)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_b599917b","line":186,"updated":"2016-05-26 17:37:51.000000000","message":"sorry, on second thoughts we probably don\u0027t need this - see other comments on test","commit_id":"6e497ff7755aaa163597fce72cebc0b7027add75"}],"test/unit/common/middleware/test_encrypter_decrypter.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cls._test_context \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        self.hex_value \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        self.container_path \u003d \u0027http://localhost:8080/v1/a/\u0027 + self.hex_value"},{"line_number":53,"context_line":"        self.object_path \u003d self.container_path + \u0027/o\u0027"},{"line_number":54,"context_line":"        self.plaintext \u003d \u0027unencrypted body content\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6300d302","line":51,"updated":"2016-05-23 17:50:37.000000000","message":"how about naming the variable \u0027obj_name\u0027?","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5bb7d49f0983103103825f2a8f181d05641c25eb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cls._test_context \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        self.hex_value \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        self.container_path \u003d \u0027http://localhost:8080/v1/a/\u0027 + self.hex_value"},{"line_number":53,"context_line":"        self.object_path \u003d self.container_path + \u0027/o\u0027"},{"line_number":54,"context_line":"        self.plaintext \u003d \u0027unencrypted body content\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_82c93faf","line":51,"in_reply_to":"bab6814e_6300d302","updated":"2016-05-24 13:56:45.000000000","message":"oops I mean \"container_name\"","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cls._test_context \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        self.hex_value \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        self.container_path \u003d \u0027http://localhost:8080/v1/a/\u0027 + self.hex_value"},{"line_number":53,"context_line":"        self.object_path \u003d self.container_path + \u0027/o\u0027"},{"line_number":54,"context_line":"        self.plaintext \u003d \u0027unencrypted body content\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_dd9abe6d","line":51,"in_reply_to":"bab6814e_82c93faf","updated":"2016-05-25 16:31:49.000000000","message":"Done. But if purge sysmeta headers gets merged first, i\u0027ll rebase this.","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def test_ondisk_data_after_write_with_crypto(self):"},{"line_number":203,"context_line":"        self._create_container(self.proxy_app, policy_name\u003d\u0027one\u0027)"},{"line_number":204,"context_line":"        env \u003d {CRYPTO_KEY_CALLBACK: fetch_crypto_keys}"},{"line_number":205,"context_line":"        enc \u003d encrypter.Encrypter(self.proxy_app, {})"},{"line_number":206,"context_line":"        self._put_object(enc, self.plaintext, env)"},{"line_number":207,"context_line":"        self._post_object(enc, env)"},{"line_number":208,"context_line":"        ring_object \u003d self.proxy_app.get_object_ring(1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_4644bd48","line":205,"updated":"2016-05-23 17:50:37.000000000","message":"It\u0027s interesting that you need to call the encrypter directly - this reveals that perhaps our keymaster should look for a pre-existing callback in the env and if one exists then ignore the request?\n\nThat might be worth fixing. And then you should be able to just call self.crypto_app","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def test_ondisk_data_after_write_with_crypto(self):"},{"line_number":203,"context_line":"        self._create_container(self.proxy_app, policy_name\u003d\u0027one\u0027)"},{"line_number":204,"context_line":"        env \u003d {CRYPTO_KEY_CALLBACK: fetch_crypto_keys}"},{"line_number":205,"context_line":"        enc \u003d encrypter.Encrypter(self.proxy_app, {})"},{"line_number":206,"context_line":"        self._put_object(enc, self.plaintext, env)"},{"line_number":207,"context_line":"        self._post_object(enc, env)"},{"line_number":208,"context_line":"        ring_object \u003d self.proxy_app.get_object_ring(1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_bdca5a4d","line":205,"in_reply_to":"bab6814e_4644bd48","updated":"2016-05-25 16:31:49.000000000","message":"Although i made this change, the only use case we have for this check in keymaster is testing right?","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        env \u003d {CRYPTO_KEY_CALLBACK: fetch_crypto_keys}"},{"line_number":205,"context_line":"        enc \u003d encrypter.Encrypter(self.proxy_app, {})"},{"line_number":206,"context_line":"        self._put_object(enc, self.plaintext, env)"},{"line_number":207,"context_line":"        self._post_object(enc, env)"},{"line_number":208,"context_line":"        ring_object \u003d self.proxy_app.get_object_ring(1)"},{"line_number":209,"context_line":"        partition, nodes \u003d ring_object.get_nodes(\u0027a\u0027, self.hex_value, \u0027o\u0027)"},{"line_number":210,"context_line":"        policy \u003d self._test_context[\"test_POLICIES\"][1]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_66174145","line":207,"updated":"2016-05-23 17:50:37.000000000","message":"don\u0027t re-use the same env dict for two requests - the dict could be modified by the app.","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        env \u003d {CRYPTO_KEY_CALLBACK: fetch_crypto_keys}"},{"line_number":205,"context_line":"        enc \u003d encrypter.Encrypter(self.proxy_app, {})"},{"line_number":206,"context_line":"        self._put_object(enc, self.plaintext, env)"},{"line_number":207,"context_line":"        self._post_object(enc, env)"},{"line_number":208,"context_line":"        ring_object \u003d self.proxy_app.get_object_ring(1)"},{"line_number":209,"context_line":"        partition, nodes \u003d ring_object.get_nodes(\u0027a\u0027, self.hex_value, \u0027o\u0027)"},{"line_number":210,"context_line":"        policy \u003d self._test_context[\"test_POLICIES\"][1]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_7d0c7294","line":207,"in_reply_to":"bab6814e_66174145","updated":"2016-05-25 16:31:49.000000000","message":"Done","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                meta \u003d df.get_metadata()"},{"line_number":220,"context_line":"                contents \u003d \u0027\u0027.join(df.reader())"},{"line_number":221,"context_line":"                metadata \u003d dict((k.lower(), v) for k, v in meta.items())"},{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e65971fe","line":222,"updated":"2016-05-23 17:50:37.000000000","message":"if you were to line wrap after \"json.loads(\" then you can probably avoid the ugly \\ line break","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                meta \u003d df.get_metadata()"},{"line_number":220,"context_line":"                contents \u003d \u0027\u0027.join(df.reader())"},{"line_number":221,"context_line":"                metadata \u003d dict((k.lower(), v) for k, v in meta.items())"},{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_5d0fee87","line":222,"in_reply_to":"bab6814e_e65971fe","updated":"2016-05-25 16:31:49.000000000","message":"Done","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                contents \u003d \u0027\u0027.join(df.reader())"},{"line_number":221,"context_line":"                metadata \u003d dict((k.lower(), v) for k, v in meta.items())"},{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("},{"line_number":226,"context_line":"                    crypto_meta_body[\u0027iv\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e645f16e","line":223,"updated":"2016-05-23 17:50:37.000000000","message":"It would be ok to use crypto_utils.load_crypto_meta here since it is tested elsewhere.","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                contents \u003d \u0027\u0027.join(df.reader())"},{"line_number":221,"context_line":"                metadata \u003d dict((k.lower(), v) for k, v in meta.items())"},{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("},{"line_number":226,"context_line":"                    crypto_meta_body[\u0027iv\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_3d794afd","line":223,"in_reply_to":"bab6814e_e645f16e","updated":"2016-05-25 16:31:49.000000000","message":"Done","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("},{"line_number":226,"context_line":"                    crypto_meta_body[\u0027iv\u0027])"},{"line_number":227,"context_line":"                exp_enc_body \u003d encrypt(self.plaintext,"},{"line_number":228,"context_line":"                                       fetch_crypto_keys()[\u0027object\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_860225b2","line":225,"updated":"2016-05-23 17:50:37.000000000","message":"assign result to a new var e.g. iv \u003d","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                crypto_meta_body \u003d \\"},{"line_number":223,"context_line":"                    json.loads(urllib.unquote_plus"},{"line_number":224,"context_line":"                               (metadata[\u0027x-object-sysmeta-crypto-meta\u0027]))"},{"line_number":225,"context_line":"                crypto_meta_body[\u0027iv\u0027] \u003d base64.b64decode("},{"line_number":226,"context_line":"                    crypto_meta_body[\u0027iv\u0027])"},{"line_number":227,"context_line":"                exp_enc_body \u003d encrypt(self.plaintext,"},{"line_number":228,"context_line":"                                       fetch_crypto_keys()[\u0027object\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_7d83d2cc","line":225,"in_reply_to":"bab6814e_860225b2","updated":"2016-05-25 16:31:49.000000000","message":"Done","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                                       fetch_crypto_keys()[\u0027object\u0027],"},{"line_number":229,"context_line":"                                       crypto_meta_body[\u0027iv\u0027])"},{"line_number":230,"context_line":"                self.assertEqual(exp_enc_body, contents)"},{"line_number":231,"context_line":"                crypto_meta \u003d \\"},{"line_number":232,"context_line":"                    json.loads(urllib.unquote_plus(metadata["},{"line_number":233,"context_line":"                               \u0027x-object-transient-sysmeta-crypto-meta-fruit\u0027])"},{"line_number":234,"context_line":"                               )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_26709971","line":231,"updated":"2016-05-23 17:50:37.000000000","message":"ditto","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                    json.loads(urllib.unquote_plus(metadata["},{"line_number":233,"context_line":"                               \u0027x-object-transient-sysmeta-crypto-meta-fruit\u0027])"},{"line_number":234,"context_line":"                               )"},{"line_number":235,"context_line":"                crypto_meta[\u0027iv\u0027] \u003d base64.b64decode(crypto_meta[\u0027iv\u0027])"},{"line_number":236,"context_line":"                exp_enc_meta \u003d base64.b64encode(encrypt"},{"line_number":237,"context_line":"                                                (\u0027Kiwi\u0027,"},{"line_number":238,"context_line":"                                                 fetch_crypto_keys()[\u0027object\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_e6ffb163","line":235,"updated":"2016-05-23 17:50:37.000000000","message":"ditto assign to a var","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a0138a75af7909e033c7d9042cc3059110a9ca1a","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                                (\u0027Kiwi\u0027,"},{"line_number":238,"context_line":"                                                 fetch_crypto_keys()[\u0027object\u0027],"},{"line_number":239,"context_line":"                                                 crypto_meta[\u0027iv\u0027]))"},{"line_number":240,"context_line":"                self.assertEqual(metadata[\u0027x-object-meta-fruit\u0027], exp_enc_meta)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_write_without_crypto_read_with_crypto(self):"},{"line_number":243,"context_line":"        self._create_container(self.proxy_app, policy_name\u003d\u0027one\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_c6df0d0b","line":240,"updated":"2016-05-23 17:50:37.000000000","message":"could you now issue a GET via a decrypter with same trick of placing your own fetch keys callback in the GET request env, and check that the response is decrypted?\n\nOnce you have that the I think TestEncrypterDecrypter could be deleted...would you agree?","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8a47914ecba688261ae9f7f1b9c6bc25b0a4e2d0","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                                                (\u0027Kiwi\u0027,"},{"line_number":238,"context_line":"                                                 fetch_crypto_keys()[\u0027object\u0027],"},{"line_number":239,"context_line":"                                                 crypto_meta[\u0027iv\u0027]))"},{"line_number":240,"context_line":"                self.assertEqual(metadata[\u0027x-object-meta-fruit\u0027], exp_enc_meta)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_write_without_crypto_read_with_crypto(self):"},{"line_number":243,"context_line":"        self._create_container(self.proxy_app, policy_name\u003d\u0027one\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_7dd112cd","line":240,"in_reply_to":"bab6814e_c6df0d0b","updated":"2016-05-25 16:31:49.000000000","message":"I agree. Added a GET request and removed TestEncrypterDecrypter now. Thanks, it\u0027d have been redundant otherwise.","commit_id":"fbb9a2d1c949df32d9f4fdf87a1399ec782e3c89"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"75edd7cb866f4e58b77c9b6580ec0661837e4ad6","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                    metadata[\u0027x-object-sysmeta-crypto-meta\u0027])[\u0027iv\u0027]"},{"line_number":306,"context_line":"                unwrap_body_key \u003d load_crypto_meta("},{"line_number":307,"context_line":"                    metadata[\u0027x-object-sysmeta-crypto-meta\u0027])[\u0027key\u0027]"},{"line_number":308,"context_line":"                obj_key \u003d fetch_crypto_keys()[\u0027object\u0027]"},{"line_number":309,"context_line":"                body_key \u003d crypto.Crypto({}).unwrap_key("},{"line_number":310,"context_line":"                    obj_key, unwrap_body_key, body_iv)"},{"line_number":311,"context_line":"                exp_enc_body \u003d encrypt(self.plaintext,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_55dae54b","line":308,"updated":"2016-05-26 17:37:51.000000000","message":"duh! I only just realised we don\u0027t need to do this - we have access to the keymaster app so we can call its create_key method. That means there is no need for the change in keymaster and no need to pass custom env\u0027s top put_object and post_object.\n\nSorry! I should have thought of that on last review.","commit_id":"6e497ff7755aaa163597fce72cebc0b7027add75"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"75edd7cb866f4e58b77c9b6580ec0661837e4ad6","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                                                (\u0027Kiwi\u0027,"},{"line_number":319,"context_line":"                                                 fetch_crypto_keys()[\u0027object\u0027],"},{"line_number":320,"context_line":"                                                 metadata_iv))"},{"line_number":321,"context_line":"                self.assertEqual(metadata[\u0027x-object-meta-fruit\u0027], exp_enc_meta)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        env_get \u003d {CRYPTO_KEY_CALLBACK: fetch_crypto_keys}"},{"line_number":324,"context_line":"        self._check_GET_and_HEAD(self.crypto_app, env_get)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_f56319af","line":321,"updated":"2016-05-26 17:37:51.000000000","message":"also check the various etag values?","commit_id":"6e497ff7755aaa163597fce72cebc0b7027add75"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3bc453714ac65ad7512d579bbf5770de52ce143a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        resp \u003d req.get_response(app)"},{"line_number":75,"context_line":"        self.assertEqual(policy_name, resp.headers[\u0027X-Storage-Policy\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _put_object(self, app, body, env\u003dNone):"},{"line_number":78,"context_line":"        req \u003d Request.blank(self.object_path, method\u003d\u0027PUT\u0027, body\u003dbody,"},{"line_number":79,"context_line":"                            environ\u003denv)"},{"line_number":80,"context_line":"        resp \u003d req.get_response(app)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_730c983b","line":77,"updated":"2016-05-31 10:38:05.000000000","message":"these env args are no longer used","commit_id":"c9254bedd5dcfc8cdd5cc30d3b0447fb860fc635"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3bc453714ac65ad7512d579bbf5770de52ce143a","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        for node_index, node in enumerate(nodes):"},{"line_number":295,"context_line":"            df \u003d df_mgr.get_diskfile(node[\u0027device\u0027], partition,"},{"line_number":296,"context_line":"                                     \u0027a\u0027, self.container_name, \u0027o\u0027,"},{"line_number":297,"context_line":"                                     policy\u003d1)"},{"line_number":298,"context_line":"            with df.open():"},{"line_number":299,"context_line":"                meta \u003d df.get_metadata()"},{"line_number":300,"context_line":"                contents \u003d \u0027\u0027.join(df.reader())"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_f3a88879","line":297,"updated":"2016-05-31 10:38:05.000000000","message":"the policy arg should be a policy instance - the policy index just happens to work, but get_diskfile docstring specifies policy instance.","commit_id":"c9254bedd5dcfc8cdd5cc30d3b0447fb860fc635"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3bc453714ac65ad7512d579bbf5770de52ce143a","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                # verify on disk data - body"},{"line_number":303,"context_line":"                body_iv \u003d load_crypto_meta("},{"line_number":304,"context_line":"                    metadata[\u0027x-object-sysmeta-crypto-meta\u0027])[\u0027iv\u0027]"},{"line_number":305,"context_line":"                unwrap_body_key \u003d load_crypto_meta("},{"line_number":306,"context_line":"                    metadata[\u0027x-object-sysmeta-crypto-meta\u0027])[\u0027key\u0027]"},{"line_number":307,"context_line":"                obj_key \u003d self.km.create_key(\u0027/a/%s/o\u0027 % self.container_name)"},{"line_number":308,"context_line":"                body_key \u003d crypto.Crypto({}).unwrap_key("}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_d36f4429","line":305,"updated":"2016-05-31 10:38:05.000000000","message":"nit: this is actually the wrapped body key","commit_id":"c9254bedd5dcfc8cdd5cc30d3b0447fb860fc635"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3bc453714ac65ad7512d579bbf5770de52ce143a","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                                                        etag_key, etag_iv))"},{"line_number":325,"context_line":"                self.assertEqual(metadata[\u0027x-object-sysmeta-crypto-etag\u0027],"},{"line_number":326,"context_line":"                                 exp_enc_etag)"},{"line_number":327,"context_line":"                # verify etag in container listing"},{"line_number":328,"context_line":"                parts \u003d metadata[\u0027x-object-sysmeta-container-update-override-etag\u0027].\\"},{"line_number":329,"context_line":"                    rsplit(\u0027;\u0027, 1)"},{"line_number":330,"context_line":"                crypto_meta_param \u003d parts[1].strip()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_ce3cbbca","line":327,"updated":"2016-05-31 10:38:05.000000000","message":"nit: this is not verifying the value in the container listing, just verifying the update override value","commit_id":"c9254bedd5dcfc8cdd5cc30d3b0447fb860fc635"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3bc453714ac65ad7512d579bbf5770de52ce143a","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                self.assertEqual(metadata[\u0027x-object-sysmeta-crypto-etag\u0027],"},{"line_number":326,"context_line":"                                 exp_enc_etag)"},{"line_number":327,"context_line":"                # verify etag in container listing"},{"line_number":328,"context_line":"                parts \u003d metadata[\u0027x-object-sysmeta-container-update-override-etag\u0027].\\"},{"line_number":329,"context_line":"                    rsplit(\u0027;\u0027, 1)"},{"line_number":330,"context_line":"                crypto_meta_param \u003d parts[1].strip()"},{"line_number":331,"context_line":"                crypto_meta \u003d crypto_meta_param[len(\u0027swift_meta\u003d\u0027):]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_53019404","line":328,"updated":"2016-05-31 10:38:05.000000000","message":"weird, this should fail pep8 (line too long) but does not - neither in jenkins nor on my machine. But we should fix it to save every other reviewer going to check it!","commit_id":"c9254bedd5dcfc8cdd5cc30d3b0447fb860fc635"}]}
