# yaml-language-server: $schema=./values.schema.json
image:
  repository: oci.trueforge.org/containerforge/emby
  pullPolicy: IfNotPresent
  tag: 4.10.0.3@sha256:81e10f075bcf71c640eba96820b555a8571c06e4b272c392f0debe5a7f5437a4
broadcastProxyImage:
  repository: docker.io/alpine/socat
  pullPolicy: IfNotPresent
  tag: 1.8.0.3@sha256:78b3a1f99ca8f9179c9dbbdcd09d9ceee4c5fa8349847a42cfa3d0c279be8022
service:
  main:
    ports:
      main:
        port: 10079
        targetPort: 8096
  autodiscovery:
    enabled: "{{ .Values.autodiscovery.enabled }}"
    ports:
      autodiscovery:
        enabled: true
        protocol: udp
        port: 7359
        targetPort: 7359
workload:
  main:
    podSpec:
      containers:
        main:
          probes:
            liveness:
              type: http
              path: /
            readiness:
              type: http
              path: /
            startup:
              type: http
              path: /
          env: {}
  broadcastproxy:
    enabled: "{{ .Values.autodiscovery.enabled }}"
    type: Deployment
    podSpec:
      hostNetwork: true
      # Proxy doesn't seem to respect the TERM signal, so by default
      # this ends up just hanging until the default grace period ends.
      # This is unnecesary since this workload only proxies autodiscovery
      # messages.
      terminationGracePeriodSeconds: 3
      containers:
        broadcastproxy:
          enabled: true
          primary: true
          imageSelector: broadcastProxyImage
          securityContext:
            readOnlyRootFilesystem: true
          command: ["/bin/sh"]
          # Quite a lot going on here:
          # - Resolve Emby's autodiscovery service IP from its FQDN via getent hosts
          # - Export the IP to `$TARGET_IP`
          # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors)
          # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes
          # - Start socat in proxy mode
          # - On exit remove `/tmp/healthy`
          args:
            - "-c"
            - 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat -T1 UDP4-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:$TARGET_IP:7359,rcvbuf=8096 ; rm -rf /tmp/healthy'
          probes:
            readiness:
              enabled: true
              type: exec
              command:
                - cat
                - /tmp/healthy
            liveness:
              enabled: true
              type: exec
              command:
                - cat
                - /tmp/healthy
            startup:
              enabled: true
              type: exec
              command:
                - cat
                - /tmp/healthy
# -- enable Emby autodiscovery on LAN
securityContext:
  container:
    readOnlyRootFilesystem: false
    runAsGroup: 0
    runAsUser: 0
autodiscovery:
  enabled: false
persistence:
  config:
    enabled: true
    mountPath: /config
