5.5. AMQP Message Bus Conventions

At the top level, we utilize 9 exchanges for passing various messages between key services and processes:

5.5.1. Configuration

RPC channel for making dynamic system configuration changes

Routing keys:

methods.set
methods.get

5.5.2. Events

One to many broadcast of events applicable to workflows and reactions (where poller/telemetry events will be placed in the future as well)

Routing keys:

tftp.success.[nodeid]
tftp.failure.[nodeid]
http.response.[nodeid]
dhcp.bind.success.[nodeid]
task.finished.[taskid]
graph.started.[graphid]
graph.finished.[graphid]
sku.assigned.[nodeid]

5.5.3. HTTP

Routing keys:

http.response

(uncertain - duplicate of http.response.[nodeid]?)

5.5.4. DHCP

RPC channel for interrogating the DHCP service

Routing keys:

methods.lookupIpLease
methods.ipInRange
methods.peekLeaseTable
methods.removeLease
methods.removeLeaseByIp
methods.pinMac
methods.unpinMac
methods.pinIp
methods.unpinIp

5.5.5. TFTP

(nothing defined)

5.5.6. Logging

Routing keys:

emerg
alert
error
warning
notice
info
debug
silly

5.5.7. task-graph-runner

RPC mechanism for communicating with process running workflows

Routing keys:

methods.getTaskGraphLibrary
methods.getTaskLibrary
methods.getActiveTaskGraph
methods.getActiveTaskGraphs
methods.defineTaskGraph
methods.defineTask
methods.runTaskGraph
methods.cancelTaskGraph
methods.pauseTaskGraph
methods.resumeTaskGraph
methods.getTaskGraphProperties

5.5.8. Scheduler

RPC mechanism for scheduling tasks within a workflow to run

schedule

5.5.9. Task

RPC mechanism for tasks to interrogate or interact with workflows (task-graphs)

run.[taskid]
cancel.[taskid]
methods.requestProfile.[id] (right now, nodeId)
methods.requestProperties.[id] (right now, nodeId)
methods.requestCommands.[id] (right now, nodeId)
methods.respondCommands.[id] (right now, nodeId)
methods.getBootProfile.[nodeid]
methods.activeTaskExists.[nodeId]
methods.requestPollerCache
ipmi.command.[command].[graphid] (right now, command is 'power', 'sel' or 'sdr')
ipmi.command.[command].result.[graphid] (right now, command is 'power', 'sel' or 'sdr')
run.snmp.command.[graphid]
snmp.command.result.[graphid]
poller.alert.[graphid]