Пример #1
0
    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
Пример #2
0
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
Пример #3
0
    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')
Пример #4
0
    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()
Пример #5
0
    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()
Пример #6
0
    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