groups:
  - name: Chia Configuration
    description: Configure Chia
  - name: Network Configuration
    description: Configure Network for Chia
  - name: Storage Configuration
    description: Configure Storage for Chia
  - name: Resources Configuration
    description: Configure Resources for Chia

questions:

  - variable: TZ
    group: Chia Configuration
    label: Timezone
    schema:
      type: string
      default: Etc/UTC
      required: true
      $ref:
        - definitions/timezone

  - variable: chiaNetwork
    group: Network Configuration
    label: ""
    schema:
      type: dict
      attrs:
        - variable: chiaPort
          label: Chia Port
          description: Ports below 9000 will enable Host Network automatically.
          schema:
            type: int
            default: 38444
            required: true
        - variable: farmerPort
          label: Farmer Port
          description: Ports below 9000 will enable Host Network automatically.
          schema:
            type: int
            default: 38447
            required: true

  - variable: chiaConfig
    group: Chia Configuration
    label: ""
    schema:
      type: dict
      attrs:
        - variable: service
          label: Chia Service Mode
          description: Select the Chia Service Mode
          schema:
            type: string
            default: ""
            enum:
              - value: ""
                description: Full Node
              - value: farmer-only
                description: Farmer
              - value: harvester
                description: Harvester
        - variable: farmer_address
          label: Farmer Address
          schema:
            type: string
            show_if: [["service", "=", "harvester"]]
            required: true
            default: ""
        - variable: farmer_port
          label: Farmer Port
          schema:
            type: int
            show_if: [["service", "=", "harvester"]]
            required: true
            default: 8447
        - variable: ca
          label: CA
          schema:
            type: string
            show_if: [["service", "=", "harvester"]]
            required: true
            default: ""
        - variable: full_node_peer
          label: Full Node Peer
          schema:
            type: string
            default: ""
        - variable: additionalEnvs
          label: Additional Environments
          description: Additional Environments
          schema:
            type: list
            default: []
            items:
              - variable: env
                label: Variable
                schema:
                  type: dict
                  attrs:
                    - variable: name
                      label: Name
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: value
                      label: Value
                      schema:
                        type: string
                        required: true
                        default: ""

  - variable: chiaStorage
    group: Storage Configuration
    label: ""
    schema:
      type: dict
      attrs:
        - variable: data
          label: Data
          schema:
            type: dict
            attrs:
              - variable: type
                label: Type
                description: |
                  ixVolume: Is dataset created automatically by the system.</br>
                  Host Path: Is a path that already exists on the system.
                schema:
                  type: string
                  default: ixVolume
                  required: true
                  enum:
                    - value: hostPath
                      description: Host Path (Path that already exists on the system)
                    - value: ixVolume
                      description: ixVolume (Dataset created automatically by the system)
              - variable: hostPath
                label: Host Path
                schema:
                  type: hostpath
                  show_if: [["type", "=", "hostPath"]]
                  default: ""
              - variable: datasetName
                label: Dataset Name
                schema:
                  type: string
                  default: data
                  show_if: [["type", "=", "ixVolume"]]
                  hidden: true
                  $ref:
                    - "normalize/ixVolume"
        - variable: plots
          label: Plots
          schema:
            type: dict
            attrs:
              - variable: type
                label: Type
                description: |
                  ixVolume: Is dataset created automatically by the system.</br>
                  Host Path: Is a path that already exists on the system.
                schema:
                  type: string
                  default: ixVolume
                  required: true
                  enum:
                    - value: hostPath
                      description: Host Path (Path that already exists on the system)
                    - value: ixVolume
                      description: ixVolume (Dataset created automatically by the system)
              - variable: hostPath
                label: Host Path
                schema:
                  type: hostpath
                  show_if: [["type", "=", "hostPath"]]
                  default: ""
              - variable: datasetName
                label: Dataset Name
                schema:
                  type: string
                  default: plots
                  show_if: [["type", "=", "ixVolume"]]
                  hidden: true
                  $ref:
                    - "normalize/ixVolume"
        - variable: additionalVolumes
          label: Additional Volumes
          schema:
            type: list
            default: []
            items:
              - variable: volume
                label: Volume
                schema:
                  type: dict
                  attrs:
                    - variable: isPlotDir
                      label: Directory for Plots
                      description: |
                        If this is checked, it will append the directory to <plots_dir> variable <br>
                        Keep this unchecked if you want to mount a directory for anything else.
                      schema:
                        type: boolean
                        default: false
                    - variable: type
                      label: Type
                      description: |
                        ixVolume: Is dataset created automatically by the system.</br>
                        Host Path: Is a path that already exists on the system.
                      schema:
                        type: string
                        default: ixVolume
                        required: true
                        enum:
                          - value: hostPath
                            description: Host Path (Path that already exists on the system)
                          - value: ixVolume
                            description: ixVolume (Dataset created automatically by the system)
                    - variable: hostPath
                      label: Host Path
                      schema:
                        type: hostpath
                        show_if: [["type", "=", "hostPath"]]
                        default: ""
                    - variable: datasetName
                      label: Dataset Name
                      schema:
                        type: string
                        default: "volume1"
                        required: true
                        show_if: [["type", "=", "ixVolume"]]
                        $ref:
                          - "normalize/ixVolume"
                    - variable: mountPath
                      label: Mount Path
                      description: Path to mount the volume inside the container
                      schema:
                        type: string
                        required: true
                        default: ""

  - variable: resources
    label: ""
    group: Resources Configuration
    schema:
      type: dict
      attrs:
        - variable: limits
          label: Limits
          schema:
            type: dict
            attrs:
              - variable: cpu
                label: CPU
                description: CPU limit for Chia.
                schema:
                  type: string
                  max_length: 6
                  valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$'
                  valid_chars_error: |
                    Valid CPU limit formats are</br>
                    - Plain Integer - eg. 1</br>
                    - Float - eg. 0.5</br>
                    - Milicpu - eg. 500m
                  default: "4000m"
                  required: true
              - variable: memory
                label: Memory
                description: Memory limit for Chia.
                schema:
                  type: string
                  max_length: 12
                  valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$'
                  valid_chars_error: |
                    Valid Memory limit formats are</br>
                    - Suffixed with E/P/T/G/M/K - eg. 1G</br>
                    - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>
                    - Plain Integer in bytes - eg. 1024</br>
                    - Exponent - eg. 134e6
                  default: "8Gi"
                  required: true
