# Include{groups}
portals: {}
questions:
# 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: "RollingUpdate"
                  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: secretEnv
    group: "Container Configuration"
    label: "Image Secrets"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: LEAF_USERNAME
          label: "LEAF_USERNAME"
          description: "Your NissanConnect username"
          schema:
            type: string
            default: "leafuser"
            required: true
        - variable: LEAF_PASSWORD
          label: "LEAF_PASSWORD"
          description: "Your NissanConnect password"
          schema:
            type: string
            default: "changeme"
            required: true
        - variable: MQTT_USERNAME
          label: "MQTT_USERNAME"
          description: "Your MQTT username"
          schema:
            type: string
            default: "mqttuser"
            required: true
        - variable: MQTT_PASSWORD
          label: "MQTT_PASSWORD"
          description: "Your MQTT password"
          schema:
            type: string
            default: "changeme"
            required: true

  - variable: env
    group: "Container Configuration"
    label: "Image Environment"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: LEAF_TYPE
          label: "LEAF_TYPE"
          schema:
            type: string
            default: ""
            required: true
        - variable: MQTT_HOST
          label: "MQTT_HOST"
          schema:
            type: string
            default: ""
            required: true
        - variable: MQTT_PORT
          label: "MQTT_PORT"
          schema:
            type: int
            default: 1883
        - variable: MQTT_BASE_TOPIC
          label: "MQTT_BASE_TOPIC"
          schema:
            type: string
            default: "leaf"
        - variable: UPDATE_INTERVAL_MINUTES
          label: "UPDATE_INTERVAL_MINUTES"
          schema:
            type: int
            default: 60
        - variable: CHARGING_UPDATE_INTERVAL_MINUTES
          label: "CHARGING_UPDATE_INTERVAL_MINUTES"
          schema:
            type: int
            default: 60
        - variable: LOG_LEVEL
          label: "LOG_LEVEL"
          schema:
            type: string
            default: "Warning"

# Include{containerConfig}

  - 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}

# 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: 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}
