# Include{groups}
portals:
  open:
    protocols:
      - "$kubernetes-resource_configmap_portal_protocol"
    host:
      - "$kubernetes-resource_configmap_portal_host"
    ports:
      - "$kubernetes-resource_configmap_portal_port"
questions:
  - variable: portal
    group: "Container Image"
    label: "Configure Portal Button"
    schema:
      type: dict
      hidden: true
      attrs:
        - variable: enabled
          label: "Enable"
          description: "enable the portal button"
          schema:
            hidden: true
            editable: false
            type: boolean
            default: true

  - variable: image
    group: "Container Image"
    label: "Container"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: repository
          label: "Container Repository"
          schema:
            type: string
            default: "ghcr.io/k8s-at-home/jackett"
            required: true
        - variable: tag
          label: "Container Tag"
          schema:
            type: string
            default: "v0.18.616"
            required: true
        - variable: pullPolicy
          label: "Container Pullpolicy"
          schema:
            type: string
            default: "IfNotPresent"
            enum:
              - value: "IfNotPresent"
                description: "IfNotPresent"
              - value: "Always"
                description: "Always"
              - value: "Never"
                description: "Never"

# Include{global}
  - variable: controller
    group: "Controller"
    label: ""
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: advanced
          label: "Show Advanced Controller Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: type
                description: "Please specify type of workload to deploy"
                label: "(Advanced) Controller Type"
                schema:
                  type: string
                  default: "deployment"
                  required: true
                  enum:
                    - value: "deployment"
                      description: "Deployment"
                    - value: "statefulset"
                      description: "Statefulset"
                    - value: "daemonset"
                      description: "Daemonset"
              - variable: replicas
                description: "Number of desired pod replicas"
                label: "Desired Replicas"
                schema:
                  type: int
                  default: 1
                  required: true
              - variable: strategy
                description: "Please specify type of workload to deploy"
                label: "(Advanced) Update Strategy"
                schema:
                  type: string
                  default: "Recreate"
                  required: true
                  enum:
                    - value: "Recreate"
                      description: "Recreate: Kill existing pods before creating new ones"
                    - value: "RollingUpdate"
                      description: "RollingUpdate: Create new pods and then kill old ones"
                    - value: "OnDelete"
                      description: "(Legacy) OnDelete: ignore .spec.template changes"
# Include{controllerExpertCommand}
# Include{controllerExpert}

