diff --git a/.changelog/19903.txt b/.changelog/19903.txt new file mode 100644 index 000000000..036c89b1b --- /dev/null +++ b/.changelog/19903.txt @@ -0,0 +1,3 @@ +```release-note:improvement +api: emit `JobDeregistered` event when job is deregistered with `purge` +``` diff --git a/nomad/state/events.go b/nomad/state/events.go index 798d1ec48..c338133c4 100644 --- a/nomad/state/events.go +++ b/nomad/state/events.go @@ -125,6 +125,19 @@ func eventFromChange(change memdb.Change) (structs.Event, bool) { ACLBindingRule: before, }, }, true + case "jobs": + before, ok := change.Before.(*structs.Job) + if !ok { + return structs.Event{}, false + } + return structs.Event{ + Topic: structs.TopicJob, + Key: before.ID, + Namespace: before.Namespace, + Payload: &structs.JobEvent{ + Job: before, + }, + }, true case "nodes": before, ok := change.Before.(*structs.Node) if !ok { diff --git a/nomad/state/events_test.go b/nomad/state/events_test.go index e7ce6b1ce..8e15e27fb 100644 --- a/nomad/state/events_test.go +++ b/nomad/state/events_test.go @@ -726,7 +726,7 @@ func TestEventsFromChanges_WithDeletion(t *testing.T) { event := eventsFromChanges(nil, changes) require.NotNil(t, event) - require.Len(t, event.Events, 1) + require.Len(t, event.Events, 2) } func TestEventsFromChanges_WithNodeDeregistration(t *testing.T) {