From 51bd4c08d0de7bc4f1824be34cbb7b949b459d97 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Fri, 7 Apr 2023 20:42:07 +0300 Subject: [PATCH] NAS-121366 / 23.10 / Adds sonarr to `charts` train (#1082) * Adds sonarr to charts train * Update readme * fix icon * Add descriptions --- library/ix-dev/charts/sonarr/Chart.lock | 6 + library/ix-dev/charts/sonarr/Chart.yaml | 25 ++ library/ix-dev/charts/sonarr/README.md | 8 + library/ix-dev/charts/sonarr/app-readme.md | 8 + .../charts/sonarr/charts/common-1.0.3.tgz | Bin 0 -> 54266 bytes .../ix-dev/charts/sonarr/ci/basic-values.yaml | 11 + .../ix-dev/charts/sonarr/ci/extra-values.yaml | 21 ++ .../charts/sonarr/ci/hostNet-values.yaml | 8 + library/ix-dev/charts/sonarr/item.yaml | 4 + library/ix-dev/charts/sonarr/questions.yaml | 225 ++++++++++++++++++ .../ix-dev/charts/sonarr/templates/NOTES.txt | 1 + .../charts/sonarr/templates/_portal.tpl | 12 + .../charts/sonarr/templates/_sonarr.tpl | 90 +++++++ .../charts/sonarr/templates/common.yaml | 9 + .../ix-dev/charts/sonarr/upgrade_info.json | 1 + library/ix-dev/charts/sonarr/upgrade_strategy | 31 +++ library/ix-dev/charts/sonarr/values.yaml | 25 ++ 17 files changed, 485 insertions(+) create mode 100644 library/ix-dev/charts/sonarr/Chart.lock create mode 100644 library/ix-dev/charts/sonarr/Chart.yaml create mode 100644 library/ix-dev/charts/sonarr/README.md create mode 100644 library/ix-dev/charts/sonarr/app-readme.md create mode 100644 library/ix-dev/charts/sonarr/charts/common-1.0.3.tgz create mode 100644 library/ix-dev/charts/sonarr/ci/basic-values.yaml create mode 100644 library/ix-dev/charts/sonarr/ci/extra-values.yaml create mode 100644 library/ix-dev/charts/sonarr/ci/hostNet-values.yaml create mode 100644 library/ix-dev/charts/sonarr/item.yaml create mode 100644 library/ix-dev/charts/sonarr/questions.yaml create mode 100644 library/ix-dev/charts/sonarr/templates/NOTES.txt create mode 100644 library/ix-dev/charts/sonarr/templates/_portal.tpl create mode 100644 library/ix-dev/charts/sonarr/templates/_sonarr.tpl create mode 100644 library/ix-dev/charts/sonarr/templates/common.yaml create mode 100644 library/ix-dev/charts/sonarr/upgrade_info.json create mode 100755 library/ix-dev/charts/sonarr/upgrade_strategy create mode 100644 library/ix-dev/charts/sonarr/values.yaml diff --git a/library/ix-dev/charts/sonarr/Chart.lock b/library/ix-dev/charts/sonarr/Chart.lock new file mode 100644 index 0000000000..7c09f46050 --- /dev/null +++ b/library/ix-dev/charts/sonarr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.3 +digest: sha256:1a090020cfa582aff29906320874ffe9b543fcc6c2423c281f434514f2653e02 +generated: "2023-04-06T11:54:15.069382144Z" diff --git a/library/ix-dev/charts/sonarr/Chart.yaml b/library/ix-dev/charts/sonarr/Chart.yaml new file mode 100644 index 0000000000..af414a6482 --- /dev/null +++ b/library/ix-dev/charts/sonarr/Chart.yaml @@ -0,0 +1,25 @@ +name: sonarr +description: Sonarr is a PVR for Usenet and BitTorrent users. +annotations: + title: Sonarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '3.0.10.1567' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common + version: 1.0.3 +home: https://github.com/Sonarr/Sonarr +icon: https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png +sources: + - https://github.com/onedr0p/containers/tree/main/apps/sonarr + - https://github.com/truenas/charts/tree/master/charts/sonarr + - https://github.com/Sonarr/Sonarr +keywords: + - media + - series diff --git a/library/ix-dev/charts/sonarr/README.md b/library/ix-dev/charts/sonarr/README.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/library/ix-dev/charts/sonarr/README.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/library/ix-dev/charts/sonarr/app-readme.md b/library/ix-dev/charts/sonarr/app-readme.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/library/ix-dev/charts/sonarr/app-readme.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/library/ix-dev/charts/sonarr/charts/common-1.0.3.tgz b/library/ix-dev/charts/sonarr/charts/common-1.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c8d520cf2ddaf3209cbcc541a9fa817042aa22d4 GIT binary patch literal 54266 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
    tIN`E%A|g!~2~R0a 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 + schema: + type: boolean + default: false + + - variable: sonarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Sonarr Config Storage + description: The path to store Sonarr Configuration. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
    + Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: config + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Sonarr. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
    + Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Sonarr. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for Sonarr. + schema: + type: string + default: 8Gi + required: true diff --git a/library/ix-dev/charts/sonarr/templates/NOTES.txt b/library/ix-dev/charts/sonarr/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/charts/sonarr/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/charts/sonarr/templates/_portal.tpl b/library/ix-dev/charts/sonarr/templates/_portal.tpl new file mode 100644 index 0000000000..88e40c57bc --- /dev/null +++ b/library/ix-dev/charts/sonarr/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "sonarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.sonarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/library/ix-dev/charts/sonarr/templates/_sonarr.tpl b/library/ix-dev/charts/sonarr/templates/_sonarr.tpl new file mode 100644 index 0000000000..467001308a --- /dev/null +++ b/library/ix-dev/charts/sonarr/templates/_sonarr.tpl @@ -0,0 +1,90 @@ +{{- define "sonarr.workload" -}} +workload: + sonarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.sonarrNetwork.hostNetwork }} + containers: + sonarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.sonarrRunAs.user }} + runAsGroup: {{ .Values.sonarrRunAs.group }} + {{ with .Values.sonarrConfig.additionalEnvs }} + env: + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + env: + SONARR__PORT: {{ .Values.sonarrNetwork.webPort }} + SONARR__INSTANCE_NAME: {{ .Values.sonarrConfig.instanceName }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + readiness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + startup: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.sonarrRunAs.user + "GID" .Values.sonarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + sonarr: + enabled: true + primary: true + type: NodePort + targetSelector: sonarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.sonarrNetwork.webPort }} + nodePort: {{ .Values.sonarrNetwork.webPort }} + targetSelector: sonarr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.sonarrStorage.config.type }} + datasetName: {{ .Values.sonarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.sonarrStorage.config.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + {{- range $idx, $storage := .Values.sonarrStorage.additionalStorages }} + {{ printf "sonarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/charts/sonarr/templates/common.yaml b/library/ix-dev/charts/sonarr/templates/common.yaml new file mode 100644 index 0000000000..23242cb8d3 --- /dev/null +++ b/library/ix-dev/charts/sonarr/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "sonarr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "sonarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/charts/sonarr/upgrade_info.json b/library/ix-dev/charts/sonarr/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/charts/sonarr/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/charts/sonarr/upgrade_strategy b/library/ix-dev/charts/sonarr/upgrade_strategy new file mode 100755 index 0000000000..3e49862388 --- /dev/null +++ b/library/ix-dev/charts/sonarr/upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/library/ix-dev/charts/sonarr/values.yaml b/library/ix-dev/charts/sonarr/values.yaml new file mode 100644 index 0000000000..504eb02bd8 --- /dev/null +++ b/library/ix-dev/charts/sonarr/values.yaml @@ -0,0 +1,25 @@ +image: + repository: ghcr.io/onedr0p/sonarr + pullPolicy: IfNotPresent + tag: '3.0.10.1567' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +sonarrConfig: + instanceName: Sonarr + additionalEnvs: [] +sonarrNetwork: + webPort: 30000 + hostNetwork: false +sonarrRunAs: + user: 568 + group: 568 +sonarrStorage: + config: + type: ixVolume + hostPath: '' + datasetName: config + additionalStorages: []