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()
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()
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()
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()