def __authenticate(self): user, passwd = config.couchdb.user, config.couchdb.password if (all((user, passwd))): auth = restkit.BasicAuth(user, passwd) self.__auth_resource = CouchdbResource(filters=[auth]) else: self.__auth_resource = None
def __init__(self, databases): """ initialize couchdbkit handler with COUCHDB_DATABASES settings """ self.__dict__ = self.__shared_state__ # create databases sessions for app_name, uri in databases: try: if isinstance(uri, tuple): # case when you want to specify server uri # and database name specifically. usefull # when you proxy couchdb on some path server_uri, dbname = uri else: server_uri, dbname = uri.rsplit("/", 1) except ValueError: raise ValueError("couchdb uri [%s:%s] invalid" % ( app_name, uri)) res = CouchdbResource(server_uri, timeout=COUCHDB_TIMEOUT) server = Server(server_uri, resource_instance=res) app_label = app_name.split('.')[-1] self._databases[app_label] = (server, dbname)
def main(db_name, db_user, db_pass, db_host, sequence_file, zone_dir, **tls_args): # Starting Sequence for change stream sequence = sequence_read(sequence_file) click.echo('Skipping %s changes.' % sequence) # CouchDB Connection tls_args['cert_reqs'] = ssl.CERT_REQUIRED tls_args['ssl_version'] = ssl.PROTOCOL_TLSv1_2 auth = CouchdbResource(filters=[BasicAuth(db_user, db_pass)], **tls_args) server = Server(uri=db_host, resource_instance=auth) db = server[db_name] if sequence == 0: click.echo('Fast track syncing all zones...') c = Consumer(db) result = c.fetch(descending=True, limit=1) # Fast track to this sequence sequence = result['last_seq'] # Go get all the current zones. zones = c.fetch() for zone in zones['results']: domain = zone['id'] try: doc = db.get(docid=domain) except ResourceNotFound, e: click.echo('%s not found (this is normal if the zone was deleted)' % domain) else: zone_update(domain, doc['data'], zone_dir) sequence_write(sequence_file, sequence) # Keep track of our sync point click.echo('Fast track syncing done')
def sync_all_app(self, uri, dbname, views): ''' Create a database session for each databases, then start the syncing process. Databases are described by tuples containing the application name and the database URL in which views must be synchronized. @param uri: Uri of the couchdb server @param dbname: Database name @param views: Name of the views ''' for view in views: res = CouchdbResource(uri, timeout=COUCHDB_TIMEOUT) server = Server(uri, resource_instance=res) self.sync(server, dbname, view, views[view])
def __init__(self, databases): """ initialize couchdbkit handler with COUCHDB_DATABASES settings """ self.__dict__ = self.__shared_state__ # Convert old style to new style if isinstance(databases, (list, tuple)): databases = dict((app_name, { 'URL': uri }) for app_name, uri in databases) # create databases sessions for app_name, app_setting in databases.items(): uri = app_setting['URL'] # Do not send credentials when they are both None as admin party will give a 401 user = app_setting.get('USER') password = app_setting.get('PASSWORD') filters = [BasicAuth(user, password) ] if (user or password) is not None else [] try: if isinstance(uri, (list, tuple)): # case when you want to specify server uri # and database name specifically. usefull # when you proxy couchdb on some path server_uri, dbname = uri else: server_uri, dbname = uri.rsplit("/", 1) except ValueError: raise ValueError("couchdb uri [%s:%s] invalid" % (app_name, uri)) res = CouchdbResource(server_uri, timeout=COUCHDB_TIMEOUT, filters=filters) server = Server(server_uri, resource_instance=res) app_label = app_name.split('.')[-1] self._databases[app_label] = (server, dbname)
def testRequestFailed(self): bad = CouchdbResource('http://localhost:10000') self.assertRaises(RequestError, bad.get)
def setUp(self): self.couchdb = CouchdbResource() try: self.couchdb.delete('/couchdkbit_test') except: pass