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 print_content(self): dbname = dbu.get_dbname(**self.kwargs) client = self.client() if dbname is not None: logger.info(dbu.database_info(client, dbname, level=3)) else: logger.info(dbu.client_info(client, level=2))
def info_webclient(**kwargs): width = kwargs.get('width', 24) ptrn = mu.db_prefixed_name('') if kwargs.get('cdbonly', False) else None dbnames = database_names(url=cc.URL, pattern=ptrn) dbname = mu.get_dbname(**kwargs) if dbname is None: s = '\n=== web client %s contains %d databases for name pattern "%s":\n%s\n\n' % (cc.URL, len(dbnames), str(ptrn), str_formatted_list(dbnames)) for name in dbnames: colnames = collection_names(name, url=cc.URL) s += '%s %2d cols: %s\n' % (str(name).ljust(width), len(colnames), str(colnames)) return s if not (dbname in dbnames): return '\n=== database %s is not found in the list of known:\n%s' % (dbname, str_formatted_list(dbnames)) colname = mu.get_colname(**kwargs) colnames = collection_names(dbname, url=cc.URL) if colname is None: if colnames is None: return '\n=== colnames is None: database %s is empty ???' % (dbname) s = '\n=== database %s contains %d collections: %s\n' % (dbname, len(colnames), str(colnames)) for cname in colnames: s += '%s\n' % info_docs(dbname, cname) return s if not(colname in colnames): return '\n=== database %s does not have collection %s in the list: %s' % (dbname, colname, str(colnames)) docid = kwargs.get('docid', None) if docid is None: return info_docs(dbname, colname) return info_doc(dbname, colname, docid)
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 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()
def get(self): """Saves in file calibration constants from database. """ mode, kwargs = self.mode, self.kwargs defs = self.defs host = kwargs.get('host', None) port = kwargs.get('port', None) exp = kwargs.get('experiment', None) det = kwargs.get('detector', None) ctype = kwargs.get('ctype', None) run = kwargs.get('run', None) run_end = kwargs.get('run_end', None) tsec = kwargs.get('time_sec', None) tstamp = kwargs.get('time_stamp', None) vers = kwargs.get('version', None) fname = kwargs.get('iofname', None) query = {'detector': det, 'ctype': ctype} if run != defs['run']: query['run'] = {'$lte': run} query['run_end'] = {'$gte': run} if tsec != defs['time_sec']: query['time_sec'] = {'$lte': tsec} if vers != defs['version']: query['version'] = vers #logger.debug('query: %s' % str(query)) 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('Search document in db "%s" collection "%s"' % (dbname, colname)) #client, expname, detname, db_exp, db_det, fs_exp, fs_det, col_exp, col_det =\ # dbu.connect(host=host, port=port, experiment=exp, detector=det, verbose=verb) #fs, doc = fs_exp, dbu.find_doc(col, query) #if doc is None : # fs, doc = fs_det, dbu.find_doc(col_det, query) # if doc is None : # logger.warning('Can not find document for query: %s' % str(query)) # return doc = dbu.find_doc(col, query) if doc is None: logger.warning('Can not find document for query: %s' % str(query)) return data = dbu.get_data_for_doc(fs, doc) if data is None: logger.warning('Can not load data for doc: %s' % str(doc)) return if fname is None: fname = 'clb-%s-%s-%s.npy' % (expname, det, ctype) if ctype == 'geometry': gu.save_textfile(data, fname, mode='w', verb=verb) elif os.path.splitext(fname)[1] == '.npy': np.save(fname, data, allow_pickle=False) else: save_txt(fname, data, fmt='%.2f') if verb: logger.info(info_ndarr(data, 'nda', first=0, last=3)) logger.info('Save constants in file: %s' % fname)
def print_content(self): dbname = mu.get_dbname(**self.kwargs) client = self.client() logger.info( mu.client_info(client, level=2) if dbname is None else mu. database_info(client, dbname, level=3))