Merge "Unfold add_canonical_user()"

This commit is contained in:
Jenkins
2014-08-13 04:19:27 +00:00
committed by Gerrit Code Review
2 changed files with 10 additions and 16 deletions

View File

@@ -26,31 +26,23 @@ XMLNS_XSI = 'http://www.w3.org/2001/XMLSchema-instance'
MAX_ACL_BODY_SIZE = 200 * 1024 MAX_ACL_BODY_SIZE = 200 * 1024
def add_canonical_user(parent, tag, user, nsmap=None):
"""
Create an element for cannonical user.
"""
elem = SubElement(parent, tag, nsmap=nsmap)
SubElement(elem, 'ID').text = user
SubElement(elem, 'DisplayName').text = user
return elem
def get_acl(account_name, headers): def get_acl(account_name, headers):
""" """
Attempts to construct an S3 ACL based on what is found in the swift headers Attempts to construct an S3 ACL based on what is found in the swift headers
""" """
elem = Element('AccessControlPolicy') elem = Element('AccessControlPolicy')
add_canonical_user(elem, 'Owner', account_name) owner = SubElement(elem, 'Owner')
SubElement(owner, 'ID').text = account_name
SubElement(owner, 'DisplayName').text = account_name
access_control_list = SubElement(elem, 'AccessControlList') access_control_list = SubElement(elem, 'AccessControlList')
# grant FULL_CONTROL to myself by default # grant FULL_CONTROL to myself by default
grant = SubElement(access_control_list, 'Grant') grant = SubElement(access_control_list, 'Grant')
grantee = add_canonical_user(grant, 'Grantee', account_name, grantee = SubElement(grant, 'Grantee', nsmap={'xsi': XMLNS_XSI})
nsmap={'xsi': XMLNS_XSI})
grantee.set('{%s}type' % XMLNS_XSI, 'CanonicalUser') grantee.set('{%s}type' % XMLNS_XSI, 'CanonicalUser')
SubElement(grantee, 'ID').text = account_name
SubElement(grantee, 'DisplayName').text = account_name
SubElement(grant, 'Permission').text = 'FULL_CONTROL' SubElement(grant, 'Permission').text = 'FULL_CONTROL'
referrers, _ = parse_acl(headers.get('x-container-read')) referrers, _ = parse_acl(headers.get('x-container-read'))

View File

@@ -18,7 +18,7 @@ from simplejson import loads
from swift.common.http import HTTP_OK from swift.common.http import HTTP_OK
from swift3.controllers.base import Controller from swift3.controllers.base import Controller
from swift3.controllers.acl import add_canonical_user, swift_acl_translate from swift3.controllers.acl import swift_acl_translate
from swift3.etree import Element, SubElement, tostring, fromstring, \ from swift3.etree import Element, SubElement, tostring, fromstring, \
XMLSyntaxError, DocumentInvalid XMLSyntaxError, DocumentInvalid
from swift3.response import HTTPOk, S3NotImplemented, InvalidArgument, \ from swift3.response import HTTPOk, S3NotImplemented, InvalidArgument, \
@@ -87,7 +87,9 @@ class BucketController(Controller):
o['last_modified'] + 'Z' o['last_modified'] + 'Z'
SubElement(contents, 'ETag').text = o['hash'] SubElement(contents, 'ETag').text = o['hash']
SubElement(contents, 'Size').text = str(o['bytes']) SubElement(contents, 'Size').text = str(o['bytes'])
add_canonical_user(contents, 'Owner', req.user_id) owner = SubElement(contents, 'Owner')
SubElement(owner, 'ID').text = req.user_id
SubElement(owner, 'DisplayName').text = req.user_id
SubElement(contents, 'StorageClass').text = 'STANDARD' SubElement(contents, 'StorageClass').text = 'STANDARD'
for o in objects[:max_keys]: for o in objects[:max_keys]: