@startuml
skinparam shadowing false
skinparam backgroundColor #fcfcfd
skinparam defaultFontName Helvetica
skinparam defaultFontSize 14
skinparam arrowColor #0f172a
skinparam noteBackgroundColor #fff7d6
skinparam noteBorderColor #b45309
skinparam noteFontColor #334155
skinparam roundcorner 16
title Sequence - jms/JmsFleetErrors
hide footbox
skinparam sequence {
  actorBorderColor #0f172a
  actorBackgroundColor #e2e8f0
  participantBorderColor #0f172a
  participantBackgroundColor #e2e8f0
  participantFontColor #0f172a
  lifeLineBorderColor #94a3b8
  groupBorderColor #cbd5e1
  groupBackgroundColor #f8fafc
}
actor Kubernetes
participant Controller
participant BaseReconciler
participant "OSOKServiceManager" as ServiceManager
participant OCI
note over BaseReconciler,ServiceManager
shared resolution:
shared/diagrams/shared-resolution-sequence.svg
shared delete:
shared/diagrams/shared-delete-sequence.svg
end note
Kubernetes -> Controller: enqueue JmsFleetErrors reconcile
Controller -> BaseReconciler: Reconcile(request)
BaseReconciler -> ServiceManager: reconcile desired JmsFleetErrors
group Lookup and bind
alt tracked or explicit OCI identity already exists
ServiceManager -> OCI: GetJmsFleetErrors
else tracked identity is missing
ServiceManager -> OCI: ListJmsFleetErrors(filters:\ncompartment_id, state)
alt reusable OCI resource is not found
ServiceManager -> OCI: CreateJmsFleetErrors
loop create pending PROVISIONING
ServiceManager -> OCI: GetJmsFleetErrors
end
else reusable OCI resource already exists
ServiceManager -> OCI: GetJmsFleetErrors
end
ServiceManager --> BaseReconciler: persist resolved OCI identity in status
end
alt delete requested
group Delete
ServiceManager -> OCI: DeleteJmsFleetErrors
ServiceManager -> OCI: confirm delete via GetJmsFleetErrors\nor ListJmsFleetErrors
loop delete pending DELETING
ServiceManager -> OCI: GetJmsFleetErrors or\nListJmsFleetErrors
end
alt cleanup or finalizer release is blocked
ServiceManager --> BaseReconciler: retain delete state and retry
else delete completion observed
ServiceManager --> BaseReconciler: release finalizer after delete completion
end
end
else OCI state is retryable
ServiceManager --> BaseReconciler: requeue while OCI remains in\nPROVISIONING, UPDATING, DELETING
else live state requires field-aware\ndrift evaluation
group Drift handling
note over ServiceManager,OCI
Supported update surface: display_name
Reject before mutate: force-new fields
compartment_id
Lookup filters: compartment_id, state
end note
opt force-new or conflicting drift is detected
ServiceManager --> BaseReconciler: reject before OCI mutation
end
opt supported mutable drift is detected
ServiceManager -> OCI: Apply UpdateJmsFleetErrors only for\nmutable fields display_name
loop update pending UPDATING
ServiceManager -> OCI: GetJmsFleetErrors
end
end
ServiceManager -> OCI: run helper hooks\ncreate=tfresource.CreateResource,\ntfresource.WaitForWorkRequestWithErrorHandling\nentity=template action=CREATED;\nupdate=tfresource.UpdateResource;\ndelete=tfresource.DeleteResource
end
ServiceManager --> BaseReconciler: status=required,\nfinalizer=retain-until-confirmed-delete
end
BaseReconciler --> Controller: requeue on provisioning, updating,\nterminating
note right of ServiceManager
shared diagram:
shared/diagrams/shared-resolution-sequence.svg
shared delete diagram:
shared/diagrams/shared-delete-sequence.svg
Start from the shared resolution sequence for
OCID binding, datasource pagination, and
create-or-update dispatch.
Layer the shared delete sequence when finalizer
retention, delete confirmation, work-request
polling, or Secret cleanup apply.
archetype batch: Generated service-manager
controllers follow the shared resolution and
delete sequences with imported waits and
controller-local policy.
service: jms
slug: jmsfleeterrors
kind: JmsFleetErrors
archetype: generated-service-manager
status/finalizer: required /
retain-until-confirmed-delete
requeue: provisioning, updating, terminating
provider states: create PROVISIONING; update
UPDATING; delete DELETING
supported drift: display_name
reject before mutate: force-new fields
compartment_id
list lookup: scaffold_jms_jmsfleeterrors filters
compartment_id, state
conflicts: none
open gaps: none
Scaffold metadata only; replace with
controller-specific runtime states before
promotion.
end note
@enduml
