Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7920d52

Browse files
committedMar 31, 2025·
add cron/trigger migrations
1 parent 8e94044 commit 7920d52

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed
 

‎synapse/tools/migrate3x.py

+61-1
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,10 @@ async def _migrCell(self):
436436
authkv = self.cellslab.getSafeKeyVal('auth')
437437
userkv = authkv.getSubKeyVal('user:info:')
438438

439+
permmigrs = (
440+
(('cron', 'set', 'creator'), ('cron', 'set', 'user')),
441+
)
442+
439443
for iden, info in userkv.items():
440444
update = False
441445
if not isinstance(info.get('onepass'), (None, dict)):
@@ -448,7 +452,63 @@ async def _migrCell(self):
448452
update = True
449453
info.pop('passwd')
450454

451-
userkv.set(iden, info)
455+
rules = []
456+
for allow, path in info.get('rules', ()):
457+
for oldperm, newperm in permmigrs:
458+
if path[:3] == oldperm:
459+
update = True
460+
rules.append((allow, newperm + path[3:]))
461+
continue
462+
rules.append((allow, path))
463+
464+
info['rules'] = rules
465+
466+
if update:
467+
userkv.set(iden, info)
468+
469+
rolekv = authkv.getSubKeyVal('role:info:')
470+
471+
for iden, info in rolekv.items():
472+
update = False
473+
rules = []
474+
for allow, path in info.get('rules', ()):
475+
for oldperm, newperm in permmigrs:
476+
if path[:3] == oldperm:
477+
update = True
478+
rules.append((allow, newperm + path[3:]))
479+
continue
480+
rules.append((allow, path))
481+
482+
info['rules'] = rules
483+
484+
if update:
485+
rolekv.set(iden, info)
486+
487+
for viewiden in self.viewdefs.keys():
488+
trigdict = self.core.cortexdata.getSubKeyVal(f'view:{viewiden}:trigger:')
489+
for trigiden, tdef in trigdict.items():
490+
if tdef.get('creator') is None:
491+
tdef['creator'] = tdef['user']
492+
trigdict.set(trigiden, tdef)
493+
494+
defview = self.cellinfo.get('defaultview')
495+
apptdefs = self.cortexdata.getSubKeyVal('agenda:appt:')
496+
for apptiden, info in apptdefs.items():
497+
info['user'] = info.get('creator')
498+
499+
if info.get('view') is not None:
500+
apptdefs.set(apptiden, info)
501+
continue
502+
503+
if (userinfo := userkv.get(info['user'])) is None:
504+
logger.warning(f'cron job ({apptiden}) has no user or view set and will be removed!')
505+
apptdefs.delete(apptiden)
506+
continue
507+
508+
profilekv = authkv.getSubKeyVal(f'user:{userinfo["iden"]}:profile:')
509+
info['view'] = profilekv.get('cortex:view', defview)
510+
511+
apptdefs.set(apptiden, info)
452512

453513
logger.info(f'Completed cell migration, removed deprecated confdefs: {remconfs}')
454514
await self._migrlogAdd('cell', 'prog', 'none', s_common.now())

0 commit comments

Comments
 (0)
Please sign in to comment.