예제 #1
0
파일: bucket.py 프로젝트: vikalp/boto
 def set_acl(self, acl_or_str, key_name='', headers=None, version_id=None):
     if isinstance(acl_or_str, Policy):
         raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
     elif isinstance(acl_or_str, ACL):
         self.set_xml_acl(acl_or_str.to_xml(), key_name, headers=headers)
     else:
         self.set_canned_acl(acl_or_str, key_name, headers=headers)
예제 #2
0
 def startElement(self, name, attrs, connection):
     if name.lower() == SCOPE.lower():
         # The following if statement used to look like this:
         #   if not TYPE in attrs:
         # which caused problems because older versions of the
         # AttributesImpl class in the xml.sax library neglected to include
         # a __contains__() method (which Python calls to implement the
         # 'in' operator). So when you use the in operator, like the if
         # statement above, Python invokes the __getiter__() method with
         # index 0, which raises an exception. More recent versions of
         # xml.sax include the __contains__() method, rendering the in
         # operator functional. The work-around here is to formulate the
         # if statement as below, which is the legal way to query
         # AttributesImpl for containment (and is also how the added
         # __contains__() method works). At one time gsutil disallowed
         # xmlplus-based parsers, until this more specific problem was
         # determined.
         if not attrs.has_key(TYPE):
             raise InvalidAclError('Missing "%s" in "%s" part of ACL' %
                                   (TYPE, SCOPE))
         self.scope = Scope(self, attrs[TYPE])
         return self.scope
     elif name.lower() == PERMISSION.lower():
         pass
     else:
         return None
예제 #3
0
 def set_acl(self,
             acl_or_str,
             key_name='',
             headers=None,
             version_id=None,
             generation=None):
     """Sets or changes a bucket's or key's ACL. The generation argument can
     be used to specify an object version, else we will modify the current
     version."""
     key_name = key_name or ''
     query_args = STANDARD_ACL
     if generation:
         query_args += '&generation=%s' % str(generation)
     if isinstance(acl_or_str, Policy):
         raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
     elif isinstance(acl_or_str, ACL):
         self.set_xml_acl(acl_or_str.to_xml(),
                          key_name,
                          headers=headers,
                          query_args=query_args)
     else:
         self.set_canned_acl(acl_or_str,
                             key_name,
                             headers=headers,
                             generation=generation)
예제 #4
0
 def set_def_acl(self, acl_or_str, key_name='', headers=None):
     """sets or changes a bucket's default object acl"""
     if isinstance(acl_or_str, Policy):
         raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
     elif isinstance(acl_or_str, ACL):
         self.set_def_xml_acl(acl_or_str.to_xml(), key_name, headers=headers)
     else:
         self.set_def_canned_acl(acl_or_str, key_name, headers=headers)
예제 #5
0
 def set_def_acl(self, acl_or_str, key_name='', headers=None):
     """sets or changes a bucket's default object acl. The key_name argument
     is ignored since keys have no default ACL property."""
     if isinstance(acl_or_str, Policy):
         raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
     elif isinstance(acl_or_str, ACL):
         self.set_def_xml_acl(acl_or_str.to_xml(), '', headers=headers)
     else:
         self.set_def_canned_acl(acl_or_str, '', headers=headers)
예제 #6
0
 def endElement(self, name, value, connection):
     if name.lower() == SCOPE.lower():
         pass
     elif name.lower() == PERMISSION.lower():
         value = value.strip()
         if not value in SupportedPermissions:
             raise InvalidAclError('Invalid Permission "%s"' % value)
         self.permission = value
     else:
         setattr(self, name, value)
예제 #7
0
    def set_acl(self,
                acl_or_str,
                key_name='',
                headers=None,
                version_id=None,
                generation=None,
                if_generation=None,
                if_metageneration=None):
        """Sets or changes a bucket's or key's ACL.

        :type acl_or_str: string or :class:`boto.gs.acl.ACL`
        :param acl_or_str: A canned ACL string (see
            :data:`~.gs.acl.CannedACLStrings`) or an ACL object.

        :type key_name: string
        :param key_name: A key name within the bucket to set the ACL for. If not
            specified, the ACL for the bucket will be set.

        :type headers: dict
        :param headers: Additional headers to set during the request.

        :type version_id: string
        :param version_id: Unused in this subclass.

        :type generation: int
        :param generation: If specified, sets the ACL for a specific generation
            of a versioned object. If not specified, the current version is
            modified.

        :type if_generation: int
        :param if_generation: (optional) If set to a generation number, the acl
            will only be updated if its current generation number is this value.

        :type if_metageneration: int
        :param if_metageneration: (optional) If set to a metageneration number,
            the acl will only be updated if its current metageneration number is
            this value.
        """
        if isinstance(acl_or_str, Policy):
            raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
        elif isinstance(acl_or_str, ACL):
            self.set_xml_acl(acl_or_str.to_xml(),
                             key_name,
                             headers=headers,
                             generation=generation,
                             if_generation=if_generation,
                             if_metageneration=if_metageneration)
        else:
            self.set_canned_acl(acl_or_str,
                                key_name,
                                headers=headers,
                                generation=generation,
                                if_generation=if_generation,
                                if_metageneration=if_metageneration)
