From c9395376e446dc5ffd601b9d9dbb2de974800751 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 17 Jul 2023 16:08:38 +0300 Subject: [PATCH] NAS-122968 / 23.10 / add `recyclarr` to `community` train (#1359) * add `recyclarr` to `community` train * add templates * add ui * fix keywords * bump --- library/ix-dev/community/recyclarr/Chart.lock | 6 + library/ix-dev/community/recyclarr/Chart.yaml | 27 +++ library/ix-dev/community/recyclarr/README.md | 8 + .../ix-dev/community/recyclarr/app-readme.md | 8 + .../recyclarr/charts/common-1.0.12.tgz | Bin 0 -> 56723 bytes .../community/recyclarr/ci/basic-values.yaml | 8 + .../community/recyclarr/ci/extra-values.yaml | 11 + library/ix-dev/community/recyclarr/item.yaml | 8 + .../ix-dev/community/recyclarr/metadata.yaml | 8 + .../ix-dev/community/recyclarr/questions.yaml | 225 ++++++++++++++++++ .../community/recyclarr/templates/NOTES.txt | 1 + .../recyclarr/templates/_persistence.tpl | 34 +++ .../recyclarr/templates/_recyclarr.tpl | 42 ++++ .../community/recyclarr/templates/common.yaml | 7 + .../community/recyclarr/upgrade_info.json | 1 + .../community/recyclarr/upgrade_strategy | 31 +++ .../ix-dev/community/recyclarr/values.yaml | 24 ++ 17 files changed, 449 insertions(+) create mode 100644 library/ix-dev/community/recyclarr/Chart.lock create mode 100644 library/ix-dev/community/recyclarr/Chart.yaml create mode 100644 library/ix-dev/community/recyclarr/README.md create mode 100644 library/ix-dev/community/recyclarr/app-readme.md create mode 100644 library/ix-dev/community/recyclarr/charts/common-1.0.12.tgz create mode 100644 library/ix-dev/community/recyclarr/ci/basic-values.yaml create mode 100644 library/ix-dev/community/recyclarr/ci/extra-values.yaml create mode 100644 library/ix-dev/community/recyclarr/item.yaml create mode 100644 library/ix-dev/community/recyclarr/metadata.yaml create mode 100644 library/ix-dev/community/recyclarr/questions.yaml create mode 100644 library/ix-dev/community/recyclarr/templates/NOTES.txt create mode 100644 library/ix-dev/community/recyclarr/templates/_persistence.tpl create mode 100644 library/ix-dev/community/recyclarr/templates/_recyclarr.tpl create mode 100644 library/ix-dev/community/recyclarr/templates/common.yaml create mode 100644 library/ix-dev/community/recyclarr/upgrade_info.json create mode 100755 library/ix-dev/community/recyclarr/upgrade_strategy create mode 100644 library/ix-dev/community/recyclarr/values.yaml diff --git a/library/ix-dev/community/recyclarr/Chart.lock b/library/ix-dev/community/recyclarr/Chart.lock new file mode 100644 index 0000000000..dcc38500c2 --- /dev/null +++ b/library/ix-dev/community/recyclarr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.12 +digest: sha256:debd30721d09ae8293b1cbdd9d0115981d40b47908be3035fc3cf657c9d5eedb +generated: "2023-07-15T23:16:08.316301013+03:00" diff --git a/library/ix-dev/community/recyclarr/Chart.yaml b/library/ix-dev/community/recyclarr/Chart.yaml new file mode 100644 index 0000000000..36ee6d014d --- /dev/null +++ b/library/ix-dev/community/recyclarr/Chart.yaml @@ -0,0 +1,27 @@ +name: recyclarr +description: Recyclarr synchronizes recommended settings from the TRaSH guides to your Sonarr/Radarr instances. +annotations: + title: Recyclarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 5.1.1 +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.12 +home: https://recyclarr.dev +icon: https://avatars.githubusercontent.com/u/105823709 +sources: + - https://recyclarr.dev + - https://github.com/truenas/charts/tree/master/community/recyclarr + - https://github.com/recyclarr/recyclarr/tree/recyclarr +keywords: + - media + - sonarr + - radarr diff --git a/library/ix-dev/community/recyclarr/README.md b/library/ix-dev/community/recyclarr/README.md new file mode 100644 index 0000000000..78787c61e0 --- /dev/null +++ b/library/ix-dev/community/recyclarr/README.md @@ -0,0 +1,8 @@ +# Recyclarr + +[Recyclarr](https://github.com/recyclarr/recyclarr) synchronizes recommended settings from the TRaSH guides to your Sonarr/Radarr instances. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Recyclarr` directories. +> Afterward, the `Recyclarr` 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/community/recyclarr/app-readme.md b/library/ix-dev/community/recyclarr/app-readme.md new file mode 100644 index 0000000000..78787c61e0 --- /dev/null +++ b/library/ix-dev/community/recyclarr/app-readme.md @@ -0,0 +1,8 @@ +# Recyclarr + +[Recyclarr](https://github.com/recyclarr/recyclarr) synchronizes recommended settings from the TRaSH guides to your Sonarr/Radarr instances. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Recyclarr` directories. +> Afterward, the `Recyclarr` 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/community/recyclarr/charts/common-1.0.12.tgz b/library/ix-dev/community/recyclarr/charts/common-1.0.12.tgz new file mode 100644 index 0000000000000000000000000000000000000000..00b43e147025d77d5e8b95aabbd6a498e3aab029 GIT binary patch literal 56723 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 literal 0 HcmV?d00001 diff --git a/library/ix-dev/community/recyclarr/ci/basic-values.yaml b/library/ix-dev/community/recyclarr/ci/basic-values.yaml new file mode 100644 index 0000000000..d8169c07eb --- /dev/null +++ b/library/ix-dev/community/recyclarr/ci/basic-values.yaml @@ -0,0 +1,8 @@ +recyclarrRunAs: + user: 1000 + group: 1000 + +recyclarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/library/ix-dev/community/recyclarr/ci/extra-values.yaml b/library/ix-dev/community/recyclarr/ci/extra-values.yaml new file mode 100644 index 0000000000..b472ae9aa2 --- /dev/null +++ b/library/ix-dev/community/recyclarr/ci/extra-values.yaml @@ -0,0 +1,11 @@ +recyclarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/data1 + mountPath: /data1 + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/data2 + mountPath: /data2 diff --git a/library/ix-dev/community/recyclarr/item.yaml b/library/ix-dev/community/recyclarr/item.yaml new file mode 100644 index 0000000000..d7ab06fc15 --- /dev/null +++ b/library/ix-dev/community/recyclarr/item.yaml @@ -0,0 +1,8 @@ +icon_url: https://avatars.githubusercontent.com/u/105823709 +categories: + - media +screenshots: [] +tags: + - sync + - sonarr + - radarr diff --git a/library/ix-dev/community/recyclarr/metadata.yaml b/library/ix-dev/community/recyclarr/metadata.yaml new file mode 100644 index 0000000000..7c470732e5 --- /dev/null +++ b/library/ix-dev/community/recyclarr/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: recyclarr + groupName: recyclarr + gid: 568 + uid: 568 + description: Recyclarr can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/library/ix-dev/community/recyclarr/questions.yaml b/library/ix-dev/community/recyclarr/questions.yaml new file mode 100644 index 0000000000..c3375b18cb --- /dev/null +++ b/library/ix-dev/community/recyclarr/questions.yaml @@ -0,0 +1,225 @@ +groups: + - name: Recyclarr Configuration + description: Configure Recyclarr + - name: User and Group Configuration + description: Configure User and Group for Recyclarr + - name: Storage Configuration + description: Configure Storage for Recyclarr + - name: Resources Configuration + description: Configure Resources for Recyclarr + +questions: + - variable: TZ + group: Recyclarr Configuration + label: Timezone + schema: + type: string + default: Etc/UTC + required: true + $ref: + - definitions/timezone + + - variable: recyclarrConfig + label: "" + group: Recyclarr Configuration + schema: + type: dict + attrs: + - variable: createConfig + label: Create Default Config + description: | + Enable this if you want /config/recyclarr.yml to be created for + you automatically when the container starts.
+ If the file already exists, it will not create the file again. + schema: + type: boolean + default: false + - variable: cronSchedule + label: Cron Schedule + description: | + The cron schedule to use for Recyclarr. + schema: + type: string + default: "@daily" + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Recyclarr. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: recyclarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Recyclarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Recyclarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: recyclarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Recyclarr Config Storage + description: The path to store Recyclarr 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 Recyclarr. + 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 Recyclarr. + 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
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Recyclarr. + 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
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/library/ix-dev/community/recyclarr/templates/NOTES.txt b/library/ix-dev/community/recyclarr/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/recyclarr/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/recyclarr/templates/_persistence.tpl b/library/ix-dev/community/recyclarr/templates/_persistence.tpl new file mode 100644 index 0000000000..6c8e77a149 --- /dev/null +++ b/library/ix-dev/community/recyclarr/templates/_persistence.tpl @@ -0,0 +1,34 @@ +{{- define "recyclarr.persistence" -}} +persistence: + config: + enabled: true + type: {{ .Values.recyclarrStorage.config.type }} + datasetName: {{ .Values.recyclarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.recyclarrStorage.config.hostPath | default "" }} + targetSelector: + recyclarr: + recyclarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + tmp: + enabled: true + type: emptyDir + targetSelector: + recyclarr: + recyclarr: + mountPath: /tmp + {{- range $idx, $storage := .Values.recyclarrStorage.additionalStorages }} + {{ printf "recyclarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + recyclarr: + recyclarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/recyclarr/templates/_recyclarr.tpl b/library/ix-dev/community/recyclarr/templates/_recyclarr.tpl new file mode 100644 index 0000000000..23df89f92c --- /dev/null +++ b/library/ix-dev/community/recyclarr/templates/_recyclarr.tpl @@ -0,0 +1,42 @@ +{{- define "recyclarr.workload" -}} +workload: + recyclarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: false + containers: + recyclarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.recyclarrRunAs.user }} + runAsGroup: {{ .Values.recyclarrRunAs.group }} + env: + RECYCLARR_APP_DATA: /config + RECYCLARR_CREATE_CONFIG: {{ .Values.recyclarrConfig.createConfig }} + CRON_SCHEDULE: {{ .Values.recyclarrConfig.cronSchedule | quote}} + {{ with .Values.recyclarrConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + # Nothing to probe + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.recyclarrRunAs.user + "GID" .Values.recyclarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} +{{- end -}} diff --git a/library/ix-dev/community/recyclarr/templates/common.yaml b/library/ix-dev/community/recyclarr/templates/common.yaml new file mode 100644 index 0000000000..99216f1c4e --- /dev/null +++ b/library/ix-dev/community/recyclarr/templates/common.yaml @@ -0,0 +1,7 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "recyclarr.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "recyclarr.persistence" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/recyclarr/upgrade_info.json b/library/ix-dev/community/recyclarr/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/community/recyclarr/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/community/recyclarr/upgrade_strategy b/library/ix-dev/community/recyclarr/upgrade_strategy new file mode 100755 index 0000000000..af685230a1 --- /dev/null +++ b/library/ix-dev/community/recyclarr/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'\d+\.\d+\.\d+') + + +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/community/recyclarr/values.yaml b/library/ix-dev/community/recyclarr/values.yaml new file mode 100644 index 0000000000..95cef4b47e --- /dev/null +++ b/library/ix-dev/community/recyclarr/values.yaml @@ -0,0 +1,24 @@ +image: + repository: recyclarr/recyclarr + pullPolicy: IfNotPresent + tag: 5.1.1 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +recyclarrConfig: + createConfig: true + cronSchedule: '@daily' + additionalEnvs: [] + +recyclarrRunAs: + user: 568 + group: 568 + +recyclarrStorage: + config: + type: ixVolume + datasetName: config + additionalStorages: []