graph TD

    %%Definitions
        Start["Network/Deployment Validation Failure"]

        DecisionReserved@{ shape: hex, label: "Validation: RANGES_NOT_RESERVED?"}
        DecisionExhausted@{ shape: hex, label: "Validation: RANGES_EXHAUSTED?"}
        DecisionSharedVPC@{ shape: hex, label: "Using Shared VPC?"}

        SolutionReserve["Reserve IP ranges"]
        SolutionExpand["Expand range allocation"]
        SolutionP4SA["Enable Looker service account & grant compute.globalAddresses.get"]
        SolutionResumed["Provisioning resumed"]
        SolutionSupport["Contact Support"]

    %% Edges
        Start --- DecisionReserved
        DecisionReserved -- Yes --- SolutionReserve
        SolutionReserve --- SolutionResumed

        DecisionReserved -- No --- DecisionExhausted
        DecisionExhausted -- Yes --- SolutionExpand
        SolutionExpand --- SolutionResumed

        DecisionExhausted -- No --- DecisionSharedVPC
        DecisionSharedVPC -- Yes --- SolutionP4SA
        SolutionP4SA --- SolutionResumed

        DecisionSharedVPC -- No --- SolutionSupport

    %%Style definitions
        classDef start fill:#ECECFF,stroke:#000,stroke-width:3px,font-weight:bold;
        class Start start

        classDef decision fill:#FCE0E0,stroke:#000,stroke-width:2px,font-weight:normal;
        class DecisionReserved,DecisionExhausted,DecisionSharedVPC decision

        classDef solution fill:#FEF6E0,stroke:#000,stroke-width:2px,font-weight:normal;
        class SolutionReserve,SolutionExpand,SolutionP4SA,SolutionResumed,SolutionSupport solution

        click SolutionP4SA href "/looker/docs/looker-core-create-private-ip#shared-vpc"
        click SolutionSupport href "/looker/docs/looker-core-support"