|
66 | 66 | log_s3api_command, sysmeta_header |
67 | 67 | from swift3.etree import Element, SubElement, fromstring, tostring, \ |
68 | 68 | XMLSyntaxError, DocumentInvalid |
| 69 | +from swift3.controllers.tagging import OBJECT_TAGGING_HEADER, \ |
| 70 | + HTTP_HEADER_TAGGING_KEY, convert_urlquery_to_xml |
69 | 71 | from swift3.cfg import CONF |
70 | 72 |
|
71 | 73 | DEFAULT_MAX_PARTS_LISTING = 1000 |
@@ -462,6 +464,11 @@ def POST(self, req): |
462 | 464 |
|
463 | 465 | obj = '%s/%s' % (req.object_name, upload_id) |
464 | 466 |
|
| 467 | + if HTTP_HEADER_TAGGING_KEY in req.headers: |
| 468 | + tagging = convert_urlquery_to_xml( |
| 469 | + req.headers.get(HTTP_HEADER_TAGGING_KEY)) |
| 470 | + req.headers[OBJECT_TAGGING_HEADER] = tagging |
| 471 | + |
465 | 472 | req.headers.pop('Etag', None) |
466 | 473 | req.headers.pop('Content-Md5', None) |
467 | 474 | req.environ['oio.ephemeral_object'] = True |
@@ -650,6 +657,10 @@ def POST(self, req): |
650 | 657 | headers['x-object-meta-' + _key[11:]] = val |
651 | 658 | elif _key == 'content-type': |
652 | 659 | headers['Content-Type'] = val |
| 660 | + for key, val in resp.sysmeta_headers.items(): |
| 661 | + _key = key.lower() |
| 662 | + if _key == OBJECT_TAGGING_HEADER.lower(): |
| 663 | + headers[key] = val |
653 | 664 |
|
654 | 665 | # Query for the objects in the segments area to make sure it completed |
655 | 666 | query = { |
|
0 commit comments