DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
consolidate Namespace Reference

Functions

 get_all_includes (db, file)
 
 consolidate_db (oksfile, output_file)
 
 copy_configuration (Path dest_dir, list input_files)
 
 consolidate_files (oksfile, *input_files)
 

Variables

 log = getLogger('daqconf.consolidate')
 

Function Documentation

◆ consolidate_db()

consolidate.consolidate_db ( oksfile,
output_file )

Definition at line 18 of file consolidate.py.

18def consolidate_db(oksfile, output_file):
19 log.info(f"Consolidating database into output database \'{output_file}\'. Input database: \'{oksfile}\'.")
20
21 sys.setrecursionlimit(10000) # for example
22 log.debug("Reading database")
23 db = conffwk.Configuration("oksconflibs:" + oksfile)
24
25 schemafiles = []
26 includes = get_all_includes(db, None)
27 schemafiles += [i for i in includes if "schema.xml" in i]
28 log.debug(f"Included schemas: {schemafiles}")
29
30 log.debug("Creating new database")
31 new_db = conffwk.Configuration("oksconflibs")
32 new_db.create_db(output_file, schemafiles)
33
34 new_db.commit()
35
36 log.debug("Reading dal objects from old db")
37 dals = db.get_all_dals()
38
39 log.debug(f"Copying objects to new db")
40
41 for dal in dals:
42 this_dal = db.get_dal(dals[dal].className(), dals[dal].id)
43 new_db.add_dal(this_dal)
44
45 log.debug("Saving database")
46 new_db.commit()
47
48

◆ consolidate_files()

consolidate.consolidate_files ( oksfile,
* input_files )

Definition at line 87 of file consolidate.py.

87def consolidate_files(oksfile, *input_files):
88 includes = []
89 dbs = []
90 str_in_files = '\n'.join(input_files)
91 log.info(f"Consolidating {len(input_files)} databases into output database \'{oksfile}\'. Input databases: {str_in_files}")
92 sys.setrecursionlimit(10000) # for example
93
94 for input_file in input_files:
95 dbs.append(conffwk.Configuration("oksconflibs:" + input_file))
96 includes += get_all_includes(dbs[len(dbs) - 1], None)
97
98 includes = list(set(includes))
99 includes = [i for i in includes if i not in input_files]
100 log.debug(f"Included files: {includes}")
101
102 new_db = conffwk.Configuration("oksconflibs")
103 new_db.create_db(oksfile, includes)
104
105 new_db.commit()
106
107 for db in dbs:
108 log.debug(f"Reading dal objects from old db {db}")
109 dals = db.get_all_dals()
110
111 log.debug(f"Copying objects to new db {new_db}")
112 for dal in dals:
113
114 try:
115 new_db.get_dal(dals[dal].className(), dals[dal].id)
116 except:
117 new_db.add_dal(dals[dal])
118 new_db.commit()
119
120 log.debug(f"Saving database {new_db}")
121 new_db.commit()

◆ copy_configuration()

consolidate.copy_configuration ( Path dest_dir,
list input_files )

Definition at line 49 of file consolidate.py.

49def copy_configuration(dest_dir : Path, input_files: list):
50 if len(input_files) == 0:
51 return []
52
53 log.info(f"Copying configuration represented by databases: \'{input_files}\' to \'{dest_dir}\'")
54 dest_dir = dest_dir.resolve() # Always include by absolute path when copying
55 sys.setrecursionlimit(10000) # for example
56
57 output_dbs = []
58
59 for input_file in input_files:
60 db = conffwk.Configuration("oksconflibs:" + input_file)
61 includes = db.get_includes(None)
62 schemas = [i for i in includes if "schema.xml" in i]
63 dbs = [i for i in includes if "data.xml" in i]
64 newdbs = copy_configuration(dest_dir, dbs)
65
66 output_file = dest_dir / os.path.basename(input_file)
67
68 new_db = conffwk.Configuration("oksconflibs")
69 new_db.create_db(str(output_file), schemas + newdbs)
70 new_db.commit()
71
72 dals = db.get_all_dals()
73
74 for dal in dals:
75
76 db.get_dal(dals[dal].className(), dals[dal].id)
77
78 new_db.add_dal(dals[dal])
79
80 new_db.commit()
81 output_dbs.append(str(output_file))
82 log.debug("DONE")
83
84 return output_dbs
85
86

◆ get_all_includes()

consolidate.get_all_includes ( db,
file )

Definition at line 9 of file consolidate.py.

9def get_all_includes(db, file):
10 includes = db.get_includes(file)
11 for include in includes:
12 if "data.xml" not in include:
13 continue
14 includes += get_all_includes(db, include)
15
16 return list(set(includes))
17

Variable Documentation

◆ log

consolidate.log = getLogger('daqconf.consolidate')

Definition at line 6 of file consolidate.py.