Panel/docs/modules/SCHEDULER.md
2026-06-07 16:04:39 -05:00

99 lines
2.8 KiB
Markdown

# Scheduler
## Current Implementation
The scheduler lives in the `cron` module on the Panel and in scheduler methods inside the agents.
Important files:
- `Panel/modules/cron/module.php`
- `Panel/modules/cron/cron.php`
- `Panel/modules/cron/shared_cron_functions.php`
- `Agent_Linux/ogp_agent.pl`
- `Agent-Windows/OGP64/OGP/ogp_agent.pl`
## How It Works Today
The Panel builds cron-like jobs and sends them to the agent using RPC methods such as:
- `scheduler_add_task`
- `scheduler_edit_task`
- `scheduler_del_task`
- `scheduler_list_tasks`
- `scheduler_read_tasks`
The agent stores and executes the tasks locally.
## Current Task Model
Current jobs are built as cron expressions plus a command string.
The command can be:
- a safe predefined server action
- an update-related action
- a server content action
- a raw admin command
## Scheduled Actions Observed
From the current codebase and related Server Content work, the action set includes:
- restart server
- stop server
- start server
- Steam auto update
- server content update checks
- server content install/update actions
- validate files
- backup before update
- notify-only update flow
## Problems With the Current Design
- The task model is not strongly typed.
- Customer-safe and admin-only actions are too easy to blur together.
- Task output and run history are not user-friendly enough.
- The agent is the executor, but the Panel needs a better task record and result view.
- Overlap/conflict rules are not explicit.
- Missed-task behavior after reboot should be documented and normalized.
## Recommended Next-Step Shape
Use typed actions instead of raw command strings for customer-facing scheduler tasks.
Suggested fields:
- action key
- display name
- role
- arguments
- timeout
- retry behavior
- conflict rules
- log policy
## Agent Interaction Pattern
```text
Panel schedules task
-> Panel stores intent and UI data
-> Panel sends job to agent
-> agent writes/loads scheduler state
-> agent executes action at the right time
-> agent logs result
-> Panel reads back task state
```
## What To Inspect in Code
If scheduler behavior needs deeper investigation, start with:
- `Panel/modules/cron/cron.php`
- `Panel/modules/cron/shared_cron_functions.php`
- `Agent_Linux/ogp_agent.pl` scheduler subroutines
- `Agent-Windows/OGP64/OGP/ogp_agent.pl` scheduler subroutines
## Current Panel Update Finding
The current scheduler does not provide a first-class path for scheduling Panel, Website, or remote agent self-updates. Existing scheduled update actions are game-server oriented, for example `gamemanager/update&type=steam` and Server Content actions. Backup and retention behavior in `Panel/modules/administration/panel_update.php` therefore applies to manual/admin-triggered updater flows, not to any existing scheduled self-update job.