summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2012-12-03 16:08:49 -0200
committerdrebs <drebs@leap.se>2012-12-03 16:08:49 -0200
commit26f2abf21f295700c0f8fdf3bd62667562f01ea3 (patch)
tree8d85c9297ff885cd47b31c38e7e629f3cb839c8e /src
parent22d517e97d81c5630b85dbf55c40f2716d608e96 (diff)
Add put_object for u1db OpenStack backend.
Diffstat (limited to 'src')
-rw-r--r--src/leap/soledad/openstack.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/leap/soledad/openstack.py b/src/leap/soledad/openstack.py
index 9bb4fddd..25f1a404 100644
--- a/src/leap/soledad/openstack.py
+++ b/src/leap/soledad/openstack.py
@@ -43,7 +43,16 @@ class OpenStackDatabase(CommonBackend):
raise NotImplementedError(self.get_all_docs)
def put_doc(self, doc):
- raise NotImplementedError(self.put_doc)
+ if doc.doc_id is None:
+ raise errors.InvalidDocId()
+ self._check_doc_id(doc.doc_id)
+ self._check_doc_size(doc)
+ # TODO: check for conflicts?
+ new_rev = self._allocate_doc_rev(doc.rev)
+ headers = { 'X-Object-Meta-Rev' : new_rev }
+ self._connection.put_object(self._container, doc_id, doc.get_json(),
+ headers=headers)
+ return new_rev
def delete_doc(self, doc):
raise NotImplementedError(self.delete_doc)