def login(name, password): resource = CouchdbResource() info = resource.request("POST", path="/_session", headers = {"Content-Type": "application/json", "X-CouchDB-WWW-Authenticate": "Cookie"}, payload={"name":name, "password":password}) return info.json_body
def main(): usage = '%prog [options]\n See %prog --help for a full list of options.' parser = optparse.OptionParser(usage=usage) parser.add_option('--source-url', action='store', dest='source_url', help='Url of the source server.') parser.add_option('--target-url', action='store', dest='target_url', help='Url of the target server.') parser.add_option('--source-db', action='store', dest='source_db', help='Source database name.') parser.add_option('--target-db', action='store', dest='target_db', help='Target database name.') parser.add_option('--continuous', action='store_true', dest='continuous', help='Set as a continuous replication.') parser.add_option('--cancel', action='store_true', dest='cancel', help='Cancel continuous replication.') parser.add_option('--create-dbs', action='store_true', dest='create_dbs', help='Create databases if missing.') options, args = parser.parse_args() if not options.target_url or (not options.source_url) or (not options.source_db) or (not options.target_db): parser.error('--source-url, --target-url, --source-db and --target-db are required.') sys.exit(1) start = time.time() if options.source_url.endswith('/'): options.source_url = options.source_url.rstrip('/') if options.target_url.endswith('/'): options.target_url = options.target_url.rstrip('/') if options.create_dbs: source_db = Database(options.source_url + '/' + options.source_db, create=True) target_db = Database(options.target_url + '/' + options.target_db, create=True) else: try: source_db = Database(options.source_url + '/' + options.source_db) except ResourceNotFound: db_missing(options.source_url, options.source_db) try: target_db = Database(options.target_url + '/' + options.target_db) except ResourceNotFound: db_missing(options.target_url, options.target_db) print 'Starting replication...\n', sys.stdout.flush() continuous = options.continuous or False cancel = options.cancel or False body = { "source": url_quote(options.source_url) + '/' + options.source_db, "target": url_quote(options.target_url) + '/' + options.target_db, "continuous": continuous, "cancel": cancel } res = CouchdbResource(uri=url_quote(options.source_url)) try: resp = res.request('POST', '/_replicate', payload=body) print resp.json_body print 'Replication time: %.1f s\n' % (time.time() - start) except ResourceNotFound: print dict(status=404, msg='Replication task not found.') except PreconditionFailed: print dict(status=412, msg='Precondition not met.') except RequestFailed, e: print dict(status=400, msg='Request failed.')
def logout(): resource = CouchdbResource() info = resource.request("DELETE", "/_session", headers = {"Content-Type": "application/json", "X-CouchDB-WWW-Authenticate": "Cookie"}) return info.json_body