예제 #8
0
 def set_acl(self, acl_or_str, key_name='', headers=None, version_id=None):
     """sets or changes a bucket's or key's acl (depending on whether a
     key_name was passed). We include a version_id argument to support a
     polymorphic interface for callers, however, version_id is not relevant
     for Google Cloud Storage buckets and is therefore ignored here."""
     if isinstance(acl_or_str, Policy):
         raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
     elif isinstance(acl_or_str, ACL):
         self.set_xml_acl(acl_or_str.to_xml(), key_name, headers=headers)
     else:
         self.set_canned_acl(acl_or_str, key_name, headers=headers)
예제 #9
0
 def startElement(self, name, attrs, connection):
     if name == SCOPE:
         if not TYPE in attrs:
             raise InvalidAclError('Missing "%s" in "%s" part of ACL' %
                                   (TYPE, SCOPE))
         self.scope = Scope(self, attrs[TYPE])
         return self.scope
     elif name == PERMISSION:
         pass
     else:
         return None
예제 #10
0
파일: acl.py 프로젝트: bopopescu/SparkOpt
 def __init__(self, parent, type=None, id=None, name=None,
              email_address=None, domain=None):
     self.parent = parent
     self.type = type
     self.name = name
     self.id = id
     self.domain = domain
     self.email_address = email_address
     if not self.ALLOWED_SCOPE_TYPE_SUB_ELEMS.has_key(self.type):
         raise InvalidAclError('Invalid %s %s "%s" ' %
                               (SCOPE, TYPE, self.type))
예제 #11
0
    def set_def_acl(self, acl_or_str, headers=None):
        """Sets or changes a bucket's default ACL.

        :type acl_or_str: string or :class:`boto.gs.acl.ACL`
        :param acl_or_str: A canned ACL string (see
            :data:`~.gs.acl.CannedACLStrings`) or an ACL object.

        :type headers: dict
        :param headers: Additional headers to set during the request.
        """
        if isinstance(acl_or_str, Policy):
            raise InvalidAclError('Attempt to set S3 Policy on GS ACL')
        elif isinstance(acl_or_str, ACL):
            self.set_def_xml_acl(acl_or_str.to_xml(), headers=headers)
        else:
            self.set_def_canned_acl(acl_or_str, headers=headers)
예제 #12
0
파일: acl.py 프로젝트: oakstair/dart-repo
    def to_xml(self):
        s = '<%s type="%s">' % (SCOPE, self.type)
        if self.type == ALL_AUTHENTICATED_USERS or self.type == ALL_USERS:
            pass
        elif self.type == GROUP_BY_DOMAIN:
            s += '<%s>%s</%s>' % (DOMAIN, self.domain, DOMAIN)
        elif self.type == GROUP_BY_EMAIL or self.type == USER_BY_EMAIL:
            s += '<%s>%s</%s>' % (EMAIL_ADDRESS, self.email_address,
                                  EMAIL_ADDRESS)
            if self.name:
                s += '<%s>%s</%s>' % (NAME, self.name, NAME)
        elif self.type == GROUP_BY_ID or self.type == USER_BY_ID:
            s += '<%s>%s</%s>' % (ID, self.id, ID)
            if self.name:
                s += '<%s>%s</%s>' % (NAME, self.name, NAME)
        else:
            raise InvalidAclError('Invalid scope type "%s" ', self.type)

        s += '</%s>' % SCOPE
        return s
예제 #13
0
 def startElement(self, name, attrs, connection):
     if (not name.lower()
             in self.ALLOWED_SCOPE_TYPE_SUB_ELEMS[self.type.lower()]):
         raise InvalidAclError('Element "%s" not allowed in %s %s "%s" ' %
                               (name, SCOPE, TYPE, self.type))
     return None