diff options
| author | drebs <drebs@leap.se> | 2012-11-29 10:56:06 -0200 | 
|---|---|---|
| committer | drebs <drebs@leap.se> | 2012-11-29 10:56:06 -0200 | 
| commit | 0f1f9474e7ea6b52dc3ae18444cfaaca56ff3070 (patch) | |
| tree | f3445f873b39a26fe42172ce1f0a97fe480a4781 /src | |
| parent | ea8d5c9d587d7089637ff8cd4076029505f3aca0 (diff) | |
organize methods for openstack backend
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/soledad/__init__.py | 172 | 
1 files changed, 86 insertions, 86 deletions
| diff --git a/src/leap/soledad/__init__.py b/src/leap/soledad/__init__.py index b4284c84..3d685635 100644 --- a/src/leap/soledad/__init__.py +++ b/src/leap/soledad/__init__.py @@ -2,15 +2,10 @@  """A U1DB implementation that uses OpenStack Swift as its persistence layer.""" -import errno -import os  try:      import simplejson as json  except ImportError:      import json  # noqa -import sys -import time -import uuid  from u1db.backends import CommonBackend, CommonSyncTarget  from u1db import ( @@ -20,73 +15,33 @@ from u1db import (      vectorclock,      ) +from swiftclient import client +  class OpenStackDatabase(CommonBackend):      """A U1DB implementation that uses OpenStack as its persistence layer.""" -    def __init__(self, sqlite_file, document_factory=None): +    def __init__(self, auth_url, user, auth_key):          """Create a new OpenStack data container.""" -        raise NotImplementedError(self.__init__) +        self._auth_url = auth_url +        self._user = user +        self._auth_key = auth_key +        self.set_document_factory(LeapDocument) +        self._connection = swiftclient.Connection(self._auth_url, self._user, +                                                  self._auth_key) + +    #------------------------------------------------------------------------- +    # implemented methods from Database +    #-------------------------------------------------------------------------      def set_document_factory(self, factory):          self._factory = factory -    def get_sync_target(self): -        return OpenStackSyncTarget(self) - -    @classmethod -    def open_database(cls, sqlite_file, create, backend_cls=None, -                      document_factory=None): -        raise NotImplementedError(open_database) - -    @staticmethod -    def delete_database(sqlite_file): -        raise NotImplementedError(delete_database) - - -    def close(self): -        raise NotImplementedError(self.close) - -    def _is_initialized(self, c): -        raise NotImplementedError(self._is_initialized) - -    def _initialize(self, c): -        raise NotImplementedError(self._initialize) - -    def _ensure_schema(self): -        raise NotImplementedError(self._ensure_schema) - -    def _set_replica_uid(self, replica_uid): -        """Force the replica_uid to be set.""" -        raise NotImplementedError(self._set_replica_uid) - -    def _set_replica_uid_in_transaction(self, replica_uid): -        """Set the replica_uid. A transaction should already be held.""" -        raise NotImplementedError(self._set_replica_uid_in_transaction) - -    def _get_replica_uid(self): -        raise NotImplementedError(self._get_replica_uid) - -    _replica_uid = property(_get_replica_uid) +    def set_document_size_limit(self, limit): +        raise NotImplementedError(self.set_document_size_limit) -    def _get_generation(self): -        raise NotImplementedError(self._get_generation) - -    def _get_generation_info(self): -        raise NotImplementedError(self._get_generation_info) - -    def _get_trans_id_for_gen(self, generation): -        raise NotImplementedError(self._get_trans_id_for_gen) - -    def _get_transaction_log(self): -        raise NotImplementedError(self._get_transaction_log) - -    def _get_doc(self, doc_id, check_for_conflicts=False): -        """Get just the document content, without fancy handling.""" -        raise NotImplementedError(self._get_doc) - -    def _has_conflicts(self, doc_id): -        raise NotImplementedError(self._has_conflicts) +    def whats_changed(self, old_generation=0): +        raise NotImplementedError(self.whats_changed)      def get_doc(self, doc_id, include_deleted=False):          raise NotImplementedError(self.get_doc) @@ -98,18 +53,47 @@ class OpenStackDatabase(CommonBackend):      def put_doc(self, doc):          raise NotImplementedError(self.put_doc) -    def whats_changed(self, old_generation=0): -        raise NotImplementedError(self.whats_changed) -      def delete_doc(self, doc):          raise NotImplementedError(self.delete_doc) -    def _get_conflicts(self, doc_id): +    # start of index-related methods: these are not supported by this backend. + +    def create_index(self, index_name, *index_expressions): +        return False + +    def delete_index(self, index_name): +        return False + +    def list_indexes(self): +        return [] + +    def get_from_index(self, index_name, *key_values):          return [] +    def get_range_from_index(self, index_name, start_value=None, +                             end_value=None): +        return [] + +    def get_index_keys(self, index_name): +        return [] + +    # end of index-related methods: these are not supported by this backend. +      def get_doc_conflicts(self, doc_id):          return [] +    def resolve_doc(self, doc, conflicted_doc_revs): +        raise NotImplementedError(self.resolve_doc) + +    def get_sync_target(self): +        return OpenStackSyncTarget(self) + +    def close(self): +        raise NotImplementedError(self.close) + +    def sync(self, url, creds=None, autocreate=True): +        raise NotImplementedError(self.close) +      def _get_replica_gen_and_trans_id(self, other_replica_uid):          raise NotImplementedError(self._get_replica_gen_and_trans_id) @@ -117,33 +101,49 @@ class OpenStackDatabase(CommonBackend):                                        other_generation, other_transaction_id):          raise NotImplementedError(self._set_replica_gen_and_trans_id) -    def _do_set_replica_gen_and_trans_id(self, other_replica_uid, -                                         other_generation, -                                         other_transaction_id): -        raise NotImplementedError(self._do_set_replica_gen_and_trans_id) +    #------------------------------------------------------------------------- +    # implemented methods from CommonBackend +    #------------------------------------------------------------------------- -    def _put_doc_if_newer(self, doc, save_conflict, replica_uid=None, -                          replica_gen=None, replica_trans_id=None): -        raise NotImplementedError(self._put_doc_if_newer) +    def _get_generation(self): +        raise NotImplementedError(self._get_generation) -    def resolve_doc(self, doc, conflicted_doc_revs): -        raise NotImplementedError(self.resolve_doc) +    def _get_generation_info(self): +        raise NotImplementedError(self._get_generation_info) -    def list_indexes(self): -        return [] +    def _get_doc(self, doc_id, check_for_conflicts=False): +        """Get just the document content, without fancy handling.""" +        raise NotImplementedError(self._get_doc) -    def get_from_index(self, index_name, *key_values): -        return [] +    def _has_conflicts(self, doc_id): +        raise NotImplementedError(self._has_conflicts) -    def get_range_from_index(self, index_name, start_value=None, -                             end_value=None): -        return [] +    def _get_transaction_log(self): +        raise NotImplementedError(self._get_transaction_log) -    def get_index_keys(self, index_name): -        return [] +    def _put_and_update_indexes(self, doc_id, old_doc, new_rev, content): +        raise NotImplementedError(self._put_and_update_indexes) + + +    def _get_trans_id_for_gen(self, generation): +        raise NotImplementedError(self._get_trans_id_for_gen) + +    #------------------------------------------------------------------------- +    # OpenStack specific methods +    #------------------------------------------------------------------------- + +    def _is_initialized(self, c): +        raise NotImplementedError(self._is_initialized) + +    def _initialize(self, c): +        raise NotImplementedError(self._initialize) + +    def _get_auth(self): +        self._url, self._auth_token = self._connection.get_auth(self._auth_url, +                                                                self._user, +                                                                self._auth_key) +        return self._url, self.auth_token -    def delete_index(self, index_name): -        return False  class LeapDocument(Document): | 
