PhalanxConfig#

pydantic model phalanx.models.environments.PhalanxConfig#

Root container for the entire Phalanx configuration.

Parameters:

data (Any) –

Show JSON schema
{
   "title": "PhalanxConfig",
   "description": "Root container for the entire Phalanx configuration.",
   "type": "object",
   "properties": {
      "environments": {
         "title": "Environments",
         "type": "array",
         "items": {
            "$ref": "#/definitions/EnvironmentDetails"
         }
      },
      "applications": {
         "title": "Applications",
         "type": "array",
         "items": {
            "$ref": "#/definitions/Application"
         }
      }
   },
   "required": [
      "environments",
      "applications"
   ],
   "definitions": {
      "DocLink": {
         "title": "DocLink",
         "description": "A documentation link for an application.\n\nThis represents an individual array item in the ``phalanx.lsst.io/docs``\nHelm chart annotation in :file:`Chart.yaml`.",
         "type": "object",
         "properties": {
            "url": {
               "title": "Url",
               "type": "string"
            },
            "title": {
               "title": "Title",
               "type": "string"
            },
            "id": {
               "title": "Id",
               "type": "string"
            }
         },
         "required": [
            "url",
            "title"
         ]
      },
      "ConditionalSecretCopyRules": {
         "title": "ConditionalSecretCopyRules",
         "description": "Possibly conditional rules for copying a secret value from another.",
         "type": "object",
         "properties": {
            "if": {
               "title": "Condition",
               "description": "Configuration only applies if this Helm chart setting is set to a true value",
               "type": "string"
            },
            "application": {
               "title": "Application",
               "type": "string"
            },
            "key": {
               "title": "Key",
               "type": "string"
            }
         },
         "required": [
            "application",
            "key"
         ],
         "additionalProperties": false
      },
      "ConditionalSimpleSecretGenerateRules": {
         "title": "ConditionalSimpleSecretGenerateRules",
         "description": "Conditional rules for generating a secret value with no source.",
         "type": "object",
         "properties": {
            "if": {
               "title": "Condition",
               "description": "Configuration only applies if this Helm chart setting is set to a true value",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "enum": [
                  "password",
                  "gafaelfawr-token",
                  "fernet-key",
                  "rsa-private-key"
               ],
               "type": "string"
            }
         },
         "required": [
            "type"
         ],
         "additionalProperties": false
      },
      "ConditionalSourceSecretGenerateRules": {
         "title": "ConditionalSourceSecretGenerateRules",
         "description": "Conditional rules for generating a secret from another secret.",
         "type": "object",
         "properties": {
            "if": {
               "title": "Condition",
               "description": "Configuration only applies if this Helm chart setting is set to a true value",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "enum": [
                  "bcrypt-password-hash",
                  "mtime"
               ],
               "type": "string"
            },
            "source": {
               "title": "Source",
               "type": "string"
            }
         },
         "required": [
            "type",
            "source"
         ]
      },
      "ConditionalSecretConfig": {
         "title": "ConditionalSecretConfig",
         "description": "Possibly conditional specification for an application secret.",
         "type": "object",
         "properties": {
            "if": {
               "title": "Condition",
               "description": "Configuration only applies if this Helm chart setting is set to a true value",
               "type": "string"
            },
            "description": {
               "title": "Description",
               "type": "string"
            },
            "copy": {
               "title": "Copy",
               "description": "Rules for where the secret should be copied from",
               "allOf": [
                  {
                     "$ref": "#/definitions/ConditionalSecretCopyRules"
                  }
               ]
            },
            "generate": {
               "title": "Generate",
               "anyOf": [
                  {
                     "$ref": "#/definitions/ConditionalSimpleSecretGenerateRules"
                  },
                  {
                     "$ref": "#/definitions/ConditionalSourceSecretGenerateRules"
                  }
               ]
            },
            "value": {
               "title": "Value",
               "type": "string",
               "writeOnly": true,
               "format": "password"
            }
         },
         "required": [
            "description"
         ],
         "additionalProperties": false
      },
      "Application": {
         "title": "Application",
         "description": "A Phalanx application that knows which environments use it.",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "type": "string"
            },
            "namespace": {
               "title": "Namespace",
               "type": "string"
            },
            "chart": {
               "title": "Chart",
               "type": "object"
            },
            "doc_links": {
               "title": "Doc Links",
               "type": "array",
               "items": {
                  "$ref": "#/definitions/DocLink"
               }
            },
            "values": {
               "title": "Values",
               "type": "object"
            },
            "environment_values": {
               "title": "Environment Values",
               "type": "object",
               "additionalProperties": {
                  "type": "object"
               }
            },
            "secrets": {
               "title": "Secrets",
               "type": "object",
               "additionalProperties": {
                  "$ref": "#/definitions/ConditionalSecretConfig"
               }
            },
            "environment_secrets": {
               "title": "Environment Secrets",
               "type": "object",
               "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {
                     "$ref": "#/definitions/ConditionalSecretConfig"
                  }
               }
            },
            "active_environments": {
               "title": "Active Environments",
               "type": "array",
               "items": {
                  "type": "string"
               }
            }
         },
         "required": [
            "name",
            "namespace",
            "chart",
            "doc_links",
            "values",
            "environment_values",
            "secrets",
            "environment_secrets",
            "active_environments"
         ]
      },
      "IdentityProvider": {
         "title": "IdentityProvider",
         "description": "Type of identity provider used by Gafaelfawr.",
         "enum": [
            "CILogon",
            "GitHub",
            "OpenID Connect"
         ]
      },
      "GafaelfawrGitHubTeam": {
         "title": "GafaelfawrGitHubTeam",
         "description": "Designates a GitHub team for use as a Gafaelfawr group.",
         "type": "object",
         "properties": {
            "organization": {
               "title": "Organization",
               "type": "string"
            },
            "team": {
               "title": "Team",
               "type": "string"
            }
         },
         "required": [
            "organization",
            "team"
         ]
      },
      "GafaelfawrGitHubGroup": {
         "title": "GafaelfawrGitHubGroup",
         "description": "A group based on a GitHub team.",
         "type": "object",
         "properties": {
            "github": {
               "$ref": "#/definitions/GafaelfawrGitHubTeam"
            }
         },
         "required": [
            "github"
         ]
      },
      "GafaelfawrScope": {
         "title": "GafaelfawrScope",
         "description": "A Gafaelfawr scope and its associated groups.",
         "type": "object",
         "properties": {
            "scope": {
               "title": "Scope",
               "type": "string"
            },
            "groups": {
               "title": "Groups",
               "type": "array",
               "items": {
                  "anyOf": [
                     {
                        "type": "string"
                     },
                     {
                        "$ref": "#/definitions/GafaelfawrGitHubGroup"
                     }
                  ]
               }
            }
         },
         "required": [
            "scope",
            "groups"
         ]
      },
      "EnvironmentDetails": {
         "title": "EnvironmentDetails",
         "description": "Full details about an environment, including auth and Argo CD.\n\nUsed primarily for documentation generation, which needs details from the\nArgo CD and Gafaelfawr configurations for that environment.  Use\n`EnvironmentConfig` instead when only the basic environment configuration\nis needed.",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "type": "string"
            },
            "fqdn": {
               "title": "Fqdn",
               "type": "string"
            },
            "applications": {
               "title": "Applications",
               "description": "List of enabled applications",
               "default": [],
               "type": "array",
               "items": {
                  "$ref": "#/definitions/Application"
               }
            },
            "argocd_url": {
               "title": "Argocd Url",
               "type": "string"
            },
            "argocd_rbac": {
               "title": "Argocd Rbac",
               "type": "array",
               "items": {
                  "type": "array",
                  "items": {
                     "type": "string"
                  }
               }
            },
            "identity_provider": {
               "$ref": "#/definitions/IdentityProvider"
            },
            "gafaelfawr_scopes": {
               "title": "Gafaelfawr Scopes",
               "type": "array",
               "items": {
                  "$ref": "#/definitions/GafaelfawrScope"
               }
            }
         },
         "required": [
            "name",
            "fqdn",
            "argocd_rbac",
            "identity_provider",
            "gafaelfawr_scopes"
         ]
      }
   }
}

Fields:
field applications: list[Application] [Required]#

All Phalanx applications enabled for any environment.

field environments: list[EnvironmentDetails] [Required]#

Phalanx environments.