package merrors import "strings" // Reasons for organization provisioning outcomes. They travel to callers in // gRPC error details so every outcome stays distinguishable regardless of the // status code it shares with others. const ( ReasonOrganizationProvisioningInProgress = "organization.provisioning_in_progress" ReasonOrganizationAlreadyActive = "organization.already_active" ReasonOrganizationProvisioningBlocked = "organization.provisioning_blocked" ReasonOrganizationOwnerMismatch = "organization.owner_mismatch" ReasonOrganizationNotOperatorProvisioned = "organization.not_operator_provisioned" ) // ErrOrganizationProvisioningInProgress means another attempt currently holds // the provisioning lease of the organization. var ErrOrganizationProvisioningInProgress = Define(ReasonOrganizationProvisioningInProgress) // ErrOrganizationAlreadyActive means the organization finished provisioning already. var ErrOrganizationAlreadyActive = Define(ReasonOrganizationAlreadyActive) // ErrOrganizationProvisioningBlocked means a failed signup compensated the // organization and it requires manual recovery before it can be activated. var ErrOrganizationProvisioningBlocked = Define(ReasonOrganizationProvisioningBlocked) // ErrOrganizationOwnerMismatch means the organization is being provisioned for // a different account than the one supplied. var ErrOrganizationOwnerMismatch = Define(ReasonOrganizationOwnerMismatch) // ErrOrganizationNotOperatorProvisioned means the organization was created through signup: // organizations created through general signup are never finished by someone in backoffice. var ErrOrganizationNotOperatorProvisioned = Define(ReasonOrganizationNotOperatorProvisioned) func OrganizationProvisioningInProgress(msg string) error { return organizationError(ErrOrganizationProvisioningInProgress, ReasonOrganizationProvisioningInProgress, msg) } func OrganizationAlreadyActive(msg string) error { return organizationError(ErrOrganizationAlreadyActive, ReasonOrganizationAlreadyActive, msg) } func OrganizationProvisioningBlocked(msg string) error { return organizationError(ErrOrganizationProvisioningBlocked, ReasonOrganizationProvisioningBlocked, msg) } func OrganizationOwnerMismatch(msg string) error { return organizationError(ErrOrganizationOwnerMismatch, ReasonOrganizationOwnerMismatch, msg) } func OrganizationNotOperatorProvisioned(msg string) error { return organizationError(ErrOrganizationNotOperatorProvisioned, ReasonOrganizationNotOperatorProvisioned, msg) } func organizationError(code error, reason, msg string) error { msg = strings.TrimSpace(msg) if msg == "" && code != nil { msg = code.Error() } return classifiedError{ base: ErrDataConflict, code: code, msg: msg, reason: reason, } }