diff options
author | Clay Gerrard <clay.gerrard@gmail.com> | 2019-10-29 09:59:03 -0500 |
---|---|---|
committer | Tim Burke <tim.burke@gmail.com> | 2020-04-08 13:07:26 -0700 |
commit | 78edffa46c591fdc53f253b343e1ea144e24089d (patch) | |
tree | 21205561c27782986e87d60ed1e12176b46d7129 /swiftclient/client.py | |
parent | 02e8f4f228c006927fe87f8a350c281b9cfccd98 (diff) | |
download | python-swiftclient-78edffa46c591fdc53f253b343e1ea144e24089d.tar.gz |
object versioning features
* add --versions to list
* add --versions to delete
* add --version-id to stat
* add --version-id to delete
* add --version-id to download
Change-Id: I89802064921778fee7efe57c7d60c976cdde3a27
Diffstat (limited to 'swiftclient/client.py')
-rw-r--r-- | swiftclient/client.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py index 448bb46..449b6cd 100644 --- a/swiftclient/client.py +++ b/swiftclient/client.py @@ -921,7 +921,7 @@ def post_account(url, token, headers, http_conn=None, response_dict=None, def get_container(url, token, container, marker=None, limit=None, prefix=None, delimiter=None, end_marker=None, - path=None, http_conn=None, + version_marker=None, path=None, http_conn=None, full_listing=False, service_token=None, headers=None, query_string=None): """ @@ -935,6 +935,7 @@ def get_container(url, token, container, marker=None, limit=None, :param prefix: prefix query :param delimiter: string to delimit the queries on :param end_marker: marker query + :param version_marker: version marker query :param path: path query (equivalent: "delimiter=/" and "prefix=path/") :param http_conn: a tuple of (parsed url, HTTPConnection object), (If None, it will create the conn object) @@ -951,17 +952,20 @@ def get_container(url, token, container, marker=None, limit=None, http_conn = http_connection(url) if full_listing: rv = get_container(url, token, container, marker, limit, prefix, - delimiter, end_marker, path, http_conn, - service_token=service_token, headers=headers) + delimiter, end_marker, version_marker, path=path, + http_conn=http_conn, service_token=service_token, + headers=headers) listing = rv[1] while listing: if not delimiter: marker = listing[-1]['name'] else: marker = listing[-1].get('name', listing[-1].get('subdir')) + version_marker = listing[-1].get('version_id') listing = get_container(url, token, container, marker, limit, - prefix, delimiter, end_marker, path, - http_conn, service_token=service_token, + prefix, delimiter, end_marker, + version_marker, path, http_conn, + service_token=service_token, headers=headers)[1] if listing: rv[1].extend(listing) @@ -979,6 +983,8 @@ def get_container(url, token, container, marker=None, limit=None, qs += '&delimiter=%s' % quote(delimiter) if end_marker: qs += '&end_marker=%s' % quote(end_marker) + if version_marker: + qs += '&version_marker=%s' % quote(version_marker) if path: qs += '&path=%s' % quote(path) if query_string: @@ -1816,15 +1822,17 @@ class Connection(object): return self._retry(None, head_container, container, headers=headers) def get_container(self, container, marker=None, limit=None, prefix=None, - delimiter=None, end_marker=None, path=None, - full_listing=False, headers=None, query_string=None): + delimiter=None, end_marker=None, version_marker=None, + path=None, full_listing=False, headers=None, + query_string=None): """Wrapper for :func:`get_container`""" # TODO(unknown): With full_listing=True this will restart the entire # listing with each retry. Need to make a better version that just # retries where it left off. return self._retry(None, get_container, container, marker=marker, limit=limit, prefix=prefix, delimiter=delimiter, - end_marker=end_marker, path=path, + end_marker=end_marker, + version_marker=version_marker, path=path, full_listing=full_listing, headers=headers, query_string=query_string) |