
SolarWinds Orion IpAllocationTrigger
CertifiedEnterprise EditionTrigger on new IP allocations or releases in SolarWinds IPAM
SolarWinds Orion IpAllocationTrigger
Trigger on new IP allocations or releases in SolarWinds IPAM
Polls IPAM.IPNode for IP nodes whose LastSync timestamp advanced past a persistent watermark.
LastSync records when IPAM last re-scanned the node and is the closest available proxy for IP
status changes — Orion does not expose a dedicated status-change timestamp.
On each evaluation cycle the trigger:
- Reads the stored watermark from Kestra's namespace KV store (key
{flowId}: : {triggerId}: : ipalloc_watermark). - Uses
max(now - lookbackSeconds, storedWatermark)as the lower bound of the SWQL query so that rows already fired in a previous cycle are not re-fired. - Returns the oldest matching row (ORDER BY LastSync ASC) and immediately advances the watermark to that
row's
LastSyncvalue, so the next poll starts just after it. - Remaining rows in the same window surface on subsequent polls — one execution per cycle.
On the very first run (no prior watermark) the lookback window is used as lower bound, so the trigger does not flood executions with the entire historical table.
Adjust lookbackSeconds to tolerate clock skew between Kestra and Orion. The watermark is stored with no
TTL so it survives across flow deployments.
type: io.kestra.plugin.ee.solarwinds.ipam.IpAllocationTriggerExamples
Fire when any IP in subnet 42 changes status.
id: ip_allocation_watch
namespace: company.team
triggers:
- id: ip_watch
type: io.kestra.plugin.ee.solarwinds.ipam.IpAllocationTrigger
host: "{{ secret('SOLARWINDS_HOST') }}"
username: "{{ secret('SOLARWINDS_USER') }}"
password: "{{ secret('SOLARWINDS_PASSWORD') }}"
subnetId: 42
statusFilter: "Used"
interval: PT2M
tasks:
- id: log_allocation
type: io.kestra.plugin.core.log.Log
message: "IP {{ trigger.ipAddress }} is now {{ trigger.status }}"
Properties
host *Requiredstring
SolarWinds Orion host
password *Requiredstring
Password
username *Requiredstring
Username
allowConcurrent Non-dynamicboolean
falseSpecifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.
interval Non-dynamicstring
PT2MdurationPolling interval
How frequently to poll for IP status changes. ISO-8601 duration (e.g. PT2M).
lookbackSeconds integerstring
120Lookback seconds
Seconds subtracted from now to define the initial change-detection window when no watermark is
stored yet. On subsequent polls the watermark acts as the lower bound. Defaults to 120 (matching
the default interval). Increase to tolerate Orion clock skew or slow status propagation.
maxResults integerstring
1000Maximum results per poll
Caps the number of rows fetched from IPAM per evaluation cycle. Defaults to 1000.
port integerstring
17778SWIS port
Defaults to 17778.
statusFilter string
Status filter
Only return nodes with this status (e.g. Used, Available, Reserved).
stopAfter Non-dynamicarray
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTEDList of execution states after which a trigger should be stopped (a.k.a. disabled).
subnetId integerstring
Subnet ID filter
Restricts polling to IP nodes in this subnet.
verifySsl booleanstring
trueVerify SSL certificate
When false, disables TLS certificate verification. Useful when Orion uses a self-signed certificate.
Defaults to true (secure).
when string
trueA condition that determines whether the trigger should run.
A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.
Outputs
dnsBackward string
DNS hostname associated with the IP
ipAddress string
IP address
ipNodeId integer
IP node ID
status string
Current status of the IP node
subnetId integer
Subnet ID the IP belongs to