summaryrefslogtreecommitdiff
path: root/cdsapi/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'cdsapi/api.py')
-rw-r--r--cdsapi/api.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/cdsapi/api.py b/cdsapi/api.py
index 80eaa59..1c8e598 100644
--- a/cdsapi/api.py
+++ b/cdsapi/api.py
@@ -242,6 +242,8 @@ class Client(object):
warning_callback=None,
error_callback=None,
debug_callback=None,
+ metadata=None,
+ forget=False,
):
if not quiet:
@@ -294,6 +296,9 @@ class Client(object):
self.session = requests.Session()
self.session.auth = tuple(self.key.split(':', 2))
+ self.metadata = metadata
+ self.forget = forget
+
self.debug("CDSAPI %s", dict(url=self.url,
key=self.key,
quiet=self.quiet,
@@ -303,7 +308,9 @@ class Client(object):
sleep_max=self.sleep_max,
retry_max=self.retry_max,
full_stack=self.full_stack,
- delete=self.delete
+ delete=self.delete,
+ metadata=self.metadata,
+ forget=self.forget,
))
def retrieve(self, name, request, target=None):
@@ -315,7 +322,10 @@ class Client(object):
def service(self, name, *args, **kwargs):
self.delete = False # Don't delete results
name = '/'.join(name.split('.'))
- request = toJSON(dict(args=args, kwargs=kwargs))
+ request = dict(args=args, kwargs=kwargs)
+ if self.metadata:
+ request['_cds_metadata'] = self.metadata
+ request = toJSON(request)
result = self._api('%s/tasks/services/%s/clientid-%s' % (self.url, name, uuid.uuid4().hex), request, 'PUT')
return result
@@ -369,6 +379,10 @@ class Client(object):
json=request,
verify=self.verify,
timeout=self.timeout)
+
+ if self.forget:
+ return result
+
reply = None
try: