The following variables should be available:
'hash_algorithm': Suggested is 'sha256'
+
'block_size': Suggested is 4MB
"""
+ def list_accounts(self, user, marker=None, limit=10000):
+ """Return a list of accounts the user can access.
+
+ Parameters:
+ 'marker': Start list from the next item after 'marker'
+
+ 'limit': Number of containers to return
+ """
+ return []
+
def get_account_meta(self, user, account, until=None):
"""Return a dictionary with the account metadata.
The keys returned are all user-defined, except:
'name': The account name
+
'count': The number of containers (or 0)
+
'bytes': The total data size (or 0)
+
'modified': Last modification timestamp (overall)
+
'until_timestamp': Last modification until the timestamp provided
Raises:
Parameters:
'meta': Dictionary with metadata to update
+
'replace': Replace instead of update
Raises:
Raises:
NotAllowedError: Operation not permitted
+
ValueError: Invalid data in groups
"""
return
+ def put_account(self, user, account):
+ """Create a new account with the given name.
+
+ Raises:
+ NotAllowedError: Operation not permitted
+ """
+ return
+
def delete_account(self, user, account):
"""Delete the account with the given name.
Raises:
NotAllowedError: Operation not permitted
+
IndexError: Account is not empty
"""
return
- def list_containers(self, user, account, marker=None, limit=10000, until=None):
- """Return a list of container (name, version_id) tuples existing under an account.
+ def list_containers(self, user, account, marker=None, limit=10000, shared=False, until=None):
+ """Return a list of container names existing under an account.
Parameters:
'marker': Start list from the next item after 'marker'
+
'limit': Number of containers to return
+
+ 'shared': Only list containers with permissions set
+
Raises:
NotAllowedError: Operation not permitted
The keys returned are all user-defined, except:
'name': The container name
+
'count': The number of objects
+
'bytes': The total data size
+
'modified': Last modification timestamp (overall)
+
'until_timestamp': Last modification until the timestamp provided
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
"""
return {}
Parameters:
'meta': Dictionary with metadata to update
+
'replace': Replace instead of update
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
"""
return
The keys returned are:
'quota': The maximum bytes allowed (default is 0 - unlimited)
+
'versioning': Can be 'auto', 'manual' or 'none' (default is 'manual')
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
"""
return {}
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
+
ValueError: Invalid policy defined
"""
return
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container already exists
+
ValueError: Invalid policy defined
"""
return
- def delete_container(self, user, account, container):
- """Delete the container with the given name.
+ def delete_container(self, user, account, container, until=None):
+ """Delete/purge the container with the given name.
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
+
IndexError: Container is not empty
"""
return
- def list_objects(self, user, account, container, prefix='', delimiter=None, marker=None, limit=10000, virtual=True, keys=[], until=None):
+ def list_objects(self, user, account, container, prefix='', delimiter=None, marker=None, limit=10000, virtual=True, keys=[], shared=False, until=None):
"""Return a list of object (name, version_id) tuples existing under a container.
Parameters:
'prefix': List objects starting with 'prefix'
+
'delimiter': Return unique names before 'delimiter' and after 'prefix'
+
'marker': Start list from the next item after 'marker'
+
'limit': Number of objects to return
- 'virtual': If not set, the result will only include names starting\
- with 'prefix' and ending without a 'delimiter' or with\
- the first occurance of the 'delimiter' after 'prefix'.\
- If set, the result will include all names after 'prefix',\
+
+ 'virtual': If not set, the result will only include names starting
+ with 'prefix' and ending without a 'delimiter' or with
+ the first occurance of the 'delimiter' after 'prefix'.
+ If set, the result will include all names after 'prefix',
up to and including the 'delimiter' if it is found
+
'keys': Include objects that have meta with the keys in the list
+
+ 'shared': Only list objects with permissions set
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
"""
return []
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
"""
return []
The keys returned are all user-defined, except:
'name': The object name
+
'bytes': The total data size
+
'modified': Last modification timestamp (overall)
+
'modified_by': The user that committed the object (version requested)
+
'version': The version identifier
+
'version_timestamp': The version's modification timestamp
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
+
IndexError: Version does not exist
"""
return {}
def update_object_meta(self, user, account, container, name, meta, replace=False):
- """Update the metadata associated with the object.
+ """Update the metadata associated with the object and return the new version.
Parameters:
'meta': Dictionary with metadata to update
+
'replace': Replace instead of update
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
"""
- return
+ return ''
def get_object_permissions(self, user, account, container, name):
- """Return the path from which this object gets its permissions from,\
+ """Return the action allowed on the object, the path
+ from which the object gets its permissions from,
along with a dictionary containing the permissions.
- The keys are:
+ The dictionary keys are (also used for defining the action):
'read': The object is readable by the users/groups in the list
+
'write': The object is writable by the users/groups in the list
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
"""
return {}
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
+
ValueError: Invalid users/groups in permissions
- AttributeError: Can not set permissions, as this object\
- is already shared/private by another object higher\
- in the hierarchy, or setting permissions here will\
+
+ AttributeError: Can not set permissions, as this object
+ is already shared/private by another object higher
+ in the hierarchy, or setting permissions here will
invalidate other permissions deeper in the hierarchy
"""
return
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
"""
return None
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
"""
return
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
+
IndexError: Version does not exist
"""
return 0, []
def update_object_hashmap(self, user, account, container, name, size, hashmap, meta={}, replace_meta=False, permissions=None):
- """Create/update an object with the specified size and partial hashes.
+ """Create/update an object with the specified size and partial hashes and return the new version.
Parameters:
'dest_meta': Dictionary with metadata to change
+
'replace_meta': Replace metadata instead of update
+
'permissions': Updated object permissions
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container does not exist
+
ValueError: Invalid users/groups in permissions
+
AttributeError: Can not set permissions
"""
- return
+ return ''
def copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None):
- """Copy an object's data and metadata.
+ """Copy an object's data and metadata and return the new version.
Parameters:
'dest_meta': Dictionary with metadata to change from source to destination
+
'replace_meta': Replace metadata instead of update
+
'permissions': New object permissions
+
'src_version': Copy from the version provided
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
+
IndexError: Version does not exist
+
ValueError: Invalid users/groups in permissions
+
AttributeError: Can not set permissions
"""
- return
+ return ''
def move_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None):
- """Move an object's data and metadata.
+ """Move an object's data and metadata and return the new version.
Parameters:
'dest_meta': Dictionary with metadata to change from source to destination
+
'replace_meta': Replace metadata instead of update
+
'permissions': New object permissions
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
+
ValueError: Invalid users/groups in permissions
+
AttributeError: Can not set permissions
"""
- return
+ return ''
- def delete_object(self, user, account, container, name):
- """Delete an object.
+ def delete_object(self, user, account, container, name, until=None):
+ """Delete/purge an object.
Raises:
NotAllowedError: Operation not permitted
+
NameError: Container/object does not exist
"""
return