def reset(jobtype, all, rule): """Resets the job to "T"odo. ARG is [CC] or [DTT]. By default only resets jobs "I"n progress. --all resets all jobs, whatever the flag value""" from ..api import connect, reset_jobs, read_db_inifile dbini = read_db_inifile() prefix = (dbini.prefix + '_') if dbini.prefix != '' else '' session = connect() if jobtype == "DA": session.execute("UPDATE {0}data_availability SET flag='M'" .format(prefix)) elif jobtype != jobtype.upper(): logging.info("The jobtype %s is not uppercase (usually jobtypes" " are uppercase...)"%jobtype) reset_jobs(session, jobtype, all, rule) session.close()
def new_jobs(init, nocc, hpc=""): """Determines if new CC jobs are to be defined""" if not hpc: from ..s02new_jobs import main main(init, nocc) if hpc: from ..api import connect, read_db_inifile dbini = read_db_inifile() prefix = (dbini.prefix + '_') if dbini.prefix != '' else '' left, right = hpc.split(':') db = connect() db.execute("INSERT INTO {prefix}jobs (pair, day, jobtype, flag) " "SELECT pair, day, '{right_type}', 'T' FROM {prefix}jobs " "WHERE jobtype='{left_type}' AND flag='D';" .format(prefix=prefix, right_type=right, left_type=left)) db.commit() db.close()
def info_db_ini(): """ Show information stored in the db.ini file. """ from ..api import read_db_inifile dbini = read_db_inifile() click.echo('\nDatabase information stored in the db.ini file:') if dbini.tech == 1: click.echo(' - database type: SQLite') click.echo(' - filename: {}'.format(dbini.hostname)) elif dbini.tech == 2: click.echo(' - database type: MySQL') click.echo(' - hostname: {}'.format(dbini.hostname)) click.echo(' - database: {}'.format(dbini.database)) click.echo(' - username: {}'.format(dbini.username)) click.echo(' - password: {}'.format('*' * len(dbini.password))) click.echo(' - table prefix: {}'.format(dbini.prefix if dbini.prefix else '(none)'))
def reset(jobtype, all, rule): """Resets the job to "T"odo. JOBTYPE is the acronym of the job type. By default only resets jobs "I"n progress. --all resets all jobs, whatever the flag value. Standard Job Types are CC, STACK, MWCS and DTT, but plugins can define their own.""" from ..api import connect, reset_jobs, read_db_inifile dbini = read_db_inifile() prefix = (dbini.prefix + '_') if dbini.prefix != '' else '' session = connect() if jobtype == "DA": session.execute("UPDATE {0}data_availability SET flag='M'" .format(prefix)) elif jobtype != jobtype.upper(): logging.info("The jobtype %s is not uppercase (usually jobtypes" " are uppercase...)"%jobtype) reset_jobs(session, jobtype, all, rule) session.close()
def upgrade(): """Upgrade the database from previous to a new version.\n This procedure adds new parameters with their default value in the config database. """ from ..api import connect, Config, read_db_inifile from ..default import default db = connect() dbini = read_db_inifile() prefix = (dbini.prefix + '_') if dbini.prefix != '' else '' for name in default.keys(): try: db.add(Config(name=name, value=default[name][1])) db.commit() except: db.rollback() # print("Passing %s: already in DB" % name) continue try: db.execute("CREATE UNIQUE INDEX job_index ON %sjobs (day, pair, " "jobtype)" % prefix) db.commit() except: logging.info("It looks like the v1.5 'job_index' is already in the DB") db.rollback() try: db.execute("CREATE INDEX job_index2 ON %sjobs (jobtype, flag)" % prefix) db.commit() except: logging.info("It looks like the v1.6 'job_index2' is already in the DB") db.rollback() try: db.execute("CREATE UNIQUE INDEX da_index ON %sdata_availability (path, " "file, net, sta, comp)" % prefix) db.commit() except: logging.info("It looks like the v1.5 'da_index' is already in the DB") db.rollback() db.close()
def clean_duplicates(): """Checks the Jobs table and deletes duplicate entries""" from msnoise.api import connect, read_db_inifile dbini = read_db_inifile() prefix = (dbini.prefix + '_') if dbini.prefix != '' else '' db = connect() if dbini.tech == 1: query = 'DELETE FROM {0}jobs WHERE rowid NOT IN '\ '(SELECT MIN(rowid) FROM {0}jobs GROUP BY day,pair,jobtype)'\ .format(prefix) else: query = 'DELETE from {0}jobs USING {0}jobs as j1, {0}jobs as j2 '\ 'WHERE (j1.ref > j2.ref) AND (j1.day=j2.day) '\ 'AND (j1.pair=j2.pair) AND (j1.jobtype=j2.jobtype)'\ .format(prefix) db.execute(query) db.commit() db.close()