# Include{containerConfig}

  - variable: probes
    group: "Container Configuration"
    label: "Healthcheck Probes"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: liveness
          label: "Liveness"
          description: "Liveness Probe"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "Enable Probe"
                description: "Enables the probe"
                schema:
                  type: boolean
                  default: true
                  show_subquestions_if: true
                  subquestions:
                    - variable: type
                      label: "Probe Type"
                      description: "Probe Type"
                      schema:
                        type: string
                        default: "TCP"
                        enum:
                          - value: "TCP"
                            description: "TCP"
                          - value: "HTTP"
                            description: "HTTP"
                          - value: "HTTPS"
                            description: "HTTPS"
                    - variable: path
                      label: "Probe Path"
                      description: "Probe Path"
                      schema:
                        type: string
                        default: "/"
        - variable: readiness
          label: "Readiness"
          description: "Readiness Probe"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "Enable Probe"
                description: "Enables the probe"
                schema:
                  type: boolean
                  default: true
                  show_subquestions_if: true
                  subquestions:
                    - variable: type
                      label: "Probe Type"
                      description: "Probe Type"
                      schema:
                        type: string
                        default: "TCP"
                        enum:
                          - value: "TCP"
                            description: "TCP"
                          - value: "HTTP"
                            description: "HTTP"
                          - value: "HTTPS"
                            description: "HTTPS"
                    - variable: path
                      label: "Probe Path"
                      description: "Probe Path"
                      schema:
                        type: string
                        default: "/"
        - variable: startup
          label: "Startup"
          description: "Startup Probe"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: enabled
                label: "Enable Probe"
                description: "Enables the probe"
                schema:
                  type: boolean
                  default: true
                  show_subquestions_if: true
                  subquestions:
                    - variable: type
                      label: "Probe Type"
                      description: "Probe Type"
                      schema:
                        type: string
                        default: "TCP"
                        enum:
                          - value: "TCP"
                            description: "TCP"
                          - value: "HTTP"
                            description: "HTTP"
                          - value: "HTTPS"
                            description: "HTTPS"
                    - variable: path
                      label: "Probe Path"
                      description: "Probe Path"
                      schema:
                        type: string
                        default: "/"

  - variable: service
    group: "Networking and Services"
    label: "Configure Service(s)"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: main
          label: "Main Service"
          description: "The Primary service on which the healthcheck runs, often the webUI"
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{serviceSelector}
                    - variable: main
                      label: "Main Service Port Configuration"
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: enabled
                            label: "Enable the port"
                            schema:
                              type: boolean
                              default: true
                              hidden: true
                          - variable: protocol
                            label: "Port Type"
                            schema:
                              type: string
                              default: "HTTP"
                              enum:
                                - value: HTTP
                                  description: "HTTP"
                                - value: "HTTPS"
                                  description: "HTTPS"
                                - value: TCP
                                  description: "TCP"
                                - value: "UDP"
                                  description: "UDP"
                          - variable: targetPort
                            label: "Target Port"
                            description: "This port exposes the container port on the service"
                            schema:
                              type: int
                              required: true
                          - variable: port
                            label: "Port"
                            description: "This port exposes the container port on the service"
                            schema:
                              type: int
                              required: true

              - variable: portsList
                label: "Additional Service Ports"
                schema:
                  type: list
                  default: []
                  items:
                    - variable: portsListEntry
                      label: "Custom ports"
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: enabled
                            label: "Enable the port"
                            schema:
                              type: boolean
                              default: true
                              hidden: true
                          - variable: name
                            label: "Port Name"
                            schema:
                              type: string
                              default: ""
                          - variable: protocol
                            label: "Port Type"
                            schema:
                              type: string
                              default: "TCP"
                              enum:
                                - value: HTTP
                                  description: "HTTP"
                                - value: "HTTPS"
                                  description: "HTTPS"
                                - value: TCP
                                  description: "TCP"
                                - value: "UDP"
                                  description: "UDP"
                          - variable: targetPort
                            label: "Target Port"
                            description: "This port exposes the container port on the service"
                            schema:
                              type: int
                              required: true
                          - variable: port
                            label: "Port"
                            description: "This port exposes the container port on the service"
                            schema:
                              type: int
                              required: true


  - variable: serviceexpert
    group: "Networking and Services"
    label: "Show Expert Config"
    schema:
      type: boolean
      default: false
      show_subquestions_if: true
      subquestions:
        - variable: hostNetwork
          group: "Networking and Services"
          label: "Host-Networking (Complicated)"
          schema:
            type: boolean
            default: false

# Include{serviceExpert}

# Include{serviceList}

# Include{persistenceList}

  - variable: ingress
    label: ""
    group: "Ingress"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: main
          label: "Main Ingress"
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{ingressDefault}

# Include{ingressTLS}

# Include{ingressTraefik}

# Include{ingressExpert}

# Include{ingressList}

# Include{security}

  - variable: advancedSecurity
    label: "Show Advanced Security Settings"
    group: "Security and Permissions"
    schema:
      type: boolean
      default: false
      show_subquestions_if: true
      subquestions:
        - variable: securityContext
          label: "Security Context"
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: privileged
                label: "Privileged mode"
                schema:
                  type: boolean
                  default: false
              - variable: readOnlyRootFilesystem
                label: "ReadOnly Root Filesystem"
                schema:
                  type: boolean
                  default: false
              - variable: allowPrivilegeEscalation
                label: "Allow Privilege Escalation"
                schema:
                  type: boolean
                  default: false
              - variable: runAsNonRoot
                label: "runAsNonRoot"
                schema:
                  type: boolean
                  default: true
# Include{securityContextAdvanced}

  - variable: podSecurityContext
    group: "Security and Permissions"
    label: "Pod Security Context"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: runAsUser
          label: "runAsUser"
          description: "The UserID of the user running the application"
          schema:
            type: int
            default: 568
        - variable: runAsGroup
          label: "runAsGroup"
          description: "The groupID this App of the user running the application"
          schema:
            type: int
            default: 568
        - variable: fsGroup
          label: "fsGroup"
          description: "The group that should own ALL storage."
          schema:
            type: int
            default: 568
# Include{podSecurityContextAdvanced}


# Include{resources}

# Include{advanced}

# Include{addons}
