@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 - dbmulticloud/DbmulticloudOracleDbAzureVaults
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\nDbmulticloudOracleDbAzureVaults\nreconcile
Controller -> BaseReconciler: Reconcile(request)
BaseReconciler -> ServiceManager: reconcile desired\nDbmulticloudOracleDbAzureVaults
group Lookup and bind
alt tracked or explicit OCI identity already exists
ServiceManager -> OCI: GetDbmulticloudOracleDbAzureVaults
else tracked identity is missing
ServiceManager -> OCI: ListDbmulticloudOracleDbAzureVaults(filters:\ncompartment_id, state)
alt reusable OCI resource is not found
ServiceManager -> OCI: CreateDbmulticloudOracleDbAzureVaults
loop create pending PROVISIONING
ServiceManager -> OCI: GetDbmulticloudOracleDbAzureVaults
end
else reusable OCI resource already exists
ServiceManager -> OCI: GetDbmulticloudOracleDbAzureVaults
end
ServiceManager --> BaseReconciler: persist resolved OCI identity in status
end
alt delete requested
group Delete
ServiceManager -> OCI: DeleteDbmulticloudOracleDbAzureVaults
ServiceManager -> OCI: confirm delete via\nGetDbmulticloudOracleDbAzureVaults\nor\nListDbmulticloudOracleDbAzureVaults
loop delete pending DELETING
ServiceManager -> OCI: GetDbmulticloudOracleDbAzureVaults\nor\nListDbmulticloudOracleDbAzureVaults
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\nUpdateDbmulticloudOracleDbAzureVaults\nonly for mutable fields display_name
loop update pending UPDATING
ServiceManager -> OCI: GetDbmulticloudOracleDbAzureVaults
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: dbmulticloud
slug: dbmulticloudoracledbazurevaults
kind: DbmulticloudOracleDbAzureVaults
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_dbmulticloud_dbmulticloudoracledbazurevaults
filters compartment_id, state
conflicts: none
open gaps: none
Scaffold metadata only; replace with
controller-specific runtime states before
promotion.
end note
@enduml
