# 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: "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:
        - variable: AUTOSTART
          label: "Auto Start"
          description: "true = Enabled :: Runs script automatically on startup"
          schema:
            type: boolean
            default: true
        - variable: SCRIPTINTERVAL
          label: "Script Interval"
          description: "#s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when AUTOSTART is enabled"
          schema:
            type: string
            default: "1h"
        - variable: DOWNLOADMODE
          label: "Download Mode"
          description: >
            "`wanted` or `artist` :: wanted mode only download missing/cutoff ::
            artist mode downloads all albums by an artist (requires lidarr volume mapping root media folders for import)"
          schema:
            type: string
            default: "wanted"
            enum:
              - value: "wanted"
                description: "Only missing/cutoff"
              - value: "artist"
                description: "All albums"
        - variable: FALLBACKSEARCH
          label: "Fallback Search"
          description: "True or False :: True = enabled :: Allows DL client to search for missing songs when they are not available"
          schema:
            type: boolean
            default: true
        - variable: LIST
          label: "LIST"
          description: "Both or missing or cutoff :: both = missing + cutoff :: missng = lidarr missing list :: cutoff = lidarr cutoff list"
          schema:
            type: string
            default: "both"
            enum:
              - value: "both"
                description: "missing + cutoff"
              - value: "missing"
                description: "lidarr missing list"
              - value: "cutoff"
                description: "lidarr cutoff list"
        - variable: SearchType
          label: "Search Type"
          description: |
            both or artist or fuzzy
            both = artist + fuzzy searching
            artist = only artist searching
            fuzzy = only fuzzy searching (Various Artist is always fuzzy searched, regardless of setting)
          schema:
            type: string
            default: "both"
            enum:
              - value: "both"
                description: "Artist + fuzzy searching."
              - value: "artist"
                description: "Only artist searching."
              - value: "fuzzy"
                description: "Only fuzzy searching."
        - variable: Concurrency
          label: "Concurrency"
          description: "Number of concurrent downloads"
          schema:
            type: int
            default: 1
        - variable: EMBEDDED_COVER_QUALITY
          label: "Embedded Cover Quality"
          description: "Controls the quality of the cover image compression in percentage, 100 = no compression"
          schema:
            type: int
            default: 80
        - variable: FORMAT
          label: "Format"
          description: |
            FLAC or MP3 or OPUS or AAC or ALAC.
            FLAC is an audio coding format for lossless compression of digital audio.
            MP3 (or mp3) as a file format commonly designates files containing an elementary stream of MPEG-1 Audio or MPEG-2 Audio encoded data.
            Opus is a lossy audio coding format developed by the Xiph.Org Foundation and standardized by the Internet Engineering Task Force.
            Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio compression.
          schema:
            type: string
            default: "FLAC"
            enum:
              - value: "FLAC"
                description: "FLAC"
              - value: "MP3"
                description: "MP3"
              - value: "OPUS"
                description: "OPUS"
              - value: "AAC"
                description: "AAC"
              - value: "ALAC"
                description: "ALAC"
        - variable: BITRATE
          label: "Bit Rate"
          description: "FLAC -> OPUS/AAC/MP3 will be converted using this bitrate (MP3 320/128 is native, not converted)"
          schema:
            type: int
            default: 320
        - variable: ENABLEPOSTPROCESSING
          label: "Enable Postprocessing"
          description: "true = enabled :: enables or disables post processing processes as much as possible"
          schema:
            type: boolean
            default: true
        - variable: FORCECONVERT
          label: "Force Convert"
          description: "true = enabled :: This will convert lossy MP3 to desired target format (exluding FLAC/ALAC, ALAC will convert to AAC)"
          schema:
            type: boolean
            default: true
        - variable: requirequality
          label: "Require Quality"
          description: "true = enabled :: Requires all downloaded files match target file extension (mp3 or flac) when enabled"
          schema:
            type: boolean
            default: true
        - variable: MatchDistance
          label: "Match Distance"
          description: >
            "Set as an integer, the higher the number, the more lenient it is.
            Example: A match score of 0 is a perfect match :: For more information,
            this score is produced using this function: Algorithm Implementation/Strings/Levenshtein distance"
          schema:
            type: int
            default: 10
        - variable: replaygain
          label: "Replay Gain"
          description: "true = enabled :: Scans and analyzes files to add replaygain tags to song metadata"
          schema:
            type: boolean
            default: true
        - variable: FolderPermissions
          label: "Folder Permissions"
          description: "Based on chmod linux permissions"
          schema:
            type: int
            default: 766
        - variable: FilePermissions
          label: "File Permissions"
          description: "Based on chmod linux permissions"
          schema:
            type: int
            default: 666
        - variable: MBRAINZMIRROR
          label: "Mbrainz Mirror"
          description: "OPTIONAL :: Only change if using a different mirror"
          schema:
            type: string
            default: "https://musicbrainz.org"
        - variable: MBRATELIMIT
          label: "Mb Rate Limit"
          description: "OPTIONAL: musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10 :: Set to 101 to disable limit"
          schema:
            type: int
            default: 1
        - variable: LidarrUrl
          label: "Lidarr Url"
          description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify http/s."
          schema:
            type: string
            default: "http://x.x.x.x:8686"
        - variable: LidarrAPIkey
          label: "Lidarr Api Key"
          description: "Lidarr API key."
          schema:
            type: string
            default: "LIDARRAPI"
        - variable: ARL_TOKEN
          label: "ARL Token"
          description: "Deezer ARL Cookie"
          schema:
            type: string
            default: "ARLTOKEN"
        - variable: NOTIFYPLEX
          label: "Notify PLEX"
          description: "true = enabled :: ONLY APPLIES ARTIST MODE :: Plex must have a music library added and be configured to use the exact same mount point as Lidarr's root folder"
          schema:
            type: boolean
            default: false
            show_subquestions_if: true
            subquestions:
            - variable: PLEXLIBRARYNAME
              label: "PLEX Library Name"
              description: "This must exactly match the name of the Plex Library that contains the Lidarr Media Folder data"
              schema:
                type: string
                default: "Music"
            - variable: PLEXURL
              label: "PLEX URL"
              description: "Path to PLEX."
              schema:
                type: string
                default: "http://x.x.x.x:32400"
            - variable: PLEXTOKEN
              label: "PLEX Token"
              description: "PLEX API token."
              schema:
                type: string
                default: "plextoken"
        - variable: ALBUM_TYPE_FILTER
          label: "Album Type Filter"
          description: 'Filter Types: COMPILE, SINGLE, ALBUM, EP (this is a ", " separated list of Album Types to skip) (Applicable to artist mode only)'
          schema:
            type: string
            default: "COMPILE"
        - variable: POSTPROCESSTHREADS
          label: "Post Process Threads"
          description: "Controls number of threads used for Format conversion and replay gain tagging"
          schema:
            type: int
            default: 1
# 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}

  - variable: persistence
    label: "Integrated Persistent Storage"
    description: "Integrated Persistent Storage"
    group: "Storage and Persistence"
    schema:
      additional_attrs: true
      type: dict
      attrs:
        - variable: config
          label: "App Config Storage"
          description: "Stores the Application Configuration."
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{persistenceBasic}
# Include{persistenceAdvanced}
        - variable: data
          label: "App Data Storage"
          description: "Stores the Application Data."
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{persistenceBasic}
# Include{persistenceAdvanced}

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