From bd19e4cde4b86cbbc9dccffeb6683dbc43ca6cba Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 3 Jul 2023 14:48:22 +0300 Subject: [PATCH] NAS-122691 / 23.10 / Add `bazarr` to `community` train (#1308) * Add `bazarr` to `community` train * fix source * add tpls * add ci values * add values * add UI * formatting --- library/ix-dev/community/bazarr/Chart.lock | 6 + library/ix-dev/community/bazarr/Chart.yaml | 26 +++ library/ix-dev/community/bazarr/README.md | 8 + library/ix-dev/community/bazarr/app-readme.md | 8 + .../community/bazarr/charts/common-1.0.9.tgz | Bin 0 -> 55988 bytes .../community/bazarr/ci/basic-values.yaml | 11 + .../community/bazarr/ci/extra-values.yaml | 14 ++ .../community/bazarr/ci/hostNet-values.yaml | 8 + library/ix-dev/community/bazarr/item.yaml | 8 + library/ix-dev/community/bazarr/metadata.yaml | 8 + .../ix-dev/community/bazarr/questions.yaml | 218 ++++++++++++++++++ .../community/bazarr/templates/NOTES.txt | 1 + .../community/bazarr/templates/_bazarr.tpl | 51 ++++ .../bazarr/templates/_persistence.tpl | 34 +++ .../community/bazarr/templates/_portal.tpl | 12 + .../community/bazarr/templates/_service.tpl | 15 ++ .../community/bazarr/templates/common.yaml | 11 + .../ix-dev/community/bazarr/upgrade_info.json | 1 + .../ix-dev/community/bazarr/upgrade_strategy | 31 +++ library/ix-dev/community/bazarr/values.yaml | 26 +++ 20 files changed, 497 insertions(+) create mode 100644 library/ix-dev/community/bazarr/Chart.lock create mode 100644 library/ix-dev/community/bazarr/Chart.yaml create mode 100644 library/ix-dev/community/bazarr/README.md create mode 100644 library/ix-dev/community/bazarr/app-readme.md create mode 100644 library/ix-dev/community/bazarr/charts/common-1.0.9.tgz create mode 100644 library/ix-dev/community/bazarr/ci/basic-values.yaml create mode 100644 library/ix-dev/community/bazarr/ci/extra-values.yaml create mode 100644 library/ix-dev/community/bazarr/ci/hostNet-values.yaml create mode 100644 library/ix-dev/community/bazarr/item.yaml create mode 100644 library/ix-dev/community/bazarr/metadata.yaml create mode 100644 library/ix-dev/community/bazarr/questions.yaml create mode 100644 library/ix-dev/community/bazarr/templates/NOTES.txt create mode 100644 library/ix-dev/community/bazarr/templates/_bazarr.tpl create mode 100644 library/ix-dev/community/bazarr/templates/_persistence.tpl create mode 100644 library/ix-dev/community/bazarr/templates/_portal.tpl create mode 100644 library/ix-dev/community/bazarr/templates/_service.tpl create mode 100644 library/ix-dev/community/bazarr/templates/common.yaml create mode 100644 library/ix-dev/community/bazarr/upgrade_info.json create mode 100644 library/ix-dev/community/bazarr/upgrade_strategy create mode 100644 library/ix-dev/community/bazarr/values.yaml diff --git a/library/ix-dev/community/bazarr/Chart.lock b/library/ix-dev/community/bazarr/Chart.lock new file mode 100644 index 0000000000..2576f9aeb6 --- /dev/null +++ b/library/ix-dev/community/bazarr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.9 +digest: sha256:c3eb00f142d5d1cdbff7843940c150a00bd916520363e6ee9f459ce61fa92b40 +generated: "2023-06-28T16:46:25.707621045+03:00" diff --git a/library/ix-dev/community/bazarr/Chart.yaml b/library/ix-dev/community/bazarr/Chart.yaml new file mode 100644 index 0000000000..dca7acbe2f --- /dev/null +++ b/library/ix-dev/community/bazarr/Chart.yaml @@ -0,0 +1,26 @@ +name: bazarr +description: Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. +annotations: + title: Bazarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '1.2.2' +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.9 +home: https://www.bazarr.media/ +icon: https://github.com/morpheus65535/bazarr/blob/master/frontend/public/images/logo128.png?raw=true +sources: + - https://github.com/onedr0p/containers/tree/main/apps/bazarr + - https://github.com/truenas/charts/tree/master/library/ix-dev/community/bazarr + - https://github.com/morpheus65535/bazarr +keywords: + - media + - subtitles diff --git a/library/ix-dev/community/bazarr/README.md b/library/ix-dev/community/bazarr/README.md new file mode 100644 index 0000000000..ac519d3e9b --- /dev/null +++ b/library/ix-dev/community/bazarr/README.md @@ -0,0 +1,8 @@ +# Bazarr + +[Bazarr](https://www.bazarr.media/) is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Bazarr` directories. +> Afterward, the `Bazarr` 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/bazarr/app-readme.md b/library/ix-dev/community/bazarr/app-readme.md new file mode 100644 index 0000000000..ac519d3e9b --- /dev/null +++ b/library/ix-dev/community/bazarr/app-readme.md @@ -0,0 +1,8 @@ +# Bazarr + +[Bazarr](https://www.bazarr.media/) is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Bazarr` directories. +> Afterward, the `Bazarr` 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/bazarr/charts/common-1.0.9.tgz b/library/ix-dev/community/bazarr/charts/common-1.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4ac9aaa990c44098ece00af0efbf62c68322d871 GIT binary patch literal 55988 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

;{9S#mo2ZzJK;n7js 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 literal 0 HcmV?d00001 diff --git a/library/ix-dev/community/bazarr/ci/basic-values.yaml b/library/ix-dev/community/bazarr/ci/basic-values.yaml new file mode 100644 index 0000000000..dcac2e8a7c --- /dev/null +++ b/library/ix-dev/community/bazarr/ci/basic-values.yaml @@ -0,0 +1,11 @@ +bazarrNetwork: + webPort: 31000 + +bazarrRunAs: + user: 1000 + group: 1000 + +bazarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/library/ix-dev/community/bazarr/ci/extra-values.yaml b/library/ix-dev/community/bazarr/ci/extra-values.yaml new file mode 100644 index 0000000000..51d471a140 --- /dev/null +++ b/library/ix-dev/community/bazarr/ci/extra-values.yaml @@ -0,0 +1,14 @@ +bazarrNetwork: + webPort: 31000 + +bazarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/series + mountPath: /series + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/movies + mountPath: /movies diff --git a/library/ix-dev/community/bazarr/ci/hostNet-values.yaml b/library/ix-dev/community/bazarr/ci/hostNet-values.yaml new file mode 100644 index 0000000000..1d5a12ff10 --- /dev/null +++ b/library/ix-dev/community/bazarr/ci/hostNet-values.yaml @@ -0,0 +1,8 @@ +bazarrNetwork: + webPort: 30000 + hostNetwork: true + +bazarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/library/ix-dev/community/bazarr/item.yaml b/library/ix-dev/community/bazarr/item.yaml new file mode 100644 index 0000000000..841ca21ade --- /dev/null +++ b/library/ix-dev/community/bazarr/item.yaml @@ -0,0 +1,8 @@ +icon_url: https://github.com/morpheus65535/bazarr/blob/master/frontend/public/images/logo128.png?raw=true +categories: + - media +screenshots: + - https://www.bazarr.media/assets/img/manual.png + - https://www.bazarr.media/assets/img/upgrade.png +tags: + - subtitles diff --git a/library/ix-dev/community/bazarr/metadata.yaml b/library/ix-dev/community/bazarr/metadata.yaml new file mode 100644 index 0000000000..bee0f8509b --- /dev/null +++ b/library/ix-dev/community/bazarr/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: bazarr + groupName: bazarr + gid: 568 + uid: 568 + description: Bazarr can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/library/ix-dev/community/bazarr/questions.yaml b/library/ix-dev/community/bazarr/questions.yaml new file mode 100644 index 0000000000..37a66620e2 --- /dev/null +++ b/library/ix-dev/community/bazarr/questions.yaml @@ -0,0 +1,218 @@ +groups: + - name: Bazarr Configuration + description: Configure Bazarr + - name: User and Group Configuration + description: Configure User and Group for Bazarr + - name: Network Configuration + description: Configure Network for Bazarr + - name: Storage Configuration + description: Configure Storage for Bazarr + - name: Resources Configuration + description: Configure Resources for Bazarr + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: bazarrConfig + label: "" + group: Bazarr Configuration + schema: + type: dict + attrs: + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Bazarr. + 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: bazarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Bazarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Bazarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: bazarrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Bazarr Web UI. + schema: + type: int + default: 30046 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: bazarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Bazarr Config Storage + description: The path to store Bazarr 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 Bazarr. + 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 Bazarr. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Bazarr. + schema: + type: string + default: "8Gi" + required: true diff --git a/library/ix-dev/community/bazarr/templates/NOTES.txt b/library/ix-dev/community/bazarr/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/bazarr/templates/_bazarr.tpl b/library/ix-dev/community/bazarr/templates/_bazarr.tpl new file mode 100644 index 0000000000..b38cf0b9bd --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/_bazarr.tpl @@ -0,0 +1,51 @@ +{{- define "bazarr.workload" -}} +workload: + bazarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.bazarrNetwork.hostNetwork }} + containers: + bazarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.bazarrRunAs.user }} + runAsGroup: {{ .Values.bazarrRunAs.group }} + command: + - /entrypoint.sh + args: + - --port + - {{ .Values.bazarrNetwork.webPort | quote }} + {{ with .Values.bazarrConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.bazarrNetwork.webPort }}" + path: /ping + readiness: + enabled: true + type: http + port: "{{ .Values.bazarrNetwork.webPort }}" + path: /ping + startup: + enabled: true + type: http + port: "{{ .Values.bazarrNetwork.webPort }}" + path: /ping + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.bazarrRunAs.user + "GID" .Values.bazarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} +{{- end -}} diff --git a/library/ix-dev/community/bazarr/templates/_persistence.tpl b/library/ix-dev/community/bazarr/templates/_persistence.tpl new file mode 100644 index 0000000000..64845eef22 --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/_persistence.tpl @@ -0,0 +1,34 @@ +{{- define "bazarr.persistence" -}} +persistence: + config: + enabled: true + type: {{ .Values.bazarrStorage.config.type }} + datasetName: {{ .Values.bazarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.bazarrStorage.config.hostPath | default "" }} + targetSelector: + bazarr: + bazarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + tmp: + enabled: true + type: emptyDir + targetSelector: + bazarr: + bazarr: + mountPath: /tmp + {{- range $idx, $storage := .Values.bazarrStorage.additionalStorages }} + {{ printf "bazarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + bazarr: + bazarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/bazarr/templates/_portal.tpl b/library/ix-dev/community/bazarr/templates/_portal.tpl new file mode 100644 index 0000000000..39deb79846 --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "bazarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.bazarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/library/ix-dev/community/bazarr/templates/_service.tpl b/library/ix-dev/community/bazarr/templates/_service.tpl new file mode 100644 index 0000000000..e97f02ae2b --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/_service.tpl @@ -0,0 +1,15 @@ +{{- define "bazarr.service" -}} +service: + bazarr: + enabled: true + primary: true + type: NodePort + targetSelector: bazarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.bazarrNetwork.webPort }} + nodePort: {{ .Values.bazarrNetwork.webPort }} + targetSelector: bazarr +{{- end -}} diff --git a/library/ix-dev/community/bazarr/templates/common.yaml b/library/ix-dev/community/bazarr/templates/common.yaml new file mode 100644 index 0000000000..4686ae96dd --- /dev/null +++ b/library/ix-dev/community/bazarr/templates/common.yaml @@ -0,0 +1,11 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "bazarr.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "bazarr.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "bazarr.persistence" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "bazarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/bazarr/upgrade_info.json b/library/ix-dev/community/bazarr/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/community/bazarr/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/community/bazarr/upgrade_strategy b/library/ix-dev/community/bazarr/upgrade_strategy new file mode 100644 index 0000000000..af685230a1 --- /dev/null +++ b/library/ix-dev/community/bazarr/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/bazarr/values.yaml b/library/ix-dev/community/bazarr/values.yaml new file mode 100644 index 0000000000..4db9122ca2 --- /dev/null +++ b/library/ix-dev/community/bazarr/values.yaml @@ -0,0 +1,26 @@ +image: + repository: ghcr.io/onedr0p/bazarr + pullPolicy: IfNotPresent + tag: '1.2.2' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +bazarrConfig: + additionalEnvs: [] + +bazarrNetwork: + webPort: 30046 + hostNetwork: false + +bazarrRunAs: + user: 568 + group: 568 + +bazarrStorage: + config: + type: ixVolume + datasetName: config + additionalStorages: []