)]}'
{"glance/tests/functional/test_scrubber.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"95004825a08011f98c536d42bff0e30ebaa4fcfb","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    \"\"\"Test that delayed_delete works and the scrubber deletes\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def send_http_request(self, path, method\u003d\u0027POST\u0027, body\u003d\u0027XXX\u0027):"},{"line_number":46,"context_line":"        headers \u003d {"},{"line_number":47,"context_line":"            \u0027x-image-meta-name\u0027: \u0027test_image\u0027,"},{"line_number":48,"context_line":"            \u0027x-image-meta-is_public\u0027: \u0027true\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_bffc8572","line":45,"updated":"2015-07-03 11:42:26.000000000","message":"It\u0027s better to call this method _send_http_request","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":16683,"name":"Alexey Galkin","email":"agalkin@mirantis.com","username":"agalkin"},"change_message_id":"d2dc963b5ee01b1dc50181f25afdd139d522dc94","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    \"\"\"Test that delayed_delete works and the scrubber deletes\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def send_http_request(self, path, method\u003d\u0027POST\u0027, body\u003d\u0027XXX\u0027):"},{"line_number":46,"context_line":"        headers \u003d {"},{"line_number":47,"context_line":"            \u0027x-image-meta-name\u0027: \u0027test_image\u0027,"},{"line_number":48,"context_line":"            \u0027x-image-meta-is_public\u0027: \u0027true\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_eabecd63","line":45,"in_reply_to":"ba3cc151_bffc8572","updated":"2015-07-03 12:09:41.000000000","message":"Thanks, it looks was better.","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"95004825a08011f98c536d42bff0e30ebaa4fcfb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \u0027x-image-meta-container_format\u0027: \u0027ovf\u0027,"},{"line_number":51,"context_line":"            \u0027content-type\u0027: \u0027application/octet-stream\u0027"},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        return httplib2.Http().request(path, method, body, headers)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_delayed_delete(self):"},{"line_number":56,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_7fcd9d64","line":53,"updated":"2015-07-03 11:42:26.000000000","message":"For \u0027DELETE\u0027 you mustn\u0027t transfer body and headers there. So several tests will fail with 400 error...","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":16683,"name":"Alexey Galkin","email":"agalkin@mirantis.com","username":"agalkin"},"change_message_id":"d2dc963b5ee01b1dc50181f25afdd139d522dc94","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \u0027x-image-meta-container_format\u0027: \u0027ovf\u0027,"},{"line_number":51,"context_line":"            \u0027content-type\u0027: \u0027application/octet-stream\u0027"},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        return httplib2.Http().request(path, method, body, headers)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_delayed_delete(self):"},{"line_number":56,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_65442e49","line":53,"in_reply_to":"ba3cc151_7fcd9d64","updated":"2015-07-03 12:09:41.000000000","message":"Are you sure? I think once the method is defined, the headers and the body will be ignored.","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"95004825a08011f98c536d42bff0e30ebaa4fcfb","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        # ensure the marker file has encrypted the image location by decrypting"},{"line_number":154,"context_line":"        # it and checking the image_id is intact"},{"line_number":155,"context_line":"        file_path \u003d os.path.join(self.api_server.scrubber_datadir,"},{"line_number":156,"context_line":"                                 str(image[\u0027id\u0027]))"},{"line_number":157,"context_line":"        marker_uri \u003d None"},{"line_number":158,"context_line":"        with open(file_path, \u0027r\u0027) as f:"},{"line_number":159,"context_line":"            marker_uri \u003d f.readline().strip()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_7f291de5","line":156,"updated":"2015-07-03 11:42:26.000000000","message":"image[\u0027id\u0027] is always a string - you can remove str()","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":16683,"name":"Alexey Galkin","email":"agalkin@mirantis.com","username":"agalkin"},"change_message_id":"d2dc963b5ee01b1dc50181f25afdd139d522dc94","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        # ensure the marker file has encrypted the image location by decrypting"},{"line_number":154,"context_line":"        # it and checking the image_id is intact"},{"line_number":155,"context_line":"        file_path \u003d os.path.join(self.api_server.scrubber_datadir,"},{"line_number":156,"context_line":"                                 str(image[\u0027id\u0027]))"},{"line_number":157,"context_line":"        marker_uri \u003d None"},{"line_number":158,"context_line":"        with open(file_path, \u0027r\u0027) as f:"},{"line_number":159,"context_line":"            marker_uri \u003d f.readline().strip()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_258f0676","line":156,"in_reply_to":"ba3cc151_7f291de5","updated":"2015-07-03 12:09:41.000000000","message":"Thanks, it\u0027s my careless mistake.","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"95004825a08011f98c536d42bff0e30ebaa4fcfb","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        # Remove the file from the backend."},{"line_number":207,"context_line":"        file_path \u003d os.path.join(self.api_server.image_dir,"},{"line_number":208,"context_line":"                                 str(image[\u0027id\u0027]))"},{"line_number":209,"context_line":"        os.remove(file_path)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        # Wait for the scrub time on the image to pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_3f1f15b8","line":208,"updated":"2015-07-03 11:42:26.000000000","message":"ditto","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"95004825a08011f98c536d42bff0e30ebaa4fcfb","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        # Make sure there are no queue files associated with image."},{"line_number":224,"context_line":"        queue_file_path \u003d os.path.join(self.api_server.scrubber_datadir,"},{"line_number":225,"context_line":"                                       str(image[\u0027id\u0027]))"},{"line_number":226,"context_line":"        self.assertFalse(os.path.exists(queue_file_path))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self.stop_servers()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ff7bedf2","line":225,"updated":"2015-07-03 11:42:26.000000000","message":"ditto","commit_id":"893631f61d9bee4a13e5436134a5c6c3a5facd9c"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    \"\"\"Test that delayed_delete works and the scrubber deletes\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _send_http_request(self, path, method\u003d\u0027POST\u0027, body\u003d\u0027XXX\u0027):"},{"line_number":46,"context_line":"        headers \u003d {"},{"line_number":47,"context_line":"            \u0027x-image-meta-name\u0027: \u0027test_image\u0027,"},{"line_number":48,"context_line":"            \u0027x-image-meta-is_public\u0027: \u0027true\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_635f1576","line":45,"updated":"2015-07-06 13:25:59.000000000","message":"def _send_http_request(self, path, method, body\u003dNone):\n\nIt\u0027s better to explicitly pass \u0027method\u0027 param here","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            \u0027content-type\u0027: \u0027application/octet-stream\u0027"},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        if method \u003d\u003d \u0027POST\u0027:"},{"line_number":54,"context_line":"            return httplib2.Http().request(path, method, body, headers)"},{"line_number":55,"context_line":"        return httplib2.Http().request(path, method)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_delayed_delete(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_e3f7a58a","line":54,"updated":"2015-07-06 13:25:59.000000000","message":"Yo can remove this check, it\u0027s unnecessary.","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        if method \u003d\u003d \u0027POST\u0027:"},{"line_number":54,"context_line":"            return httplib2.Http().request(path, method, body, headers)"},{"line_number":55,"context_line":"        return httplib2.Http().request(path, method)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_delayed_delete(self):"},{"line_number":58,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_c3ee21b4","line":55,"updated":"2015-07-06 13:25:59.000000000","message":"return httplib2.Http().request(path, method, body, headers)","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.start_servers(delayed_delete\u003dTrue, daemon\u003dTrue,"},{"line_number":64,"context_line":"                           metadata_encryption_key\u003d\u0027\u0027)"},{"line_number":65,"context_line":"        path \u003d \"http://%s:%d/v1/images\" % (\"127.0.0.1\", self.api_port)"},{"line_number":66,"context_line":"        response, content \u003d self._send_http_request(path)"},{"line_number":67,"context_line":"        self.assertEqual(201, response.status)"},{"line_number":68,"context_line":"        image \u003d jsonutils.loads(content)[\u0027image\u0027]"},{"line_number":69,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_c34aa1ac","line":66,"updated":"2015-07-06 13:25:59.000000000","message":"self._send_http_request(path, \u0027POST\u0027, body\u003d\u0027XXX\u0027)","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                           metadata_encryption_key\u003d\u0027\u0027)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        path \u003d \"http://%s:%d/v1/images\" % (\"127.0.0.1\", self.api_port)"},{"line_number":93,"context_line":"        response, content \u003d self._send_http_request(path)"},{"line_number":94,"context_line":"        self.assertEqual(201, response.status)"},{"line_number":95,"context_line":"        image \u003d jsonutils.loads(content)[\u0027image\u0027]"},{"line_number":96,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_23d02dc9","line":93,"updated":"2015-07-06 13:25:59.000000000","message":"self._send_http_request(path, \u0027POST\u0027, body\u003d\u0027XXX\u0027)","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        # add an image"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        path \u003d \"http://%s:%d/v1/images\" % (\"127.0.0.1\", self.api_port)"},{"line_number":139,"context_line":"        response, content \u003d self._send_http_request(path)"},{"line_number":140,"context_line":"        self.assertEqual(201, response.status)"},{"line_number":141,"context_line":"        image \u003d jsonutils.loads(content)[\u0027image\u0027]"},{"line_number":142,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_e3da45e9","line":139,"updated":"2015-07-06 13:25:59.000000000","message":"self._send_http_request(path, \u0027POST\u0027, body\u003d\u0027XXX\u0027)","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"2fa91c6d1e2fd36b75906105ef174116ee8660f0","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # add an image"},{"line_number":190,"context_line":"        path \u003d \"http://%s:%d/v1/images\" % (\"127.0.0.1\", self.api_port)"},{"line_number":191,"context_line":"        response, content \u003d self._send_http_request(path)"},{"line_number":192,"context_line":"        self.assertEqual(201, response.status)"},{"line_number":193,"context_line":"        image \u003d jsonutils.loads(content)[\u0027image\u0027]"},{"line_number":194,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_c3e1419c","line":191,"updated":"2015-07-06 13:25:59.000000000","message":"self._send_http_request(path, \u0027POST\u0027, body\u003d\u0027XXX\u0027)","commit_id":"af8b8b79377ff3f65d4126f7340d7f5c3ccca6f8"}]}
