Add tagging to versioned s3 objects.

This commit is contained in:
Harrison Termotto 2019-10-17 00:16:16 -04:00
commit df2de373b2
3 changed files with 162 additions and 3 deletions

View file

@ -1115,8 +1115,8 @@ class S3Backend(BaseBackend):
else:
return None
def set_key_tagging(self, bucket_name, key_name, tagging):
key = self.get_key(bucket_name, key_name)
def set_key_tagging(self, bucket_name, key_name, tagging, version_id=None):
key = self.get_key(bucket_name, key_name, version_id)
if key is None:
raise MissingKey(key_name)
key.set_tagging(tagging)

View file

@ -905,8 +905,12 @@ class ResponseObject(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
return 200, response_headers, ""
if 'tagging' in query:
if 'versionId' in query:
version_id = query['versionId'][0]
else:
version_id = None
tagging = self._tagging_from_xml(body)
self.backend.set_key_tagging(bucket_name, key_name, tagging)
self.backend.set_key_tagging(bucket_name, key_name, tagging, version_id)
return 200, response_headers, ""
if 'x-amz-copy-source' in request.headers: