Ejemplo n.º 1
0
def LoadCCDB():
    sqlite_connect_str = "mysql://[email protected]/ccdb"
    provider = ccdb.AlchemyProvider()                        # this class has all CCDB manipulation functions
    provider.connect(sqlite_connect_str)                     # use usual connection string to connect to database
    provider.authentication.current_user_name = "sdobbs"  # to have a name in logs

    return provider
Ejemplo n.º 2
0
def ccdb2dict(ccdb_path, runnum, table_list):
    provider = ccdb.AlchemyProvider()
    provider.connect('sqlite:///' + ccdb_path)
    dict0 = {}
    for x in table_list:
        assignment = provider.get_assignment(x, runnum, 'default')
        dict0[x] = assignment.constant_set.data_table
    return dict0
Ejemplo n.º 3
0
 def setUp(self):
     # create CCDB api class
     self.provider = ccdb.AlchemyProvider(
     )  # this class has all CCDB manipulation functions
     self.provider.connect(
         "mysql://ccdb_user@localhost/ccdb_test"
     )  # use usual connection string to connect to database
     self.provider.authentication.current_user_name = "anonymous"  # to have a name in logs
Ejemplo n.º 4
0
def connecting_ccdb(calibration_connection, variation, user="******"):
    provider = ccdb.AlchemyProvider()
    provider.connect(calibration_connection)
    provider.authentication.current_user_name = user

    try:
        provider.get_variation(variation)  # cheking if there is a variation
    except:
        create_variation(provider, variation)

    return provider
Ejemplo n.º 5
0
    def __init__(self,table_filename,src_run,ref_run=None,src_variation="calib",ref_variation="default"):
        self.VERBOSE = 1
        # create CCDB api class
        self.provider = ccdb.AlchemyProvider()                          # this class has all CCDB manipulation functions
        self.provider.connect(os.environ['CCDB_CONNECTION'])            # use usual connection string to connect to database
        self.provider.authentication.current_user_name = "calib"        # to have a name in logs

        # configurations
        self.src_variation = src_variation
        self.ref_variation = ref_variation
        self.src_run = src_run
        if ref_run is None:        # default to comparing the same run
            self.ref_run = src_run
        else:
            self.ref_run = ref_run

        # load list of table names we should include in the report
        self.tables = []
        with open(table_filename) as f:
            for line in f:
                if line[0] != '#':
                    self.tables.append(line.strip())
Ejemplo n.º 6
0
    def __init__(self,
                 ccdb_connect_str=None,
                 run=0,
                 variation="default",
                 verbosity=None,
                 ccdb_username=None):
        if verbosity is None:
            self.VERBOSE = 1
        else:
            self.VERBOSE = verbosity
        if ccdb_username is None:
            # not going to save this for now
            ccdb_username = "******"

        # save defaults for copy command
        self.run = run
        self.variation = variation

        # force users to set the CCDB connection by hand
        # so that we don't accidentally hit the MySQL master too hard
        if ccdb_connect_str is None:
            raise RuntimeError("Need to set CCDB connection!")

        # create CCDB api class
        self.ccdb_connect_str = ccdb_connect_str
        self.provider = ccdb.AlchemyProvider(
        )  # this class has all CCDB manipulation functions
        self.provider.connect(
            ccdb_connect_str
        )  # use usual connection string to connect to database
        self.provider.authentication.current_user_name = ccdb_username  # to have a name in logs

        if self.VERBOSE > 0:
            print "Created HDCCDBCopier object:"
            print "  CCDB: %s" % self.ccdb_connect_str
            print "  Source run = %d" % self.run
            print "  Source variation = %s" % self.variation
Ejemplo n.º 7
0
if __name__ == "__main__":

    ccdb_home = os.environ[
        "CCDB_HOME"]  # This environment variable should be set!

    # Set env. variable PYTHONPATH=$CCDB_HOME/python;$PYTHONPATH
    # or sys.path.append(os.path.join(ccdb_home, "python"))
    import ccdb
    from ccdb import Variation
    from sqlalchemy import desc

    sqlite_connect_str = "sqlite:///" + os.path.join(ccdb_home, "sql",
                                                     "ccdb.sqlite")

    # create CCDB api class
    provider = ccdb.AlchemyProvider(
    )  # this class has all CCDB manipulation functions
    provider.connect(sqlite_connect_str
                     )  # use usual connection string to connect to database
    provider.authentication.current_user_name = "anonymous"  # to have a name in logs

    # create parent variation
    parent_var = provider.create_variation(
        "test_pyllapi_parent")  # Parent is omitted => parent is 'default'

    # create child variation. We specify its name, comment and parent variation
    child_var = provider.create_variation("test_pyllapi",
                                          "Test how to work from py llapi",
                                          "test_pyllapi_parent")
    print("Created variations: ")
    print("{} , parent {}".format(
        child_var,
Ejemplo n.º 8
0
                 help='minimum run number',
                 type=int,
                 required=True)
cli.add_argument('-max',
                 metavar='#',
                 help='maximum run number',
                 type=int,
                 required=True)
cli.add_argument('-table', help='table name', type=str, required=True)
cli.add_argument('-variation',
                 help='variation name (default=default)',
                 type=str,
                 required=False,
                 default='default')
args = cli.parse_args(sys.argv[1:])

ranges = []
provider = ccdb.AlchemyProvider()
provider.connect(os.getenv('CCDB_CONNECTION'))

for run in range(args.min, args.max + 1):
    assignment = provider.get_assignment(args.table, run, args.variation)
    if len(ranges) == 0 or ranges[-1].assignment.id != assignment.id:
        ranges.append(Range(run, run, assignment))
    elif ranges[-1].run_max == run - 1:
        ranges[-1].run_max = run
    else:
        raise Exception('This should be impossible.')

print(Range.header() + '\n' + '\n'.join([str(r) for r in ranges]))