def executeCommand(self, cmd, request): #DB maintenance commands try: if cmd=='DB_BACKUP': output_file = request.data try: _db.lock() backfiles = _db.db_handle._backup(output_file) finally: _db.unlock() return (0, 'Database backup completed successfully.') elif cmd=='DB_RESTORE': backup_set = request.data _db.db_handle._restore(backup_set) return (0, 'Database restore completed successfully.') elif cmd=='DB_RECOVER': _db.close() _db._recover() return (0, 'Database recovery completed successfully.') elif cmd=='DB_SHRINK': iLogs = _db.db_handle._shrink() if iLogs: return (0, 'Successfully removed %d log files.' % iLogs) else: return (0, 'No log files removed.') # unknown command else: logger.warning( 'Management service received unknown command: %s' % cmd) return (-1, 'Unknown command.') except IOError: return (-1, 'Invalid file path.') except NotImplementedError: return (-1, 'Unsupported command.')
def lock_db(): _db.lock()