Skip to content

Sequence

Webhooks

sequenceDiagram
    participant User
    participant Kubernetes
    participant Melete
    autonumber

    User ->> Kubernetes: Create Odyssey
    Kubernetes ->> Melete: Webhooks
    opt odysseyInstanceReferences not present
        Note over Melete: Add master and replica references
    end
    opt postgresEndpointReference not present
        Melete ->> Kubernetes: Get default PostgresEndpoint
        critical
            Kubernetes ->> Melete: Not found
            Melete ->> Kubernetes: Error
            Kubernetes ->> User: Error
        end
        Kubernetes ->> Melete: PostgresEndpoint
        Note over Melete: Add default postgres endpoint reference
    end
    Melete ->> Kubernetes: Ok
    Kubernetes ->> User: Ok

Odyssey Controller

sequenceDiagram
    participant Kubernetes
    participant Melete
    participant Postgres
    autonumber

    Kubernetes ->> Melete: Odyssey
    opt password not present
        Note over Melete: Generate password
        Melete ->> Kubernetes: Update Odyssey
        critical
            Kubernetes ->> Melete: Error
            Melete ->> Kubernetes: Retry after 30 seconds
        end
    end
    Melete ->> Kubernetes: Get PostgresEndpoint
    critical
        Kubernetes ->> Melete: Error
        Melete ->> Kubernetes: Retry after 30 seconds
    end
    Melete ->> Postgres: Create or update user and database
    critical
        Postgres ->> Melete: Error
        Melete ->> Kubernetes: Retry after 30 seconds
    end
    loop Each odyssey instance reference
        alt Replica found in PostgresEndpoint
            Note over Melete: Add database to new or existing OdysseyInstance
            Melete ->> Kubernetes: Create or update OdysseyInstance
            critical
                Kubernetes ->> Melete: Error
                Melete ->> Kubernetes: Retry after 30 seconds
            end
            Note over Melete, Kubernetes: Create or update<br/>Deployment and Secret<br/>in OdysseyInstance controller
        else Replica not found in PostgresEndpoint
            Note over Melete: Skip reference
        end
    end
    Melete ->> Kubernetes: Create or update Secret
    critical
        Kubernetes ->> Melete: Error
        Melete ->> Kubernetes: Retry after 30 seconds
    end