def get_datastore_instance(cls, ds_name, profile=DataStore.DS_PROFILE.BASIC): scoped_name = DatastoreManager.get_scoped_name(ds_name) # Use inline import to prevent circular import dependency from pyon.datastore.couchdb.couchdb_datastore import CouchDB_DataStore new_ds = CouchDB_DataStore(datastore_name=scoped_name, profile=profile) return new_ds
def main(): usage = \ """ %prog [options] prefix """ description = \ """Use this program to clear databases in couch that match a given prefix """ parser = OptionParser(usage=usage, description=description) parser.add_option("-p", "--port", dest="couch_port", default=5984, help="specify a port for couch", action="store", type=int, metavar="PORT") parser.add_option("-n", "--host", dest="couch_host", default='localhost', help="The host name or ip address of the couch server", action="store", type=str, metavar="HOST") parser.add_option("-u", "--user_name", dest="couch_uname", default=None, help="User name for the couch server", action="store", type=str, metavar="UNAME") parser.add_option("-s", "--password", dest="couch_pword", default=None, help="Password for the couch server", action="store", type=str, metavar="PWORD") #parser.add_option("-s", "--sysname", dest="sysname", default=None, help="The sysname prefix to clear in couch", action="store", type=str, metavar="SYSNAME") (options, args) = parser.parse_args() # Hack to set the user name and password if len(args) ==0: print '$ Error: no prefix argument specified' parser.print_help() sys.exit() if len(args) != 1: print '$ Error: You can not specify multiple prefixes. Received args: %s' % str(args) parser.print_help() sys.exit() prefix = args[0] if prefix is '': print '$ Error: You can not give the empty string as a prefix!' parser.print_help() sys.exit() if options.couch_uname is not None: CFG.server.couchdb.username = options.couch_uname if options.couch_pword is not None: CFG.server.couchdb.password = options.couch_pword db_server = CouchDB_DataStore(host=options.couch_host, port=options.couch_port) print "$ Connected to couch database @: host %s, port %d" % (options.couch_host, options.couch_port) db_list = db_server.list_datastores() for db_name in db_list: if db_name.startswith(prefix): db_server.delete_datastore(db_name) print '$ Cleared couch db named: %s' % db_name else: print '$ Ignoring couch db named: %s' % db_name
def test_persistent(self): import socket try: ds = CouchDB_DataStore(datastore_name='ion_test_ds', profile=DataStore.DS_PROFILE.RESOURCES) self._do_test(ds) # CouchDB does not like upper case characters for database names with self.assertRaises(BadRequest): ds.create_datastore("BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.delete_datastore("BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.info_datastore("BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.list_objects("BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.list_object_revisions("badid", "BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.create_doc({"foo": "bar"}, "", "BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.read_doc("badid", "3", "BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.read_doc_mult("badid", "BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.update_doc({"foo": "bar"}, "BadDataStoreNamePerCouchDB") with self.assertRaises(BadRequest): ds.delete_doc("badid", "BadDataStoreNamePerCouchDB") self._do_test_views(CouchDB_DataStore( datastore_name='ion_test_ds', profile=DataStore.DS_PROFILE.RESOURCES), is_persistent=True) except socket.error: raise SkipTest('Failed to connect to CouchDB')
def _force_clean(self, recreate=False): from pyon.core.bootstrap import get_sys_name datastore = CouchDB_DataStore() dbs = datastore.list_datastores() things_to_clean = filter( lambda x: x.startswith('%s_' % get_sys_name()), dbs) try: for thing in things_to_clean: datastore.delete_datastore(datastore_name=thing) if recreate: datastore.create_datastore(datastore_name=thing) finally: datastore.close()
def _force_clean(self, recreate=False): from pyon.core.bootstrap import get_sys_name from pyon.datastore.datastore import DatastoreManager if DatastoreManager.persistent is None: DatastoreManager.persistent = not CFG.system.mockdb if not DatastoreManager.persistent: datastore = MockDB_DataStore() else: datastore = CouchDB_DataStore() dbs = datastore.list_datastores() things_to_clean = filter( lambda x: x.startswith('%s_' % get_sys_name()), dbs) try: for thing in things_to_clean: datastore.delete_datastore(datastore_name=thing) if recreate: datastore.create_datastore(datastore_name=thing) finally: datastore.close()
def get_datastore_instance(cls, ds_name, persistent=None, profile=DataStore.DS_PROFILE.BASIC): scoped_name = DatastoreManager.get_scoped_name(ds_name) # Imports here to prevent cyclic module dependency from pyon.core.bootstrap import CFG if persistent is None: persistent = not bool(get_safe(CFG, "system.mockdb")) # Persistent (CouchDB) or MockDB? if persistent: # Use inline import to prevent circular import dependency from pyon.datastore.couchdb.couchdb_datastore import CouchDB_DataStore new_ds = CouchDB_DataStore(datastore_name=scoped_name, profile=profile) else: # Use inline import to prevent circular import dependency from pyon.datastore.mockdb.mockdb_datastore import MockDB_DataStore new_ds = MockDB_DataStore(datastore_name=scoped_name) return new_ds