From a7581a1d1b4a4a4d64b8dba1d30b0b16775cf22b Mon Sep 17 00:00:00 2001 From: Chris Coutinho Date: Tue, 3 Feb 2026 07:45:30 +0100 Subject: [PATCH] fix(helm): add backward compatibility for legacy persistence configs - Add helper functions to detect and use legacy persistence configs - Legacy auth.multiUserBasic.persistence.* and qdrant.localPersistence.* configs continue to work but show deprecation warnings in NOTES.txt - New dataStorage.enabled takes precedence when explicitly set - PVC size/accessMode/storageClass values from legacy configs are honored Co-Authored-By: Claude Opus 4.5 --- .../nextcloud-mcp-server/templates/NOTES.txt | 49 +++++++++++++++++++ .../templates/_helpers.tpl | 38 ++++++++++++++ .../templates/deployment.yaml | 2 +- .../nextcloud-mcp-server/templates/pvc.yaml | 24 +++++++-- 4 files changed, 107 insertions(+), 6 deletions(-) diff --git a/charts/nextcloud-mcp-server/templates/NOTES.txt b/charts/nextcloud-mcp-server/templates/NOTES.txt index 24ce37c..8890723 100644 --- a/charts/nextcloud-mcp-server/templates/NOTES.txt +++ b/charts/nextcloud-mcp-server/templates/NOTES.txt @@ -120,6 +120,55 @@ Your Nextcloud MCP Server has been deployed in {{ .Values.auth.mode }} authentic The dashboard JSON is available in the chart at charts/nextcloud-mcp-server/dashboards/nextcloud-mcp-server.json {{- end }} +{{- $legacyMultiUserBasic := eq (include "nextcloud-mcp-server.legacyMultiUserBasicPersistence" .) "true" }} +{{- $legacyQdrant := eq (include "nextcloud-mcp-server.legacyQdrantPersistence" .) "true" }} +{{- if or $legacyMultiUserBasic $legacyQdrant }} + +================================================================================ + DEPRECATION WARNING +================================================================================ + +You are using deprecated persistence configuration that will be removed in a +future release. Your deployment will continue to work, but please migrate to +the new unified dataStorage configuration. + +Deprecated settings detected: +{{- if $legacyMultiUserBasic }} + - auth.multiUserBasic.persistence.* (currently enabled) +{{- end }} +{{- if $legacyQdrant }} + - qdrant.localPersistence.* (currently enabled) +{{- end }} + +To migrate, update your values.yaml: + + dataStorage: + enabled: true +{{- if $legacyMultiUserBasic }} + size: {{ .Values.auth.multiUserBasic.persistence.size }} +{{- else if $legacyQdrant }} + size: {{ .Values.qdrant.localPersistence.size }} +{{- end }} + # storageClass: "" # Optional: specify storage class + # existingClaim: "" # Optional: use existing PVC to preserve data + +After migrating, remove the deprecated settings: +{{- if $legacyMultiUserBasic }} + - auth.multiUserBasic.persistence.enabled + - auth.multiUserBasic.persistence.size + - auth.multiUserBasic.persistence.storageClass + - auth.multiUserBasic.persistence.accessMode +{{- end }} +{{- if $legacyQdrant }} + - qdrant.localPersistence.enabled + - qdrant.localPersistence.size + - qdrant.localPersistence.storageClass + - qdrant.localPersistence.accessMode +{{- end }} + +================================================================================ +{{- end }} + For more information and documentation: - GitHub: https://github.com/cbcoutinho/nextcloud-mcp-server - Documentation: https://github.com/cbcoutinho/nextcloud-mcp-server#readme diff --git a/charts/nextcloud-mcp-server/templates/_helpers.tpl b/charts/nextcloud-mcp-server/templates/_helpers.tpl index 60680cd..9d0eb7e 100644 --- a/charts/nextcloud-mcp-server/templates/_helpers.tpl +++ b/charts/nextcloud-mcp-server/templates/_helpers.tpl @@ -138,6 +138,44 @@ Create the name of the PVC to use for /app/data storage {{- end }} {{- end }} +{{/* +Determine if data storage PVC should be enabled (backward compatible) +Checks new dataStorage.enabled OR legacy persistence configs +*/}} +{{- define "nextcloud-mcp-server.dataStorageEnabled" -}} +{{- if .Values.dataStorage.enabled -}} +true +{{- else if and (eq .Values.auth.mode "multi-user-basic") .Values.auth.multiUserBasic.enableOfflineAccess .Values.auth.multiUserBasic.persistence.enabled -}} +true +{{- else if and (eq .Values.qdrant.mode "persistent") .Values.qdrant.localPersistence.enabled -}} +true +{{- else -}} +false +{{- end -}} +{{- end }} + +{{/* +Check if legacy multi-user-basic persistence config is being used +*/}} +{{- define "nextcloud-mcp-server.legacyMultiUserBasicPersistence" -}} +{{- if and (eq .Values.auth.mode "multi-user-basic") .Values.auth.multiUserBasic.enableOfflineAccess .Values.auth.multiUserBasic.persistence.enabled (not .Values.dataStorage.enabled) -}} +true +{{- else -}} +false +{{- end -}} +{{- end }} + +{{/* +Check if legacy qdrant persistence config is being used +*/}} +{{- define "nextcloud-mcp-server.legacyQdrantPersistence" -}} +{{- if and (eq .Values.qdrant.mode "persistent") .Values.qdrant.localPersistence.enabled (not .Values.dataStorage.enabled) -}} +true +{{- else -}} +false +{{- end -}} +{{- end }} + {{/* Return the MCP server port */}} diff --git a/charts/nextcloud-mcp-server/templates/deployment.yaml b/charts/nextcloud-mcp-server/templates/deployment.yaml index 884384c..cc58101 100644 --- a/charts/nextcloud-mcp-server/templates/deployment.yaml +++ b/charts/nextcloud-mcp-server/templates/deployment.yaml @@ -300,7 +300,7 @@ spec: claimName: {{ include "nextcloud-mcp-server.oauthPvcName" . }} {{- end }} - name: data-storage - {{- if .Values.dataStorage.enabled }} + {{- if eq (include "nextcloud-mcp-server.dataStorageEnabled" .) "true" }} persistentVolumeClaim: claimName: {{ include "nextcloud-mcp-server.dataStoragePvcName" . }} {{- else }} diff --git a/charts/nextcloud-mcp-server/templates/pvc.yaml b/charts/nextcloud-mcp-server/templates/pvc.yaml index aa19990..e07ace0 100644 --- a/charts/nextcloud-mcp-server/templates/pvc.yaml +++ b/charts/nextcloud-mcp-server/templates/pvc.yaml @@ -16,7 +16,21 @@ spec: storage: {{ .Values.auth.oauth.persistence.size }} {{- end }} --- -{{- if and .Values.dataStorage.enabled (not .Values.dataStorage.existingClaim) }} +{{- if and (eq (include "nextcloud-mcp-server.dataStorageEnabled" .) "true") (not .Values.dataStorage.existingClaim) }} +{{- $legacyMultiUserBasic := eq (include "nextcloud-mcp-server.legacyMultiUserBasicPersistence" .) "true" }} +{{- $legacyQdrant := eq (include "nextcloud-mcp-server.legacyQdrantPersistence" .) "true" }} +{{- $accessMode := .Values.dataStorage.accessMode }} +{{- $storageClass := .Values.dataStorage.storageClass }} +{{- $size := .Values.dataStorage.size }} +{{- if $legacyMultiUserBasic }} +{{- $accessMode = .Values.auth.multiUserBasic.persistence.accessMode }} +{{- $storageClass = .Values.auth.multiUserBasic.persistence.storageClass }} +{{- $size = .Values.auth.multiUserBasic.persistence.size }} +{{- else if $legacyQdrant }} +{{- $accessMode = .Values.qdrant.localPersistence.accessMode }} +{{- $storageClass = .Values.qdrant.localPersistence.storageClass }} +{{- $size = .Values.qdrant.localPersistence.size }} +{{- end }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -25,11 +39,11 @@ metadata: {{- include "nextcloud-mcp-server.labels" . | nindent 4 }} spec: accessModes: - - {{ .Values.dataStorage.accessMode }} - {{- if .Values.dataStorage.storageClass }} - storageClassName: {{ .Values.dataStorage.storageClass }} + - {{ $accessMode }} + {{- if $storageClass }} + storageClassName: {{ $storageClass }} {{- end }} resources: requests: - storage: {{ .Values.dataStorage.size }} + storage: {{ $size }} {{- end }}