Loading…
Loading…
Describes the scheduled service for automatically importing WSDLs from F5 BIG-IP instances, including its configuration, execution flow, and concurrency
The F5 WSDL Auto-Import Scheduler is an automated background service that periodically discovers and imports Web Services Definition Language (WSDL) files from registered F5 BIG-IP instances.
This component solves the problem of keeping API definitions synchronized with services exposed through F5 BIG-IP without requiring manual intervention. It operates by scanning the platform's database for F5 instances configured for auto-import, dispatching import tasks to a managed thread pool, and recording the outcome of each import attempt.
The scheduler is a self-contained process within the admin service. Its inputs are the F5 instance configurations stored in the database. Its outputs are updated WSDL probe statuses in the F5SyncStateRepository and success logs in the AuditRepository.
The scheduler executes periodically, governed by a fixed-delay timer. Each execution cycle performs the following sequence of operations:
running flag.enabled.autoWsdlImportEnabled set to true.managementUrl.F5AutoImportDispatcher. This dispatcher manages a bounded executor thread pool, ensuring that the main scheduler thread is never blocked by network I/O or long-running import operations. The dispatcher also ensures that no more than one import task for the same F5 instance is in flight at any given time.runImport logic for a single F5 instance. This involves:
a. Calling the F5WsdlAutoImportService to perform the WSDL import from the F5 management API.
b. If the import is successful, it updates the instance's status by calling f5SyncStateRepository.markWsdlProbe with the results.
c. A success event is recorded in the audit log via the AuditRepository with the event name f5.instance.wsdl-import.auto.IMPORT_TIMEOUT). If an import operation against an F5 instance's management API does not complete within this window, the task is automatically terminated. This prevents a single unresponsive F5 instance from blocking the import executor indefinitely.The following diagram illustrates the data flow for a single scheduled run.
sequenceDiagram
participant Scheduler
participant F5 Instance DB
participant F5 Auto-Import Dispatcher
participant F5 WSDL Import Service
participant F5 Sync State DB
participant Audit Log DB
Scheduler->>Scheduler: runScheduled()
Note over Scheduler: Check if enabled and not already running
Scheduler->>F5 Instance DB: findAllAcrossTenants()
F5 Instance DB-->>Scheduler: List of F5InstanceRecord
Scheduler->>Scheduler: Filter for eligible instances
loop For each eligible instance
Scheduler->>F5 Auto-Import Dispatcher: dispatchImportAsync(instance)
F5 Auto-Import Dispatcher->>F5 Auto-Import Dispatcher: dispatch(instance.id, runImport)
Note over F5 Auto-Import Dispatcher: Submits task to executor; enforces timeout
end
par
F5 Auto-Import Dispatcher-->>+F5 WSDL Import Service: (async) runImport() -> autoImportSuccessfulProbes()
F5 WSDL Import Service-->>-F5 Auto-Import Dispatcher: Import result
alt Import Successful
F5 Auto-Import Dispatcher->>+F5 Sync State DB: markWsdlProbe()
F5 Sync State DB-->>-F5 Auto-Import Dispatcher:
F5 Auto-Import Dispatcher->>+Audit Log DB: success()
Audit Log DB-->>-F5 Auto-Import Dispatcher:
else Import Failed (Exception)
F5 Auto-Import Dispatcher->>F5 Auto-Import Dispatcher: Log warning message
end
endThe scheduler's behavior is controlled by application properties and per-instance database settings.
These properties are configured in the admin service's application settings and require a restart to apply.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
s2r.f5.auto-import.enabled | boolean | true | No | Enables or disables the entire auto-import scheduler. If false, the runScheduled method will do nothing. |
s2r.f5.auto-import.initial-delay-ms | long | 60000 | No | The time in milliseconds to wait after service startup before the first execution. |
s2r.f5.auto-import.delay-ms | long | 60000 | No | The fixed delay in milliseconds between the completion of one execution and the start of the next. |
NOTE
At startup, the service logs the value of a system setting with the key f5_auto_import_delay_ms. This log is for informational purposes. The actual scheduling interval is controlled exclusively by the s2r.f5.auto-import.delay-ms application property.
For an F5 instance to be included in an auto-import run, the following fields on its F5InstanceRecord in the database must be correctly set:
| Field | Condition for Inclusion |
|---|---|
enabled | Must be true. |
autoWsdlImportEnabled | Must be true. |
managementUrl | Must be a non-null, non-blank string. |
If an import fails for a specific F5 instance, the service logs a warning message and continues to process other instances.
Scheduled F5 WSDL auto-import failed for <instance-name>: <error-message>.If you expect an instance to be processed but it is not, verify its configuration.
enabled must be true, autoWsdlImportEnabled must be true, and managementUrl must be populated.F5InstanceRecord for the instance in the database to ensure it meets all criteria.If the scheduler does not appear to be running at all.
F5AutoImportScheduler appear after the initial startup message.s2r.f5.auto-import.enabled is set to true.An individual import task is designed to time out to prevent system-wide stalls.
This component is an internal, time-based scheduler and does not expose any direct user-facing API endpoints or CLI commands. Its operation is entirely automatic and configured via application properties and database records.