Implement OCI Notifications (ONS) against the existing portable notification driver.
Part of #376.
Scope
Topics (create/get/list/update/delete), subscriptions (create/get/list/update/delete, confirm, unsubscribe) and publishing a message to a topic.
Design notes
ONS is the closest 1:1 with SNS of any provider, so the portable Notification driver should fit with little strain — the interest is in getting the OCI wire shapes right rather than in mapping.
Two OCI specifics: the control plane and data plane sit under different API prefixes (topics and subscriptions vs PublishMessage on the topic's endpoint), and a subscription starts PENDING until confirmed, with a confirmation token — unlike an SNS subscription that can be auto-confirmed.
Topic delete is asynchronous and returns a work request.
Acceptance
- Implements
driver.Notification; OCI-only behaviour via a consumer-side Extras interface
- Compartment recorded at create; every list requires
compartmentId
- Subscription lifecycle models PENDING → ACTIVE via confirmation
go build ./..., go test ./..., go test -race and golangci-lint clean
go generate ./... run and docs/coverage/ committed
Implement OCI Notifications (ONS) against the existing portable
notificationdriver.Part of #376.
Scope
Topics (create/get/list/update/delete), subscriptions (create/get/list/update/delete, confirm, unsubscribe) and publishing a message to a topic.
Design notes
ONS is the closest 1:1 with SNS of any provider, so the portable
Notificationdriver should fit with little strain — the interest is in getting the OCI wire shapes right rather than in mapping.Two OCI specifics: the control plane and data plane sit under different API prefixes (topics and subscriptions vs
PublishMessageon the topic's endpoint), and a subscription startsPENDINGuntil confirmed, with a confirmation token — unlike an SNS subscription that can be auto-confirmed.Topic delete is asynchronous and returns a work request.
Acceptance
driver.Notification; OCI-only behaviour via a consumer-sideExtrasinterfacecompartmentIdgo build ./...,go test ./...,go test -raceandgolangci-lintcleango generate ./...run anddocs/coverage/committed