Source code for synapse.lib.stormlib.backup

import synapse.common as s_common
import synapse.lib.stormtypes as s_stormtypes

[docs]@s_stormtypes.registry.registerLib class BackupLib(s_stormtypes.Lib): ''' A Storm Library for interacting with the backup APIs in the Cortex. ''' _storm_locals = ( {'name': 'run', 'desc': 'Run a Cortex backup.', 'type': {'type': 'function', '_funcname': '_runBackup', 'args': ( {'name': 'name', 'type': 'str', 'desc': 'The name of the backup to generate.', 'default': None, }, {'name': 'wait', 'type': 'boolean', 'desc': 'If true, wait for the backup to complete before returning.', 'default': True, }, ), 'returns': {'type': 'str', 'desc': 'The name of the newly created backup.', }}}, {'name': 'list', 'desc': 'Get a list of backup names.', 'type': {'type': 'function', '_funcname': '_listBackups', 'returns': {'type': 'list', 'desc': 'A list of backup names.', }}}, {'name': 'del', 'desc': 'Remove a backup by name.', 'type': {'type': 'function', '_funcname': '_delBackup', 'args': ( {'name': 'name', 'type': 'str', 'desc': 'The name of the backup to remove.', }, ), 'returns': {'type': 'null', }}}, ) _storm_lib_path = ('backup',) _storm_lib_perms = ( {'perm': ('backup', 'del'), 'gate': 'cortex', 'desc': 'Permits a user to delete an existing backup.'}, {'perm': ('backup', 'list'), 'gate': 'cortex', 'desc': 'Permits a user to list existing backups.'}, {'perm': ('backup', 'run'), 'gate': 'cortex', 'desc': 'Permits a user to create a backup.'}, )
[docs] def getObjLocals(self): return { 'run': self._runBackup, 'list': self._listBackups, 'del': self._delBackup, }
async def _runBackup(self, name=None, wait=True): name = await s_stormtypes.tostr(name, noneok=True) wait = await s_stormtypes.tobool(wait) todo = s_common.todo('runBackup', name=name, wait=wait) gatekeys = ((self.runt.user.iden, ('backup', 'run'), None),) return await self.dyncall('cortex', todo, gatekeys=gatekeys) @s_stormtypes.stormfunc(readonly=True) async def _listBackups(self): todo = s_common.todo('getBackups') gatekeys = ((self.runt.user.iden, ('backup', 'list'), None),) return await self.dyncall('cortex', todo, gatekeys=gatekeys) async def _delBackup(self, name): name = await s_stormtypes.tostr(name) todo = s_common.todo('delBackup', name) gatekeys = ((self.runt.user.iden, ('backup', 'del'), None),) return await self.dyncall('cortex', todo, gatekeys=gatekeys)