Panel/docs/features/SCHEDULER_ACTIONS.md
2026-06-08 16:09:54 -05:00

4.9 KiB

Scheduler Actions

Workspace reference: GSP-WORKSPACE.md

Scope

This file is the command reference for the current scheduler system.

Primary files:

  • Panel/modules/cron/cron.php
  • Panel/modules/cron/user_cron.php
  • Panel/modules/cron/shared_cron_functions.php
  • Agent_Linux/ogp_agent.pl
  • Agent-Windows/OGP64/OGP/ogp_agent.pl

Current Model

The Panel scheduler builds a cron expression and a command string.

In the common case, that command string is a wget call back into:

  • Panel/ogp_api.php

The agent stores the cron entry and executes it locally.

Action Catalog

Action Key Built By Effective Runtime Target Modules Affected Agent Calls Eventually Performed
start cron/shared_cron_functions.php ogp_api.php?gamemanager/start cron, gamemanager universal_start
stop same ogp_api.php?gamemanager/stop cron, gamemanager stop_server
restart same ogp_api.php?gamemanager/restart cron, gamemanager restart_server
steam_auto_update same ogp_api.php?gamemanager/update&type=steam cron, gamemanager steam_cmd / auto-update path
server_content_check_updates same ogp_api.php?server_content/run_scheduled_action cron, addonsmanager server-content manifest flow, remote exec / helper scripts
server_content_check_workshop_updates same same cron, addonsmanager Workshop/content check flow
server_content_install_updates_if_stopped same same cron, addonsmanager, gamemanager conditional install
server_content_install_updates_next_restart same same cron, addonsmanager, gamemanager deferred install marker
server_content_install_updates_now same same cron, addonsmanager immediate content install
server_content_install_updates_and_restart same same cron, addonsmanager, gamemanager content update plus restart
server_content_notify_updates_only same same cron, addonsmanager check-and-notify
server_content_update_all same same cron, addonsmanager aggregate update flow
server_content_validate_files same same cron, addonsmanager validation flow
server_content_backup_before_update same same cron, addonsmanager, backup-related helpers backup hook before content update
workshop_update same same cron, addonsmanager Server Content Manager Workshop update flow
workshop_update_and_restart same same cron, addonsmanager, gamemanager Workshop update plus safe restart request
workshop_download_only same same cron, addonsmanager SteamCMD download/cache without copying into live mod folders
workshop_install_pending_on_restart same same cron, addonsmanager Install Workshop items marked pending_action=install_on_restart

Agent Scheduler RPCs

RPC Purpose
scheduler_add_task add cron line
scheduler_edit_task update cron line
scheduler_del_task delete cron line
scheduler_list_tasks list cron lines

Internal Agent Scheduler Subroutines

Subroutine Purpose
scheduler_dispatcher top-level cron callback
scheduler_server_action execute parsed action
scheduler_log_events append scheduler.log
scheduler_read_tasks reload current cron entries
scheduler_stop stop and rebuild cron object

Runtime Flow

User/admin saves scheduler job in Panel
  -> Panel builds cron line
  -> Panel sends cron line to agent with scheduler_add_task/edit_task
  -> Agent stores job
  -> Agent executes cron job later
  -> cron job usually calls ogp_api.php
  -> ogp_api.php dispatches to gamemanager or server_content action
  -> those paths may call the agent again for actual server/content work

This means the current scheduler is two-hop:

  1. agent cron executes a Panel API URL
  2. the Panel API route often calls back to the same or another agent

Logging

Current observable logs:

  • agent-side scheduler.log
  • panel-side UI through Panel/modules/cron/events.php
  • module-specific logs from gamemanager or addonsmanager

Limitations

Limitation Effect
string-based cron commands weaker typing and validation
action permissions are implicit customer-safe vs admin-only is not strongly modeled
result storage is agent-log-centric poor user-facing job history
jobs depend on Panel URL/token validity token rotations require cron rewrite
many actions are API callbacks, not local structured tasks more moving parts and harder debugging

Search Coverage Used For This Document

  • sed -n '1,260p' Panel/modules/cron/shared_cron_functions.php
  • rg -n "scheduler_" Agent_Linux/ogp_agent.pl Agent-Windows/OGP64/OGP/ogp_agent.pl
  • rg -n "gamemanager/(start|stop|restart)|server_content/run_scheduled_action" Panel/modules/cron