예제 #1
0
    def deldoc(self):
        """Deletes specified document in the database.
        """
        mode, kwargs = self.mode, self.kwargs
        dbname = dbu.get_dbname(**kwargs)
        client = self.client()
        if not self.check_database(client, dbname): return

        detname = kwargs.get('detector', None)
        if detname is None:
            logger.warning(
                '%s needs in the collection name. Please specify the detector name.'
                % (mode))
        colname = detname
        db, fs = dbu.db_and_fs(client, dbname)
        colnames = dbu.collection_names(db)

        if not (colname in colnames):  # dbu.collection_exists(db, colname)
            logger.warning('db "%s" does not have collection "%s"' %
                           (db.name, str(colname)))
            return

        col = dbu.collection(db, colname)

        logger.info('command mode: "%s" db: "%s" collection: "%s"' %
                    (mode, db.name, str(colname)))

        defs = self.defs
        ctype = kwargs.get('ctype', None)
        run = kwargs.get('run', None)
        tsec = kwargs.get('time_sec', None)
        tstamp = kwargs.get('time_stamp', None)
        vers = kwargs.get('version', None)
        confirm = kwargs.get('confirm', False)

        query = {'detector': detname}
        if ctype != defs['ctype']: query['ctype'] = ctype
        if run != defs['run']: query['run'] = run
        if vers != defs['version']: query['version'] = vers
        #if tsec  != defs['time_sec'] : query['time_sec'] = tsec
        if is_in_command_line('-s', '--time_sec'): query['time_sec'] = tsec
        if is_in_command_line('-t', '--time_stamp'):
            query['time_stamp'] = tstamp

        logger.info('query: %s' % str(query))

        docs = dbu.find_docs(col, query)
        if docs is None or docs.count() == 0:
            logger.warning('Can not find document for query: %s' % str(query))
            return

        for i, doc in enumerate(docs):
            msg = '  deldoc %2d:'%i + doc['time_stamp'] + ' ' + str(doc['time_sec'])\
                + ' %s'%doc['ctype'].ljust(16) + ' %4d'%doc['run'] + ' ' + str(doc['id_data'])
            logger.info(msg)
            if confirm:
                dbu.delete_document_from_collection(col, doc['_id'])
                dbu.del_document_data(doc, fs)

        if not confirm: dbu.request_confirmation()
예제 #2
0
파일: MDB_CLI.py 프로젝트: monarin/lcls2
    def deldb(self):
        """Deletes specified database.
        """
        mode, kwargs = self.mode, self.kwargs
        dbname = dbu.get_dbname(**kwargs)
        client = self.client()
        if not self.check_database(client, dbname): return
        logger.info('Command mode "%s" database "%s"' % (mode, dbname))
        logger.info('Databases before:\n%s' % str(dbu.database_names(client)))

        if kwargs.get('confirm', False):
            dbu.delete_database(client, dbname)
            logger.info('Databases after:\n%s' %
                        str(dbu.database_names(client)))
        else:
            dbu.request_confirmation()
예제 #3
0
파일: MDB_CLI.py 프로젝트: monarin/lcls2
    def delall(self):
        """USED FOR DEVELOPMENT: Deletes all databases with prefix in the name.
        """
        mode, kwargs = self.mode, self.kwargs
        client = self.client()
        prefix = dbu.db_prefixed_name('')
        dbnames = dbu.database_names(client)
        logger.info('Databases before "%s":\n%s' % (mode, str(dbnames)))
        #confirm = kwargs.get('confirm', False)
        confirm = True
        for dbname in dbu.database_names(client):
            if prefix in dbname:
                logger.info('delete %s' % dbname)
                if confirm:
                    dbu.delete_database(client, dbname)

        if confirm:
            logger.info('Databases after "%s" %s:\n%s' %
                        (mode, dbname, str(dbu.database_names(client))))
        else:
            dbu.request_confirmation()
예제 #4
0
파일: MDB_CLI.py 프로젝트: monarin/lcls2
    def delcol(self):
        """Deletes specified collection in the database.
        """
        mode, kwargs = self.mode, self.kwargs
        dbname = dbu.get_dbname(**self.kwargs)
        client = self.client()
        if not self.check_database(client, dbname): return

        detname = kwargs.get('detector', None)
        if detname is None:
            logger.warning(
                '%s needs in the collection name. Please specify the detector name.'
                % (mode))
        colname = detname
        db, fs = dbu.db_and_fs(client, dbname)
        colnames = dbu.collection_names(db)
        logger.info('"%s" deletes collection "%s" from database "%s"' %
                    (mode, colname, db.name))
        logger.info('Collections before "%s"' % str(colnames))
        logger.info(dbu.database_fs_info(db, gap=''))

        if not (colname in colnames):
            logger.warning('db "%s" does not have collection "%s"' %
                           (db.name, str(colname)))
            return

        if kwargs.get('confirm', False):
            col = dbu.collection(db, colname)
            dbu.del_collection_data(
                col, fs)  # delete data in fs associated with collection col
            dbu.delete_collection_obj(col)
            logger.info('Collections after "%s"' %
                        str(dbu.collection_names(db)))
            logger.info(dbu.database_fs_info(db, gap=''))
        else:
            dbu.request_confirmation()