# 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
# 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{controllerExpert}
  - variable: env
    group: "Container Configuration"
    label: "Image Environment"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        # General
        - variable: DASHDOT_WIDGET_LIST
          label: "DASHDOT_WIDGET_LIST"
          description: "Change the order of the elements in the list, to change the position on the page, or remove an item from the list, to remove it from the page. Storage Widget does not work correctly with ZFS"
          schema:
            type: string
            required: true
            default: "os,cpu,storage,ram,network"
        - variable: DASHDOT_ACCEPT_OOKLA_EULA
          label: "DASHDOT_ACCEPT_OOKLA_EULA"
          description: "Use the newer and more accurate speedtest tool from Ookla, instead of the old speedtest-cli for your speedtests."
          schema:
            type: boolean
            default: false
        - variable: DASHDOT_USE_IMPERIAL
          label: "DASHDOT_USE_IMPERIAL"
          description: "Shows any units in the imperial system, instead of the default metric."
          schema:
            type: boolean
            default: false
        - variable: DASHDOT_DISABLE_INTEGRATIONS
          label: "DASHDOT_DISABLE_INTEGRATIONS"
          description: "Disables support for integrations. This does two things: disable CORS and disable open API endpoints."
          schema:
            type: boolean
            default: false
        - variable: DASHDOT_ALWAYS_SHOW_PERCENTAGES
          label: "DASHDOT_ALWAYS_SHOW_PERCENTAGES"
          description: "To always show the current percentage of each graph in the top-left corner."
          schema:
            type: boolean
            default: false
        - variable: DASHDOT_FS_TYPE_FILTER
          label: "DASHDOT_FS_TYPE_FILTER"
          description: "If dash. detects network drives as internal drives, you can provide a list of ignored FS types here."
          schema:
            type: string
            default: "cifs,9p,fuse.rclone,fuse.mergerfs"
        - variable: DASHDOT_FS_VIRTUAL_MOUNTS
          label: "DASHDOT_FS_VIRTUAL_MOUNTS"
          description: "If you want to show a virtual mount in the storage split view, that is ignored in the filter above. Can be used for example to show fuse.mergerfs mounts, which is basically a grouping of other mounts."
          schema:
            type: string
            default: ""
        - variable: oswidgetsettings
          label: "OS Widget Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_SHOW_HOST
                label: "DASHDOT_SHOW_HOST"
                description: "If you want to show the host part in the server widget"
                schema:
                  type: boolean
                  default: false
              - variable: DASHDOT_OS_LABEL_LIST
                label: "DASHDOT_OS_LABEL_LIST"
                description: "Change the order of the labels in the list, to change the position in the widget, or remove an item from the list, to remove it from the widget"
                schema:
                  type: string
                  default: "os,arch,up_since"
              - variable: DASHDOT_OS_WIDGET_GROW
                label: "DASHDOT_OS_WIDGET_GROW"
                description: "To adjust the relative size of the OS widget"
                schema:
                  type: string
                  default: "1.5"
              - variable: DASHDOT_OS_WIDGET_MIN_WIDTH
                label: "DASHDOT_OS_WIDGET_MIN_WIDTH"
                description: "To adjust the minimum width of the OS widget (in px)"
                schema:
                  type: string
                  default: "300"
        - variable: cpuwidgetsettings
          label: "CPU Widget Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_ENABLE_CPU_TEMPS
                label: "DASHDOT_ENABLE_CPU_TEMPS"
                description: "If you want to show the CPU temperature in the graph."
                schema:
                  type: boolean
                  default: false
              - variable: DASHDOT_CPU_LABEL_LIST
                label: "DASHDOT_CPU_LABEL_LIST"
                description: "Change the order of the labels in the list, to change the position in the widget, or remove an item from the list, to remove it from the widget"
                schema:
                  type: string
                  default: "brand,model,cores,threads,frequency"
              - variable: DASHDOT_CPU_WIDGET_GROW
                label: "DASHDOT_CPU_WIDGET_GROW"
                description: "To adjust the relative size of the Processor widget"
                schema:
                  type: string
                  default: "4"
              - variable: DASHDOT_CPU_WIDGET_MIN_WIDTH
                label: "DASHDOT_CPU_WIDGET_MIN_WIDTH"
                description: "To adjust the minimum width of the Processor widget (in px)"
                schema:
                  type: string
                  default: "500"
              - variable: DASHDOT_CPU_DATAPOINTS
                label: "DASHDOT_CPU_DATAPOINTS"
                description: "To adjust the minimum width of the Processor widget (in px)"
                schema:
                  type: string
                  default: "20"
              - variable: DASHDOT_CPU_POLL_INTERVAL
                label: "DASHDOT_CPU_POLL_INTERVAL"
                description: "To adjust the minimum width of the Processor widget (in px)"
                schema:
                  type: string
                  default: "1000"
        - variable: storagewidgetsettings
          label: "Storage Widget Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_STORAGE_LABEL_LIST
                label: "DASHDOT_STORAGE_LABEL_LIST"
                description: "Change the order of the labels in the list, to change the position in the widget, or remove an item from the list, to remove it from the widget"
                schema:
                  type: string
                  default: "brand,size,type"
              - variable: DASHDOT_STORAGE_WIDGET_GROW
                label: "DASHDOT_STORAGE_WIDGET_GROW"
                description: "To adjust the relative size of the Storage widget"
                schema:
                  type: string
                  default: "3.5"
              - variable: DASHDOT_STORAGE_WIDGET_MIN_WIDTH
                label: "DASHDOT_STORAGE_WIDGET_MIN_WIDTH"
                description: "To adjust the minimum width of the Storage widget (in px)"
                schema:
                  type: string
                  default: "500"
              - variable: DASHDOT_STORAGE_POLL_INTERVAL
                label: "DASHDOT_STORAGE_POLL_INTERVAL"
                description: "Read the Storage load every x milliseconds"
                schema:
                  type: string
                  default: "60000"
              - variable: DASHDOT_ENABLE_STORAGE_SPLIT_VIEW
                label: "DASHDOT_ENABLE_STORAGE_SPLIT_VIEW"
                description: "Enable an optional split view for the storage widget."
                schema:
                  type: boolean
                  default: false
        - variable: ramwidgetsettings
          label: "RAM Widget Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_RAM_LABEL_LIST
                label: "DASHDOT_RAM_LABEL_LIST"
                description: "Change the order of the labels in the list, to change the position in the widget, or remove an item from the list, to remove it from the widget."
                schema:
                  type: string
                  default: "brand,size,type,frequency"
              - variable: DASHDOT_RAM_WIDGET_GROW
                label: "DASHDOT_RAM_WIDGET_GROW"
                description: "To adjust the relative size of the Memory widget"
                schema:
                  type: string
                  default: "4"
              - variable: DASHDOT_RAM_WIDGET_MIN_WIDTH
                label: "DASHDOT_RAM_WIDGET_MIN_WIDTH"
                description: "To adjust the minimum width of the Memory widget (in px)"
                schema:
                  type: string
                  default: "500"
              - variable: DASHDOT_RAM_DATAPOINTS
                label: "DASHDOT_RAM_DATAPOINTS"
                description: "The amount of datapoints in the Memory graph"
                schema:
                  type: string
                  default: "20"
              - variable: DASHDOT_RAM_POLL_INTERVAL
                label: "DASHDOT_RAM_POLL_INTERVAL"
                description: "Read the Memory load every x milliseconds"
                schema:
                  type: string
                  default: "1000"
        - variable: netwidgetsettings
          label: "Network Widget Settings"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_USE_NETWORK_INTERFACE
                label: "DASHDOT_USE_NETWORK_INTERFACE"
                description: "If dashdot detects the wrong gateway as your default interface, you can provide a name here that is used instead"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_SPEED_TEST_INTERVAL
                label: "DASHDOT_SPEED_TEST_INTERVAL"
                description: "At which interval the network speed-test should be rerun (in minutes)"
                schema:
                  type: string
                  default: "60"
              - variable: DASHDOT_NETWORK_LABEL_LIST
                label: "DASHDOT_NETWORK_LABEL_LIST"
                description: "Change the order of the labels in the list, to change the position in the widget, or remove an item from the list, to remove it from the widget"
                schema:
                  type: string
                  default: "type,speed_up,speed_down,interface_speed"
              - variable: DASHDOT_NETWORK_WIDGET_GROW
                label: "DASHDOT_NETWORK_WIDGET_GROW"
                description: "To adjust the relative size of the Network widget"
                schema:
                  type: string
                  default: "6"
              - variable: DASHDOT_NETWORK_WIDGET_MIN_WIDTH
                label: "DASHDOT_NETWORK_WIDGET_MIN_WIDTH"
                description: "To adjust the minimum width of the Network widget (in px)"
                schema:
                  type: string
                  default: "500"
              - variable: DASHDOT_NETWORK_DATAPOINTS
                label: "DASHDOT_NETWORK_DATAPOINTS"
                description: "The amount of datapoints in each of the Network graphs"
                schema:
                  type: string
                  default: "20"
              - variable: DASHDOT_NETWORK_POLL_INTERVAL
                label: "DASHDOT_NETWORK_POLL_INTERVAL"
                description: "Read the Network load every x milliseconds"
                schema:
                  type: string
                  default: "1000"
        - variable: overridesettings
          label: "Overrides"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
              - variable: DASHDOT_OVERRIDE_OS
                label: "DASHDOT_OVERRIDE_OS"
                description: "Override OS"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_ARCH
                label: "DASHDOT_OVERRIDE_ARCH"
                description: "Override ARCH"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_CPU_BRAND
                label: "DASHDOT_OVERRIDE_CPU_BRAND"
                description: "Override CPU BRAND"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_CPU_MODEL
                label: "DASHDOT_OVERRIDE_CPU_MODEL"
                description: "Override CPU MODEL"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_CPU_CORES
                label: "DASHDOT_OVERRIDE_CPU_CORES"
                description: "Override CPU CORES"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_CPU_THREADS
                label: "DASHDOT_OVERRIDE_CPU_THREADS"
                description: "Override CPU THREADS"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_CPU_FREQUENCY
                label: "DASHDOT_OVERRIDE_CPU_FREQUENCY"
                description: "Override CPU FREQUENCY. Number needs to be passed in GHz (e.g. 2.8)"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_RAM_BRAND
                label: "DASHDOT_OVERRIDE_RAM_BRAND"
                description: "Override RAM BRAND"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_RAM_SIZE
                label: "DASHDOT_OVERRIDE_RAM_SIZE"
                description: "Override RAM SIZE. Number needs to be passed in bytes (e.g. 34359738368 for 32 GB)"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_RAM_TYPE
                label: "DASHDOT_OVERRIDE_RAM_TYPE"
                description: "Override RAM TYPE"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_RAM_FREQUENCY
                label: "DASHDOT_OVERRIDE_RAM_FREQUENCY"
                description: "Override RAM FREQUENCY"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_NETWORK_SPEED_UP
                label: "DASHDOT_OVERRIDE_NETWORK_SPEED_UP"
                description: "Override NETWORK SPEED UP. Number needs to be passed in bit (e.g. 100000000 for 100 Mb/s"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_NETWORK_SPEED_DOWN
                label: "DASHDOT_OVERRIDE_NETWORK_SPEED_DOWN"
                description: "Override NETWORK SPEED DOWN. Number needs to be passed in bit (e.g. 100000000 for 100 Mb/s)"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_NETWORK_INTERFACE_SPEED
                label: "DASHDOT_OVERRIDE_NETWORK_INTERFACE_SPEED"
                description: "Override NETWORK INTERFACE SPEED. Number needs to be passed in Megabit (e.g. 10000 for 10 GB/s)"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_NETWORK_PUBLIC_IP
                label: "DASHDOT_OVERRIDE_NETWORK_PUBLIC_IP"
                description: "Override NETWORK PUBLIC IP"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_STORAGE_BRANDS
                label: "DASHDOT_OVERRIDE_STORAGE_BRANDS"
                description: "Pass a comma-separated list of brands of your drives. You can skip correct drives, by passing empty values for it"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_STORAGE_SIZES
                label: "DASHDOT_OVERRIDE_STORAGE_SIZES"
                description: "Pass a comma-separated list of sizes of your drives. You can skip correct drives, by passing empty values for it"
                schema:
                  type: string
                  default: ""
              - variable: DASHDOT_OVERRIDE_STORAGE_TYPES
                label: "DASHDOT_OVERRIDE_STORAGE_TYPES"
                description: "Pass a comma-separated list of types of your drives. You can skip correct drives, by passing empty values for it"
                schema:
                  type: string
                  default: ""
# Include{containerConfig}

  - 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: port
                            label: "Port"
                            description: "This port exposes the container port on the service"
                            schema:
                              type: int
                              default: 10044
                              required: true
                          - variable: advanced
                            label: "Show Advanced settings"
                            schema:
                              type: boolean
                              default: false
                              show_subquestions_if: true
                              subquestions:
                                - 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: nodePort
                                  label: "Node Port (Optional)"
                                  description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer"
                                  schema:
                                    type: int
                                    min: 9000
                                    max: 65535
                                - variable: targetPort
                                  label: "Target Port"
                                  description: "The internal(!) port on the container the Application runs on"
                                  schema:
                                    type: int
                                    default: 10044

  - 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: true
              - variable: readOnlyRootFilesystem
                label: "ReadOnly Root Filesystem"
                schema:
                  type: boolean
                  default: false
              - variable: allowPrivilegeEscalation
                label: "Allow Privilege Escalation"
                schema:
                  type: boolean
                  default: true
              - variable: runAsNonRoot
                label: "runAsNonRoot"
                schema:
                  type: boolean
                  default: false
# 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: 0
        - variable: runAsGroup
          label: "runAsGroup"
          description: "The groupID this App of the user running the application"
          schema:
            type: int
            default: 0
        - 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}
