118 telem_args = self.log.name +
'.' + dev,
'/opt/MagAOX/telem', (self.
config.logdump_exe,
'--ext=.bintel'), dev, self.
telem_queuetelem_queue, Telem
119 telem_thread = threading.Thread(target=_run_logdump_thread, args=telem_args, daemon=
True)
121 self.log.debug(f
"Watching {dev} for incoming telem")
124 if dev ==
"observers":
126 user_log_thread = threading.Thread(target=_run_logdump_thread, args= ULog_args, daemon=
True)
127 user_log_thread.start()
128 self.log.debug(f
"Watching {dev} for incoming user logs")
142 last_update = properties.NumberVector(name=
"last_update", perm=constants.PropertyPerm.READ_ONLY)
143 last_update.add_element(DefNumber(
146 min=0.0, max=1e200, format=
'%f',
149 self.add_property(last_update)
151 records = properties.NumberVector(name=
"records", perm=constants.PropertyPerm.READ_ONLY)
152 records.add_element(DefNumber(
155 min=0.0, max=1e200, format=
'%f',
158 records.add_element(DefNumber(
159 name=
"since_startup",
161 min=0, max=1_000_000_000, format=
'%i',
164 self.add_property(records)
166 role = os.environ.get(
'MAGAOX_ROLE',
'')
167 proclist = pathlib.Path(self.
config.proclist.replace(
'%s', role))
168 if not proclist.exists():
169 raise RuntimeError(f
"No process list at {proclist}")
173 with proclist.open()
as fh:
177 if line.strip()[0] ==
'#':
179 parts = line.split(
None, 1)
181 raise RuntimeError(f
"Got malformed proclist line: {repr(line)}")
182 device_names.add(parts[0])
189 for dev
in device_names:
203 for dirname
in self.
config.data_dirs:
204 dirpath = self.
config.common_path_prefix / dirname
205 if not dirpath.exists():
206 self.log.debug(f
"No {dirpath} to watch")
209 self.log.info(f
"Watching {dirpath} for changes")