From 3c8f644ac0f41e3b27ff9ae0d170a688ee212b18 Mon Sep 17 00:00:00 2001 From: jiuyu Date: Thu, 16 Jan 2025 11:52:14 +0800 Subject: [PATCH] Feature: add datasetReferenceLabel to all the resources created by fluid Signed-off-by: jiuyu --- charts/alluxio/templates/fuse/daemonset.yaml | 1 + .../alluxio/templates/master/statefulset.yaml | 2 + .../alluxio/templates/worker/statefulset.yaml | 3 +- charts/efc/templates/worker/statefulset.yaml | 4 +- .../alluxio/templates/cronjob.yaml | 1 + .../goosefs/templates/cronjob.yaml | 1 + .../jindo/templates/cronjob.yaml | 1 + .../jindocache/templates/cronjob.yaml | 1 + .../jindofsx/templates/cronjob.yaml | 1 + .../juicefs/templates/cronjob.yaml | 1 + .../juicefs/templates/cronjob.yaml | 1 + .../juicefs/templates/job.yaml | 2 +- .../juicefs/templates/statefulset.yaml | 2 +- .../templates/fuse/client-daemonset.yaml | 1 + charts/goosefs/templates/fuse/daemonset.yaml | 1 + .../goosefs/templates/master/statefulset.yaml | 1 + .../goosefs/templates/worker/statefulset.yaml | 4 +- .../jindocache/templates/fuse/daemonset.yaml | 1 + .../templates/master/statefulset.yaml | 1 + .../templates/worker/statefulset.yaml | 4 +- charts/jindofs/templates/fuse/daemonset.yaml | 1 + .../jindofs/templates/master/statefulset.yaml | 1 + .../jindofs/templates/worker/statefulset.yaml | 4 +- charts/jindofsx/templates/fuse/daemonset.yaml | 1 + .../templates/master/statefulset.yaml | 1 + .../templates/worker/statefulset.yaml | 4 +- charts/juicefs/templates/fuse/daemonset.yaml | 1 + .../juicefs/templates/worker/statefulset.yaml | 4 +- .../library/templates/_recommended_labels.tpl | 1 + charts/thin/templates/fuse/daemonset.yaml | 1 + .../thin/templates/worker/statefuleset.yaml | 4 +- charts/vineyard/templates/fuse/daemonset.yaml | 1 + .../templates/master/statefulset.yaml | 1 + .../templates/worker/statefulset.yaml | 10 +-- pkg/application/inject/fuse/injector_test.go | 42 ++++++------ .../inject/fuse/mutator/mutator_default.go | 2 +- .../inject/fuse/poststart/check_fuse_app.go | 1 - .../fuse/poststart/script_gen_helper.go | 5 ++ pkg/common/label.go | 4 ++ pkg/controllers/runtime_controller.go | 8 +++ pkg/databackup/value.go | 21 +++--- pkg/dataload/value.go | 7 +- pkg/datamigrate/value.go | 8 +-- pkg/ddc/alluxio/backup_data.go | 7 ++ pkg/ddc/alluxio/load_data.go | 7 +- pkg/ddc/alluxio/master_internal.go | 4 +- pkg/ddc/alluxio/transform.go | 2 +- pkg/ddc/alluxio/types.go | 4 +- pkg/ddc/base/label.go | 14 ++-- pkg/ddc/base/runtime.go | 14 ++-- pkg/ddc/efc/create_volume.go | 3 +- pkg/ddc/efc/master_internal.go | 4 +- pkg/ddc/efc/transform.go | 2 +- pkg/ddc/efc/types.go | 22 +++---- pkg/ddc/goosefs/load_data.go | 7 +- pkg/ddc/goosefs/master_internal.go | 4 +- pkg/ddc/goosefs/transform.go | 2 +- pkg/ddc/goosefs/types.go | 4 +- pkg/ddc/jindo/load_data.go | 7 +- pkg/ddc/jindo/master_internal.go | 4 +- pkg/ddc/jindo/transform.go | 2 +- pkg/ddc/jindo/types.go | 50 +++++++-------- pkg/ddc/jindocache/load_data.go | 7 +- pkg/ddc/jindocache/master_internal.go | 4 +- pkg/ddc/jindocache/transform.go | 2 +- pkg/ddc/jindocache/types.go | 64 +++++++++---------- pkg/ddc/jindofsx/load_data.go | 7 +- pkg/ddc/jindofsx/master_internal.go | 4 +- pkg/ddc/jindofsx/transform.go | 2 +- pkg/ddc/jindofsx/types.go | 64 +++++++++---------- pkg/ddc/juicefs/data_load.go | 7 +- pkg/ddc/juicefs/data_migrate.go | 2 +- pkg/ddc/juicefs/master_internal.go | 4 +- pkg/ddc/juicefs/transform.go | 2 +- pkg/ddc/juicefs/type.go | 8 +-- pkg/ddc/thin/master_internal.go | 4 +- pkg/ddc/thin/referencedataset/cm.go | 17 +++-- pkg/ddc/thin/referencedataset/volume.go | 2 + pkg/ddc/thin/transform.go | 2 +- pkg/ddc/thin/type.go | 4 +- pkg/ddc/vineyard/master_internal.go | 4 +- pkg/ddc/vineyard/transform.go | 2 +- pkg/ddc/vineyard/type.go | 4 +- pkg/utils/crtl_utils.go | 5 ++ pkg/utils/dataset/volume/create.go | 6 +- pkg/utils/dataset_runtime.go | 3 + pkg/utils/kubeclient/configmap.go | 11 +++- pkg/utils/kubeclient/configmap_test.go | 2 +- pkg/utils/kubeclient/secret.go | 19 ++++-- pkg/utils/label.go | 32 ++++++++++ 90 files changed, 382 insertions(+), 242 deletions(-) diff --git a/charts/alluxio/templates/fuse/daemonset.yaml b/charts/alluxio/templates/fuse/daemonset.yaml index affd0bb6436..1191461a6a1 100644 --- a/charts/alluxio/templates/fuse/daemonset.yaml +++ b/charts/alluxio/templates/fuse/daemonset.yaml @@ -59,6 +59,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: alluxio-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.fuse.labels }} {{- range $key, $val := .Values.fuse.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/alluxio/templates/master/statefulset.yaml b/charts/alluxio/templates/master/statefulset.yaml index afc8c9071e0..81ca429b13c 100644 --- a/charts/alluxio/templates/master/statefulset.yaml +++ b/charts/alluxio/templates/master/statefulset.yaml @@ -31,6 +31,7 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: alluxio-master + fluid.io/dataset: {{ .Values.ownedDatasetReference }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: {{- if .Values.owner.enabled }} @@ -67,6 +68,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: alluxio-master + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.master.labels }} {{- range $key, $val := .Values.master.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/alluxio/templates/worker/statefulset.yaml b/charts/alluxio/templates/worker/statefulset.yaml index f3700202e86..3e8dae5fca8 100644 --- a/charts/alluxio/templates/worker/statefulset.yaml +++ b/charts/alluxio/templates/worker/statefulset.yaml @@ -23,7 +23,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: alluxio-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -60,8 +59,8 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: alluxio-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/efc/templates/worker/statefulset.yaml b/charts/efc/templates/worker/statefulset.yaml index 1e7c5912fa7..285a1026c2a 100644 --- a/charts/efc/templates/worker/statefulset.yaml +++ b/charts/efc/templates/worker/statefulset.yaml @@ -8,7 +8,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: efc-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -45,8 +44,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: efc-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} fluid.io/dataset-placement: {{ .Values.placement }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-dataloader/alluxio/templates/cronjob.yaml b/charts/fluid-dataloader/alluxio/templates/cronjob.yaml index 57618a11953..2e9a2c337e1 100644 --- a/charts/fluid-dataloader/alluxio/templates/cronjob.yaml +++ b/charts/fluid-dataloader/alluxio/templates/cronjob.yaml @@ -55,6 +55,7 @@ spec: app: alluxio cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} {{- if .Values.dataloader.labels }} {{- range $key, $val := .Values.dataloader.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-dataloader/goosefs/templates/cronjob.yaml b/charts/fluid-dataloader/goosefs/templates/cronjob.yaml index d23959a0569..0fe4c456ac5 100644 --- a/charts/fluid-dataloader/goosefs/templates/cronjob.yaml +++ b/charts/fluid-dataloader/goosefs/templates/cronjob.yaml @@ -47,6 +47,7 @@ spec: app: goosefs cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} spec: {{- include "library.fluid.dataload.cronJobCommonTemplateSpec" . | nindent 10 }} containers: diff --git a/charts/fluid-dataloader/jindo/templates/cronjob.yaml b/charts/fluid-dataloader/jindo/templates/cronjob.yaml index 47255ec4d25..c70cb2c08c9 100644 --- a/charts/fluid-dataloader/jindo/templates/cronjob.yaml +++ b/charts/fluid-dataloader/jindo/templates/cronjob.yaml @@ -50,6 +50,7 @@ spec: app: jindofs cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} spec: {{- include "library.fluid.dataload.cronJobCommonTemplateSpec" . | nindent 10 }} containers: diff --git a/charts/fluid-dataloader/jindocache/templates/cronjob.yaml b/charts/fluid-dataloader/jindocache/templates/cronjob.yaml index 0d40402b6b7..51b921ea3e3 100644 --- a/charts/fluid-dataloader/jindocache/templates/cronjob.yaml +++ b/charts/fluid-dataloader/jindocache/templates/cronjob.yaml @@ -55,6 +55,7 @@ spec: app: jindocache cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} {{- if .Values.dataloader.labels }} {{- range $key, $val := .Values.dataloader.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-dataloader/jindofsx/templates/cronjob.yaml b/charts/fluid-dataloader/jindofsx/templates/cronjob.yaml index 1d2d6248aa8..8d325f44d44 100644 --- a/charts/fluid-dataloader/jindofsx/templates/cronjob.yaml +++ b/charts/fluid-dataloader/jindofsx/templates/cronjob.yaml @@ -55,6 +55,7 @@ spec: app: jondofsx cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} {{- if .Values.dataloader.labels }} {{- range $key, $val := .Values.dataloader.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-dataloader/juicefs/templates/cronjob.yaml b/charts/fluid-dataloader/juicefs/templates/cronjob.yaml index 90282ec4cc8..ebe13b38de1 100644 --- a/charts/fluid-dataloader/juicefs/templates/cronjob.yaml +++ b/charts/fluid-dataloader/juicefs/templates/cronjob.yaml @@ -55,6 +55,7 @@ spec: app: juicefs cronjob: {{ printf "%s-job" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.dataloader.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} {{- if .Values.dataloader.labels }} {{- range $key, $val := .Values.dataloader.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-datamigrate/juicefs/templates/cronjob.yaml b/charts/fluid-datamigrate/juicefs/templates/cronjob.yaml index a9673452e32..0bc0848a2c2 100644 --- a/charts/fluid-datamigrate/juicefs/templates/cronjob.yaml +++ b/charts/fluid-datamigrate/juicefs/templates/cronjob.yaml @@ -47,6 +47,7 @@ spec: app: juicefs cronjob: {{ printf "%s-migrate" .Release.Name }} targetDataset: {{ required "targetDataset should be set" .Values.datamigrate.targetDataset }} + {{- include "library.fluid.labels" . | nindent 12 }} {{- if .Values.datamigrate.labels }} {{- range $key, $val := .Values.datamigrate.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/fluid-datamigrate/juicefs/templates/job.yaml b/charts/fluid-datamigrate/juicefs/templates/job.yaml index a5f47bf2017..9b2ad5c76ec 100644 --- a/charts/fluid-datamigrate/juicefs/templates/job.yaml +++ b/charts/fluid-datamigrate/juicefs/templates/job.yaml @@ -39,7 +39,7 @@ spec: role: datamigrate-pod app: juicefs targetDataset: {{ required "targetDataset should be set" .Values.datamigrate.targetDataset }} - fluid.io/operation: migrate-{{ .Values.fullNamespacedNameOverride }} + fluid.io/operation: migrate-{{ .Values.ownedDatasetReference }} {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.datamigrate.labels }} {{- range $key, $val := .Values.datamigrate.labels }} diff --git a/charts/fluid-datamigrate/juicefs/templates/statefulset.yaml b/charts/fluid-datamigrate/juicefs/templates/statefulset.yaml index e83699c44e7..6d51007d40d 100644 --- a/charts/fluid-datamigrate/juicefs/templates/statefulset.yaml +++ b/charts/fluid-datamigrate/juicefs/templates/statefulset.yaml @@ -34,7 +34,7 @@ spec: metadata: labels: app: {{ printf "%s-workers" .Release.Name }} - fluid.io/operation: migrate-{{ .Values.fullNamespacedNameOverride }} + fluid.io/operation: migrate-{{ .Values.ownedDatasetReference }} spec: containers: - name: worker diff --git a/charts/goosefs/templates/fuse/client-daemonset.yaml b/charts/goosefs/templates/fuse/client-daemonset.yaml index 53d242a60ab..18262d07512 100644 --- a/charts/goosefs/templates/fuse/client-daemonset.yaml +++ b/charts/goosefs/templates/fuse/client-daemonset.yaml @@ -26,6 +26,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: goosefs-fuse-client + {{- include "library.fluid.labels" . | nindent 8 }} spec: tolerations: - operator: Exists diff --git a/charts/goosefs/templates/fuse/daemonset.yaml b/charts/goosefs/templates/fuse/daemonset.yaml index 0da2decb3f8..e479f4870b6 100644 --- a/charts/goosefs/templates/fuse/daemonset.yaml +++ b/charts/goosefs/templates/fuse/daemonset.yaml @@ -35,6 +35,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: goosefs-fuse + {{- include "library.fluid.labels" . | nindent 8 }} spec: {{- if .Values.fuse.criticalPod }} priorityClassName: system-node-critical diff --git a/charts/goosefs/templates/master/statefulset.yaml b/charts/goosefs/templates/master/statefulset.yaml index 7026d0c9cbc..1f71aa1fe5e 100644 --- a/charts/goosefs/templates/master/statefulset.yaml +++ b/charts/goosefs/templates/master/statefulset.yaml @@ -44,6 +44,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: goosefs-master + {{- include "library.fluid.labels" . | nindent 8 }} spec: enableServiceLinks: false hostNetwork: {{ $hostNetwork }} diff --git a/charts/goosefs/templates/worker/statefulset.yaml b/charts/goosefs/templates/worker/statefulset.yaml index bf7033936cd..c33511a405c 100644 --- a/charts/goosefs/templates/worker/statefulset.yaml +++ b/charts/goosefs/templates/worker/statefulset.yaml @@ -12,7 +12,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: goosefs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} spec: @@ -37,8 +36,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: goosefs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} spec: enableServiceLinks: false hostNetwork: {{ $hostNetwork }} diff --git a/charts/jindocache/templates/fuse/daemonset.yaml b/charts/jindocache/templates/fuse/daemonset.yaml index fc20a0818a3..63dea011b59 100755 --- a/charts/jindocache/templates/fuse/daemonset.yaml +++ b/charts/jindocache/templates/fuse/daemonset.yaml @@ -45,6 +45,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.fuse.labels }} {{- range $key, $val := .Values.fuse.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/jindocache/templates/master/statefulset.yaml b/charts/jindocache/templates/master/statefulset.yaml index 5ec924ffd98..b34040e3be5 100755 --- a/charts/jindocache/templates/master/statefulset.yaml +++ b/charts/jindocache/templates/master/statefulset.yaml @@ -48,6 +48,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-master + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.master.labels }} {{- range $key, $val := .Values.master.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/jindocache/templates/worker/statefulset.yaml b/charts/jindocache/templates/worker/statefulset.yaml index 9709a0490a5..7453bef671a 100755 --- a/charts/jindocache/templates/worker/statefulset.yaml +++ b/charts/jindocache/templates/worker/statefulset.yaml @@ -13,7 +13,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -49,8 +48,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/jindofs/templates/fuse/daemonset.yaml b/charts/jindofs/templates/fuse/daemonset.yaml index cb5beb68b5f..70540dcd13e 100755 --- a/charts/jindofs/templates/fuse/daemonset.yaml +++ b/charts/jindofs/templates/fuse/daemonset.yaml @@ -41,6 +41,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.labels }} {{ toYaml .Values.labels | trim | indent 8 }} {{- end }} diff --git a/charts/jindofs/templates/master/statefulset.yaml b/charts/jindofs/templates/master/statefulset.yaml index 1e861cea835..2aeafd12287 100755 --- a/charts/jindofs/templates/master/statefulset.yaml +++ b/charts/jindofs/templates/master/statefulset.yaml @@ -43,6 +43,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-master + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.labels }} {{ toYaml .Values.labels | trim | indent 8 }} {{- end }} diff --git a/charts/jindofs/templates/worker/statefulset.yaml b/charts/jindofs/templates/worker/statefulset.yaml index 538f28f9e26..30b6779a35b 100755 --- a/charts/jindofs/templates/worker/statefulset.yaml +++ b/charts/jindofs/templates/worker/statefulset.yaml @@ -13,7 +13,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -44,8 +43,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.labels }} {{ toYaml .Values.labels | trim | indent 8 }} {{- end }} diff --git a/charts/jindofsx/templates/fuse/daemonset.yaml b/charts/jindofsx/templates/fuse/daemonset.yaml index d2f99e1c513..21e7d462f94 100755 --- a/charts/jindofsx/templates/fuse/daemonset.yaml +++ b/charts/jindofsx/templates/fuse/daemonset.yaml @@ -45,6 +45,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.fuse.labels }} {{- range $key, $val := .Values.fuse.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/jindofsx/templates/master/statefulset.yaml b/charts/jindofsx/templates/master/statefulset.yaml index c9b577049ac..f73895c550e 100755 --- a/charts/jindofsx/templates/master/statefulset.yaml +++ b/charts/jindofsx/templates/master/statefulset.yaml @@ -48,6 +48,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-master + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.master.labels }} {{- range $key, $val := .Values.master.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/jindofsx/templates/worker/statefulset.yaml b/charts/jindofsx/templates/worker/statefulset.yaml index 9c2a2b9f687..368dedc1fde 100755 --- a/charts/jindofsx/templates/worker/statefulset.yaml +++ b/charts/jindofsx/templates/worker/statefulset.yaml @@ -13,7 +13,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -49,8 +48,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: jindofs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/juicefs/templates/fuse/daemonset.yaml b/charts/juicefs/templates/fuse/daemonset.yaml index 3734ffb8281..a0df9712e96 100644 --- a/charts/juicefs/templates/fuse/daemonset.yaml +++ b/charts/juicefs/templates/fuse/daemonset.yaml @@ -45,6 +45,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: juicefs-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.fuse.labels }} {{- range $key, $val := .Values.fuse.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/juicefs/templates/worker/statefulset.yaml b/charts/juicefs/templates/worker/statefulset.yaml index b123bd43ed8..c7d68c41ee8 100644 --- a/charts/juicefs/templates/worker/statefulset.yaml +++ b/charts/juicefs/templates/worker/statefulset.yaml @@ -9,7 +9,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: juicefs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -48,8 +47,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: juicefs-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote}}: {{ $val | quote }} diff --git a/charts/library/templates/_recommended_labels.tpl b/charts/library/templates/_recommended_labels.tpl index da374930aa9..d992170304b 100644 --- a/charts/library/templates/_recommended_labels.tpl +++ b/charts/library/templates/_recommended_labels.tpl @@ -8,4 +8,5 @@ app.kubernetes.io/name: {{ .Chart.Name }} app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} fluid.io/managed-by: fluid +fluid.io/dataset-uuid: {{ .Values.ownedDatasetReference }} {{- end }} diff --git a/charts/thin/templates/fuse/daemonset.yaml b/charts/thin/templates/fuse/daemonset.yaml index fd9a5dfb4c1..625db9ebc15 100644 --- a/charts/thin/templates/fuse/daemonset.yaml +++ b/charts/thin/templates/fuse/daemonset.yaml @@ -38,6 +38,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: thin-fuse + {{- include "library.fluid.labels" . | nindent 8 }} spec: {{- if .Values.fuse.imagePullSecrets }} imagePullSecrets: diff --git a/charts/thin/templates/worker/statefuleset.yaml b/charts/thin/templates/worker/statefuleset.yaml index b11b6647d21..9d78e2590ca 100644 --- a/charts/thin/templates/worker/statefuleset.yaml +++ b/charts/thin/templates/worker/statefuleset.yaml @@ -8,7 +8,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: thin-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} fluid.io/dataset-placement: {{ .Values.placement }} {{- include "library.fluid.labels" . | nindent 4 }} ownerReferences: @@ -41,8 +40,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: thin-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} + fluid.io/dataset: {{ .Values.ownedDatasetReference }} fluid.io/dataset-placement: {{ .Values.placement }} + {{- include "library.fluid.labels" . | nindent 8 }} spec: {{- if .Values.worker.imagePullSecrets }} imagePullSecrets: diff --git a/charts/vineyard/templates/fuse/daemonset.yaml b/charts/vineyard/templates/fuse/daemonset.yaml index f2b533b7e61..cc3bebbc8b1 100644 --- a/charts/vineyard/templates/fuse/daemonset.yaml +++ b/charts/vineyard/templates/fuse/daemonset.yaml @@ -57,6 +57,7 @@ spec: chart: {{ $chart }} release: {{ .Release.Name }} role: vineyard-fuse + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.fuse.labels }} {{- range $key, $val := .Values.fuse.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/vineyard/templates/master/statefulset.yaml b/charts/vineyard/templates/master/statefulset.yaml index 9e24bf99d07..52e6f76934d 100644 --- a/charts/vineyard/templates/master/statefulset.yaml +++ b/charts/vineyard/templates/master/statefulset.yaml @@ -66,6 +66,7 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: vineyard-master + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.master.labels }} {{- range $key, $val := .Values.master.labels }} {{ $key | quote }}: {{ $val | quote }} diff --git a/charts/vineyard/templates/worker/statefulset.yaml b/charts/vineyard/templates/worker/statefulset.yaml index b6e06109674..f8c0466edc0 100644 --- a/charts/vineyard/templates/worker/statefulset.yaml +++ b/charts/vineyard/templates/worker/statefulset.yaml @@ -25,7 +25,6 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: vineyard-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} {{- include "library.fluid.labels" . | nindent 4 }} {{- if .Values.owner.enabled }} ownerReferences: @@ -46,7 +45,7 @@ spec: chart: {{ $chart }} release: {{ .Release.Name }} role: vineyard-worker - app.kubernetes.io/instance: {{ .Values.fullNamespacedNameOverride }}-worker + app.kubernetes.io/instance: {{ .Values.ownedDatasetReference }}-worker template: metadata: annotations: @@ -62,8 +61,9 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} role: vineyard-worker - fluid.io/dataset: {{ .Values.fullNamespacedNameOverride }} - app.kubernetes.io/instance: {{ .Values.fullNamespacedNameOverride }}-worker + app.kubernetes.io/instance: {{ .Values.ownedDatasetReference }}-worker + fluid.io/dataset: {{ .Values.ownedDatasetReference }} + {{- include "library.fluid.labels" . | nindent 8 }} {{- if .Values.worker.labels }} {{- range $key, $val := .Values.worker.labels }} {{ $key | quote }}: {{ $val | quote }} @@ -215,5 +215,5 @@ spec: - key: app.kubernetes.io/instance operator: In values: - - {{ .Values.fullNamespacedNameOverride }}-worker + - {{ .Values.ownedDatasetReference }}-worker topologyKey: "kubernetes.io/hostname" diff --git a/pkg/application/inject/fuse/injector_test.go b/pkg/application/inject/fuse/injector_test.go index 2cceca9865b..8cf0b8a4f21 100644 --- a/pkg/application/inject/fuse/injector_test.go +++ b/pkg/application/inject/fuse/injector_test.go @@ -205,7 +205,7 @@ func TestInjectPod(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate"), }, }, Spec: corev1.PodSpec{ @@ -472,7 +472,7 @@ func TestInjectPod(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset1"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset1"), }, }, Spec: corev1.PodSpec{ @@ -742,7 +742,7 @@ func TestInjectPod(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "customizedenv"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "customizedenv"), }, }, Spec: corev1.PodSpec{ @@ -1015,7 +1015,7 @@ func TestInjectPod(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset-conflict"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset-conflict"), }, }, Spec: corev1.PodSpec{ @@ -1723,7 +1723,7 @@ func TestInjectPodWithMultiplePVC(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate"), }, }, Spec: corev1.PodSpec{ @@ -2126,8 +2126,8 @@ func TestInjectPodWithMultiplePVC(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset1"), - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s_%s", "big-data", "dataset2"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset1"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s-%s", "big-data", "dataset2"), }, }, Spec: corev1.PodSpec{ @@ -2696,7 +2696,7 @@ func TestInjectPodWithDatasetSubPath(t *testing.T) { Namespace: "ref", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "ref", "subpath"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "ref", "subpath"), }, }, Spec: corev1.PodSpec{ @@ -3087,7 +3087,7 @@ func TestInjectPodUnprivileged(t *testing.T) { Labels: map[string]string{ common.InjectFuseSidecar: common.True, common.InjectUnprivilegedFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset"), }, }, Spec: corev1.PodSpec{ @@ -3459,8 +3459,8 @@ func TestInjectPodUnprivileged(t *testing.T) { Labels: map[string]string{ common.InjectFuseSidecar: common.True, common.InjectUnprivilegedFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset1"), - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s_%s", "big-data", "dataset2"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset1"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s-%s", "big-data", "dataset2"), }, }, Spec: corev1.PodSpec{ @@ -3904,8 +3904,8 @@ func TestInjectPodUnprivileged(t *testing.T) { common.InjectFuseSidecar: common.True, common.InjectUnprivilegedFuseSidecar: common.True, common.InjectAppPostStart: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset-a"), - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s_%s", "big-data", "dataset-b"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset-a"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-1"): fmt.Sprintf("%s-%s", "big-data", "dataset-b"), }, }, Spec: corev1.PodSpec{ @@ -4424,7 +4424,7 @@ func TestInjectPodWithInitContainer(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate"), }, }, Spec: corev1.PodSpec{ @@ -4691,8 +4691,8 @@ func TestInjectPodWithInitContainer(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset1"), - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "dataset1"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset1"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "dataset1"), }, }, Spec: corev1.PodSpec{ @@ -5021,8 +5021,8 @@ func TestInjectPodWithInitContainer(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "customizedenv"), - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "customizedenv"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "customizedenv"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "init-fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "customizedenv"), }, }, Spec: corev1.PodSpec{ @@ -5505,7 +5505,7 @@ func TestInjectPodWithEnabledFUSEMetrics(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate"), }, Annotations: map[string]string{ common.AnnotationPrometheusFuseMetricsScrapeKey: common.True, @@ -5782,7 +5782,7 @@ func TestInjectPodWithEnabledFUSEMetrics(t *testing.T) { Namespace: "big-data", Labels: map[string]string{ common.InjectFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate2"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate2"), }, }, Spec: corev1.PodSpec{ @@ -6057,7 +6057,7 @@ func TestInjectPodWithEnabledFUSEMetrics(t *testing.T) { Labels: map[string]string{ common.InjectFuseSidecar: common.True, common.InjectUnprivilegedFuseSidecar: common.True, - fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s_%s", "big-data", "duplicate3"), + fmt.Sprintf("%s%s", common.LabelContainerDatasetMappingKeyPrefix, "fluid-fuse-0"): fmt.Sprintf("%s-%s", "big-data", "duplicate3"), }, Annotations: map[string]string{ common.AnnotationPrometheusFuseMetricsScrapeKey: common.True, diff --git a/pkg/application/inject/fuse/mutator/mutator_default.go b/pkg/application/inject/fuse/mutator/mutator_default.go index 26ecf941a75..80934947c45 100644 --- a/pkg/application/inject/fuse/mutator/mutator_default.go +++ b/pkg/application/inject/fuse/mutator/mutator_default.go @@ -312,7 +312,7 @@ func (helper *defaultMutatorHelper) prependFuseContainer(asInit bool) error { helper.Specs.MetaObj.Labels = map[string]string{} } containerDatasetMappingLabelKey := common.LabelContainerDatasetMappingKeyPrefix + fuseContainer.Name - helper.Specs.MetaObj.Labels[containerDatasetMappingLabelKey] = fmt.Sprintf("%s_%s", helper.runtimeInfo.GetNamespace(), helper.runtimeInfo.GetName()) + helper.Specs.MetaObj.Labels[containerDatasetMappingLabelKey] = utils.GetDatasetReferenceValue(helper.runtimeInfo.GetNamespace(), helper.runtimeInfo.GetName(), helper.runtimeInfo.GetNamespacedNameAlias()) return nil } diff --git a/pkg/application/inject/fuse/poststart/check_fuse_app.go b/pkg/application/inject/fuse/poststart/check_fuse_app.go index d1f9a4cdebd..3345e503464 100644 --- a/pkg/application/inject/fuse/poststart/check_fuse_app.go +++ b/pkg/application/inject/fuse/poststart/check_fuse_app.go @@ -18,7 +18,6 @@ package poststart import ( "fmt" - corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/ptr" diff --git a/pkg/application/inject/fuse/poststart/script_gen_helper.go b/pkg/application/inject/fuse/poststart/script_gen_helper.go index ffc09fde772..19d80aa121e 100644 --- a/pkg/application/inject/fuse/poststart/script_gen_helper.go +++ b/pkg/application/inject/fuse/poststart/script_gen_helper.go @@ -17,6 +17,8 @@ limitations under the License. package poststart import ( + "github.com/fluid-cloudnative/fluid/pkg/common" + "github.com/fluid-cloudnative/fluid/pkg/utils" "strings" corev1 "k8s.io/api/core/v1" @@ -41,6 +43,9 @@ func (helper *scriptGeneratorHelper) BuildConfigMap(ownerReference metav1.OwnerR Name: configMapKey.Name, Namespace: configMapKey.Namespace, OwnerReferences: []metav1.OwnerReference{ownerReference}, + Labels: map[string]string{ + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(configMapKey.Namespace, ownerReference.Name, string(ownerReference.UID)), + }, }, Data: data, } diff --git a/pkg/common/label.go b/pkg/common/label.go index 7d2b86f2c1b..329d6547fed 100644 --- a/pkg/common/label.go +++ b/pkg/common/label.go @@ -46,6 +46,10 @@ const ( // i.e. fluid.io/managed-by LabelAnnotationManagedBy = LabelAnnotationPrefix + "managed-by" + // LabelAnnotationCopyFrom indicates a resource that is copied from another resource + // i.e. fluid.io/copied-from + LabelAnnotationCopyFrom = LabelAnnotationPrefix + "copied-from" + // fluid adminssion webhook inject flag // i.e. fluid.io/enable-injection EnableFluidInjectionFlag = LabelAnnotationPrefix + "enable-injection" diff --git a/pkg/controllers/runtime_controller.go b/pkg/controllers/runtime_controller.go index 55624b9807b..822f23ac364 100644 --- a/pkg/controllers/runtime_controller.go +++ b/pkg/controllers/runtime_controller.go @@ -139,6 +139,13 @@ func (r *RuntimeReconciler) ReconcileInternal(ctx cruntime.ReconcileRequestConte if !utils.ContainsOwners(objectMeta.GetOwnerReferences(), dataset) { return r.AddOwnerAndRequeue(ctx, dataset) } + + if errs := utils.PatchDatasetLabelToObjects(ctx.Client, + utils.GetDatasetReferenceValue(dataset.GetNamespace(), dataset.GetName(), string(dataset.UID)), + dataset, runtime); len(errs) > 0 { + return utils.RequeueAfterInterval(time.Duration(5 * time.Second)) + } + if !dataset.CanbeBound(ctx.Name, ctx.Namespace, ctx.Category) { ctx.Log.Info("the dataset can't be bound to the runtime, because it's already bound to another runtime ", "dataset", dataset.Name) @@ -332,6 +339,7 @@ func (r *RuntimeReconciler) AddOwnerAndRequeue(ctx cruntime.ReconcileRequestCont Name: dataset.Name, UID: dataset.UID, })) + if err := r.Update(ctx, ctx.Runtime); err != nil { ctx.Log.Error(err, "Failed to add ownerreference", "StatusUpdateError", ctx) return utils.RequeueIfError(err) diff --git a/pkg/databackup/value.go b/pkg/databackup/value.go index c007da755b0..ad202e8825f 100644 --- a/pkg/databackup/value.go +++ b/pkg/databackup/value.go @@ -31,16 +31,17 @@ type DataBackupValue struct { // DataBackup defines values used in DataBackup helm chart type DataBackup struct { - Namespace string `yaml:"namespace,omitempty"` - Dataset string `yaml:"dataset,omitempty"` - Name string `yaml:"name,omitempty"` - NodeName string `yaml:"nodeName,omitempty"` - Image string `yaml:"image,omitempty"` - JavaEnv string `yaml:"javaEnv,omitempty"` - Workdir string `yaml:"workdir,omitempty"` - PVCName string `yaml:"pvcName,omitempty"` - Path string `yaml:"path,omitempty"` - RuntimeType string `yaml:"runtimeType,omitempty"` + Namespace string `yaml:"namespace,omitempty"` + Dataset string `yaml:"dataset,omitempty"` + OwnedDatasetReference string `yaml:"ownedDatasetReference,omitempty"` + Name string `yaml:"name,omitempty"` + NodeName string `yaml:"nodeName,omitempty"` + Image string `yaml:"image,omitempty"` + JavaEnv string `yaml:"javaEnv,omitempty"` + Workdir string `yaml:"workdir,omitempty"` + PVCName string `yaml:"pvcName,omitempty"` + Path string `yaml:"path,omitempty"` + RuntimeType string `yaml:"runtimeType,omitempty"` // image pull secrets ImagePullSecrets []corev1.LocalObjectReference `yaml:"imagePullSecrets,omitempty"` Affinity *corev1.Affinity `yaml:"affinity,omitempty"` diff --git a/pkg/dataload/value.go b/pkg/dataload/value.go index 295b20c09c8..b7b246ff046 100644 --- a/pkg/dataload/value.go +++ b/pkg/dataload/value.go @@ -23,9 +23,10 @@ import ( // DataLoadValue defines the value yaml file used in DataLoad helm chart type DataLoadValue struct { - Name string `json:"name"` - Owner *common.OwnerReference `json:"owner,omitempty"` - DataLoadInfo DataLoadInfo `json:"dataloader"` + Name string `json:"name"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Owner *common.OwnerReference `json:"owner,omitempty"` + DataLoadInfo DataLoadInfo `json:"dataloader"` } // DataLoadInfo defines values used in DataLoad helm chart diff --git a/pkg/datamigrate/value.go b/pkg/datamigrate/value.go index bbf25f6c3ac..3e5e793d02f 100644 --- a/pkg/datamigrate/value.go +++ b/pkg/datamigrate/value.go @@ -24,10 +24,10 @@ import ( ) type DataMigrateValue struct { - Name string `json:"name"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` - Owner *common.OwnerReference `json:"owner,omitempty"` - DataMigrateInfo DataMigrateInfo `json:"datamigrate"` + Name string `json:"name"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Owner *common.OwnerReference `json:"owner,omitempty"` + DataMigrateInfo DataMigrateInfo `json:"datamigrate"` } type DataMigrateInfo struct { diff --git a/pkg/ddc/alluxio/backup_data.go b/pkg/ddc/alluxio/backup_data.go index 8e2f660ee90..842907ff913 100644 --- a/pkg/ddc/alluxio/backup_data.go +++ b/pkg/ddc/alluxio/backup_data.go @@ -126,6 +126,13 @@ func (e *AlluxioEngine) generateDataBackupValueFile(ctx cruntime.ReconcileReques RuntimeType: common.AlluxioRuntime, ImagePullSecrets: imagePullSecrets, } + + dataset, err := utils.GetDataset(e.Client, dataBackup.Dataset, dataBackup.Namespace) + if err != nil { + return + } + dataBackup.OwnedDatasetReference = utils.GetDatasetReferenceValue(dataset.Namespace, dataset.Name, string(dataset.UID)) + pvcName, path, err := utils.ParseBackupRestorePath(databackup.Spec.BackupPath) if err != nil { return diff --git a/pkg/ddc/alluxio/load_data.go b/pkg/ddc/alluxio/load_data.go index dd2a7e81fba..362a5e85eb2 100644 --- a/pkg/ddc/alluxio/load_data.go +++ b/pkg/ddc/alluxio/load_data.go @@ -162,9 +162,10 @@ func (e *AlluxioEngine) genDataLoadValue(image string, targetDataset *datav1alph } dataloadInfo.TargetPaths = targetPaths dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil diff --git a/pkg/ddc/alluxio/master_internal.go b/pkg/ddc/alluxio/master_internal.go index f60e8dea4ac..b42f8885229 100644 --- a/pkg/ddc/alluxio/master_internal.go +++ b/pkg/ddc/alluxio/master_internal.go @@ -99,7 +99,9 @@ func (e *AlluxioEngine) generateAlluxioValueFile(runtime *datav1alpha1.AlluxioRu } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/alluxio/transform.go b/pkg/ddc/alluxio/transform.go index 68dff9c6759..9db446aef75 100644 --- a/pkg/ddc/alluxio/transform.go +++ b/pkg/ddc/alluxio/transform.go @@ -50,7 +50,7 @@ func (e *AlluxioEngine) transform(runtime *datav1alpha1.AlluxioRuntime) (value * } value.FullnameOverride = e.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) // 1.transform the common part err = e.transformCommonPart(runtime, dataset, value) diff --git a/pkg/ddc/alluxio/types.go b/pkg/ddc/alluxio/types.go index 9baca9bd975..47ef7162138 100644 --- a/pkg/ddc/alluxio/types.go +++ b/pkg/ddc/alluxio/types.go @@ -27,8 +27,8 @@ import ( // The value yaml file type Alluxio struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` common.ImageInfo `json:",inline"` common.UserInfo `json:",inline"` diff --git a/pkg/ddc/base/label.go b/pkg/ddc/base/label.go index 61a11c47ea1..e0a5bba6f5a 100644 --- a/pkg/ddc/base/label.go +++ b/pkg/ddc/base/label.go @@ -24,23 +24,23 @@ import ( ) func (info *RuntimeInfo) GetLabelNameForMemory() string { - return utils.GetLabelNameForMemory(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetLabelNameForMemory(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.namespacedNameAlias) } func (info *RuntimeInfo) GetLabelNameForDisk() string { - return utils.GetLabelNameForDisk(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetLabelNameForDisk(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.namespacedNameAlias) } func (info *RuntimeInfo) GetLabelNameForTotal() string { - return utils.GetLabelNameForTotal(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetLabelNameForTotal(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.namespacedNameAlias) } func (info *RuntimeInfo) GetCommonLabelName() string { - return utils.GetCommonLabelName(info.IsDeprecatedNodeLabel(), info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetCommonLabelName(info.IsDeprecatedNodeLabel(), info.namespace, info.name, info.namespacedNameAlias) } func (info *RuntimeInfo) GetRuntimeLabelName() string { - return utils.GetRuntimeLabelName(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetRuntimeLabelName(info.IsDeprecatedNodeLabel(), info.runtimeType, info.namespace, info.name, info.namespacedNameAlias) } // GetDatasetNumLabelname get the label to record how much datasets on a node @@ -50,7 +50,7 @@ func (info *RuntimeInfo) GetDatasetNumLabelName() string { // GetFuseLabelName gets the label indicating a fuse running on some node. func (info *RuntimeInfo) GetFuseLabelName() string { - return utils.GetNamespacedNameValueWithPrefix(common.LabelAnnotationFusePrefix, info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetNamespacedNameValueWithPrefix(common.LabelAnnotationFusePrefix, info.namespace, info.name, info.namespacedNameAlias) } func (info *RuntimeInfo) GetExclusiveLabelValue() string { @@ -60,5 +60,5 @@ func (info *RuntimeInfo) GetExclusiveLabelValue() string { return exclusiveLabelValue } - return utils.GetNamespacedNameValueWithPrefix("", info.namespace, info.name, info.overLimitNamespacedNameAlias) + return utils.GetNamespacedNameValueWithPrefix("", info.namespace, info.name, info.namespacedNameAlias) } diff --git a/pkg/ddc/base/runtime.go b/pkg/ddc/base/runtime.go index b3cfcaf5272..4c02010f6c1 100644 --- a/pkg/ddc/base/runtime.go +++ b/pkg/ddc/base/runtime.go @@ -110,10 +110,12 @@ var _ RuntimeInfoInterface = &RuntimeInfo{} // The real Runtime Info should implement type RuntimeInfo struct { - name string - namespace string - overLimitNamespacedNameAlias string - runtimeType string + name string + namespace string + // Use owned dataset uid as namespacedNameAlias + // instead of over length limit namespacedName in label + namespacedNameAlias string + runtimeType string //tieredstore datav1alpha1.TieredStore tieredstoreInfo TieredStoreInfo @@ -280,7 +282,7 @@ func (info *RuntimeInfo) GetNamespace() string { } func (info *RuntimeInfo) GetNamespacedNameAlias() string { - return info.overLimitNamespacedNameAlias + return info.namespacedNameAlias } // GetRuntimeType gets runtime type @@ -303,7 +305,7 @@ func (info *RuntimeInfo) SetNamespacedNameAlias(alias types.UID) { if alias == "" { return } - info.overLimitNamespacedNameAlias = string(alias) + info.namespacedNameAlias = string(alias) } // SetFuseNodeSelector setups the fuse deploy mode diff --git a/pkg/ddc/efc/create_volume.go b/pkg/ddc/efc/create_volume.go index dbdc27e7ff4..3b20591cd71 100644 --- a/pkg/ddc/efc/create_volume.go +++ b/pkg/ddc/efc/create_volume.go @@ -100,7 +100,8 @@ func (e *EFCEngine) createPersistentVolumeForRuntime(runtime base.RuntimeInfoInt Name: pvName, Namespace: runtime.GetNamespace(), Labels: map[string]string{ - runtime.GetCommonLabelName(): "true", + runtime.GetCommonLabelName(): "true", + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(runtime.GetNamespace(), runtime.GetName(), runtime.GetNamespacedNameAlias()), }, Annotations: common.ExpectedFluidAnnotations, }, diff --git a/pkg/ddc/efc/master_internal.go b/pkg/ddc/efc/master_internal.go index 3a938b0d77b..f0d6cdb229d 100644 --- a/pkg/ddc/efc/master_internal.go +++ b/pkg/ddc/efc/master_internal.go @@ -96,7 +96,9 @@ func (e *EFCEngine) generateEFCValueFile(runtime *datav1alpha1.EFCRuntime) (valu } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/efc/transform.go b/pkg/ddc/efc/transform.go index 4e31cc7024f..2e8d9ec2fd7 100644 --- a/pkg/ddc/efc/transform.go +++ b/pkg/ddc/efc/transform.go @@ -47,7 +47,7 @@ func (e *EFCEngine) transform(runtime *datav1alpha1.EFCRuntime) (value *EFC, err } value.FullnameOverride = e.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) err = e.transformMasters(runtime, dataset, value) if err != nil { diff --git a/pkg/ddc/efc/types.go b/pkg/ddc/efc/types.go index f7f7dd6e615..78cc1c05155 100644 --- a/pkg/ddc/efc/types.go +++ b/pkg/ddc/efc/types.go @@ -26,17 +26,17 @@ import ( // The value yaml file type EFC struct { - FullnameOverride string `yaml:"fullnameOverride"` - FullNamespacedNameOverride string `yaml:"fullNamespacedNameOverride"` - PlacementMode string `yaml:"placement,omitempty"` - Master Master `yaml:"master"` - Worker Worker `yaml:"worker"` - Fuse Fuse `yaml:"fuse"` - InitFuse InitFuse `yaml:"initFuse"` - OSAdvise OSAdvise `yaml:"osAdvise"` - Tolerations []v1.Toleration `yaml:"tolerations,omitempty"` - Owner *common.OwnerReference `yaml:"owner,omitempty"` - RuntimeIdentity common.RuntimeIdentity `yaml:"runtimeIdentity,omitempty"` + FullnameOverride string `yaml:"fullnameOverride"` + OwnedDatasetReference string `yaml:"ownedDatasetReference"` + PlacementMode string `yaml:"placement,omitempty"` + Master Master `yaml:"master"` + Worker Worker `yaml:"worker"` + Fuse Fuse `yaml:"fuse"` + InitFuse InitFuse `yaml:"initFuse"` + OSAdvise OSAdvise `yaml:"osAdvise"` + Tolerations []v1.Toleration `yaml:"tolerations,omitempty"` + Owner *common.OwnerReference `yaml:"owner,omitempty"` + RuntimeIdentity common.RuntimeIdentity `yaml:"runtimeIdentity,omitempty"` } type OSAdvise struct { diff --git a/pkg/ddc/goosefs/load_data.go b/pkg/ddc/goosefs/load_data.go index 54ef280ae82..355f8db1cc1 100644 --- a/pkg/ddc/goosefs/load_data.go +++ b/pkg/ddc/goosefs/load_data.go @@ -157,9 +157,10 @@ func (e *GooseFSEngine) genDataLoadValue(image string, targetDataset *datav1alph } dataloadInfo.TargetPaths = targetPaths dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil diff --git a/pkg/ddc/goosefs/master_internal.go b/pkg/ddc/goosefs/master_internal.go index be75b9c258b..eaf07163540 100644 --- a/pkg/ddc/goosefs/master_internal.go +++ b/pkg/ddc/goosefs/master_internal.go @@ -99,7 +99,9 @@ func (e *GooseFSEngine) generateGooseFSValueFile(runtime *datav1alpha1.GooseFSRu } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/goosefs/transform.go b/pkg/ddc/goosefs/transform.go index 3e87baa9d79..b5a2c2b2fa5 100644 --- a/pkg/ddc/goosefs/transform.go +++ b/pkg/ddc/goosefs/transform.go @@ -45,7 +45,7 @@ func (e *GooseFSEngine) transform(runtime *datav1alpha1.GooseFSRuntime) (value * value = &GooseFS{} value.FullnameOverride = e.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) // 1.transform the common part err = e.transformCommonPart(runtime, dataset, value) diff --git a/pkg/ddc/goosefs/types.go b/pkg/ddc/goosefs/types.go index 969a6570989..c85584fd48a 100644 --- a/pkg/ddc/goosefs/types.go +++ b/pkg/ddc/goosefs/types.go @@ -26,8 +26,8 @@ import ( // The value yaml file type GooseFS struct { - FullnameOverride string `yaml:"fullnameOverride"` - FullNamespacedNameOverride string `yaml:"fullNamespacedNameOverride"` + FullnameOverride string `yaml:"fullnameOverride"` + OwnedDatasetReference string `yaml:"ownedDatasetReference"` common.ImageInfo `yaml:",inline"` common.UserInfo `yaml:",inline"` diff --git a/pkg/ddc/jindo/load_data.go b/pkg/ddc/jindo/load_data.go index b14f19d30ce..bb9e7d20464 100644 --- a/pkg/ddc/jindo/load_data.go +++ b/pkg/ddc/jindo/load_data.go @@ -187,9 +187,10 @@ func (e *JindoEngine) genDataLoadValue(image string, runtime *datav1alpha1.Jindo dataloadInfo.Options = options dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil } diff --git a/pkg/ddc/jindo/master_internal.go b/pkg/ddc/jindo/master_internal.go index 2c92f335512..4bb1f0a1bf3 100644 --- a/pkg/ddc/jindo/master_internal.go +++ b/pkg/ddc/jindo/master_internal.go @@ -74,7 +74,9 @@ func (e *JindoEngine) generateJindoValueFile() (valueFileName string, err error) return } - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigmapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigmapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/jindo/transform.go b/pkg/ddc/jindo/transform.go index ef573721012..ec9edf0bdc2 100644 --- a/pkg/ddc/jindo/transform.go +++ b/pkg/ddc/jindo/transform.go @@ -120,7 +120,7 @@ func (e *JindoEngine) transform(runtime *datav1alpha1.JindoRuntime) (value *Jind }, } - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) e.transformNetworkMode(runtime, value) err = e.transformHadoopConfig(runtime, value) diff --git a/pkg/ddc/jindo/types.go b/pkg/ddc/jindo/types.go index 6bbf4948782..fe4925ed7bf 100644 --- a/pkg/ddc/jindo/types.go +++ b/pkg/ddc/jindo/types.go @@ -23,31 +23,31 @@ import ( ) type Jindo struct { - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` - Image string `yaml:"image"` - ImageTag string `yaml:"imageTag"` - ImagePullPolicy string `yaml:"imagePullPolicy"` - FuseImage string `yaml:"fuseImage"` - FuseImageTag string `yaml:"fuseImageTag"` - User int `yaml:"user"` - Group int `yaml:"group"` - FsGroup int `yaml:"fsGroup"` - UseHostNetwork bool `yaml:"useHostNetwork"` - Properties map[string]string `yaml:"properties"` - Master Master `yaml:"master"` - Worker Worker `yaml:"worker"` - Fuse Fuse `yaml:"fuse"` - Mounts Mounts `yaml:"mounts"` - HadoopConfig HadoopConfig `yaml:"hadoopConfig,omitempty"` - Secret string `yaml:"secret,omitempty"` - Tolerations []v1.Toleration `yaml:"tolerations,omitempty"` - InitPortCheck common.InitPortCheck `yaml:"initPortCheck,omitempty"` - Labels map[string]string `yaml:"labels,omitempty"` - LogConfig map[string]string `yaml:"logConfig,omitempty"` - PlacementMode string `yaml:"placement,omitempty"` - Owner *common.OwnerReference `yaml:"owner,omitempty"` - RuntimeIdentity common.RuntimeIdentity `yaml:"runtimeIdentity"` - ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Image string `yaml:"image"` + ImageTag string `yaml:"imageTag"` + ImagePullPolicy string `yaml:"imagePullPolicy"` + FuseImage string `yaml:"fuseImage"` + FuseImageTag string `yaml:"fuseImageTag"` + User int `yaml:"user"` + Group int `yaml:"group"` + FsGroup int `yaml:"fsGroup"` + UseHostNetwork bool `yaml:"useHostNetwork"` + Properties map[string]string `yaml:"properties"` + Master Master `yaml:"master"` + Worker Worker `yaml:"worker"` + Fuse Fuse `yaml:"fuse"` + Mounts Mounts `yaml:"mounts"` + HadoopConfig HadoopConfig `yaml:"hadoopConfig,omitempty"` + Secret string `yaml:"secret,omitempty"` + Tolerations []v1.Toleration `yaml:"tolerations,omitempty"` + InitPortCheck common.InitPortCheck `yaml:"initPortCheck,omitempty"` + Labels map[string]string `yaml:"labels,omitempty"` + LogConfig map[string]string `yaml:"logConfig,omitempty"` + PlacementMode string `yaml:"placement,omitempty"` + Owner *common.OwnerReference `yaml:"owner,omitempty"` + RuntimeIdentity common.RuntimeIdentity `yaml:"runtimeIdentity"` + ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` } type HadoopConfig struct { diff --git a/pkg/ddc/jindocache/load_data.go b/pkg/ddc/jindocache/load_data.go index b422bd7f2b3..97548cf50c6 100644 --- a/pkg/ddc/jindocache/load_data.go +++ b/pkg/ddc/jindocache/load_data.go @@ -186,9 +186,10 @@ func (e *JindoCacheEngine) genDataLoadValue(image string, runtime *datav1alpha1. dataloadInfo.Options = options dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil diff --git a/pkg/ddc/jindocache/master_internal.go b/pkg/ddc/jindocache/master_internal.go index 30ce1eab936..1bc05724c3a 100644 --- a/pkg/ddc/jindocache/master_internal.go +++ b/pkg/ddc/jindocache/master_internal.go @@ -74,7 +74,9 @@ func (e *JindoCacheEngine) generateJindoValueFile() (valueFileName string, err e return } - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/jindocache/transform.go b/pkg/ddc/jindocache/transform.go index d0cfde5c086..9dbda4c2570 100644 --- a/pkg/ddc/jindocache/transform.go +++ b/pkg/ddc/jindocache/transform.go @@ -154,7 +154,7 @@ func (e *JindoCacheEngine) transform(runtime *datav1alpha1.JindoRuntime) (value }, } - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) e.transformNetworkMode(runtime, value) err = e.transformHadoopConfig(runtime, value) diff --git a/pkg/ddc/jindocache/types.go b/pkg/ddc/jindocache/types.go index 01c5736e5c0..479ed86e3cb 100644 --- a/pkg/ddc/jindocache/types.go +++ b/pkg/ddc/jindocache/types.go @@ -22,38 +22,38 @@ import ( ) type Jindo struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` - Image string `json:"image"` - ImageTag string `json:"imageTag"` - ImagePullPolicy string `json:"imagePullPolicy"` - FuseImage string `json:"fuseImage"` - FuseImageTag string `json:"fuseImageTag"` - FuseImagePullPolicy string `json:"fuseImagePullPolicy"` - User int `json:"user"` - Group int `json:"group"` - UseHostNetwork bool `json:"useHostNetwork"` - Properties map[string]string `json:"properties"` - Master Master `json:"master"` - Worker Worker `json:"worker"` - Fuse Fuse `json:"fuse"` - Mounts Mounts `json:"mounts"` - HadoopConfig HadoopConfig `json:"hadoopConfig,omitempty"` - Secret string `json:"secret,omitempty"` - Tolerations []corev1.Toleration `json:"tolerations,omitempty"` - InitPortCheck common.InitPortCheck `json:"initPortCheck,omitempty"` - LogConfig map[string]string `json:"logConfig,omitempty"` - FuseLogConfig map[string]string `json:"fuseLogConfig,omitempty"` - PlacementMode string `json:"placement,omitempty"` - Owner *common.OwnerReference `json:"owner,omitempty"` - RuntimeIdentity common.RuntimeIdentity `json:"runtimeIdentity"` - ClusterDomain string `json:"clusterDomain,omitempty"` - UFSVolumes []UFSVolume `json:"ufsVolumes,omitempty"` - SecretKey string `json:"secretKey,omitempty"` - SecretValue string `json:"secretValue,omitempty"` - UseStsToken bool `json:"UseStsToken"` - MountType string `json:"mountType,omitempty"` - ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Image string `json:"image"` + ImageTag string `json:"imageTag"` + ImagePullPolicy string `json:"imagePullPolicy"` + FuseImage string `json:"fuseImage"` + FuseImageTag string `json:"fuseImageTag"` + FuseImagePullPolicy string `json:"fuseImagePullPolicy"` + User int `json:"user"` + Group int `json:"group"` + UseHostNetwork bool `json:"useHostNetwork"` + Properties map[string]string `json:"properties"` + Master Master `json:"master"` + Worker Worker `json:"worker"` + Fuse Fuse `json:"fuse"` + Mounts Mounts `json:"mounts"` + HadoopConfig HadoopConfig `json:"hadoopConfig,omitempty"` + Secret string `json:"secret,omitempty"` + Tolerations []corev1.Toleration `json:"tolerations,omitempty"` + InitPortCheck common.InitPortCheck `json:"initPortCheck,omitempty"` + LogConfig map[string]string `json:"logConfig,omitempty"` + FuseLogConfig map[string]string `json:"fuseLogConfig,omitempty"` + PlacementMode string `json:"placement,omitempty"` + Owner *common.OwnerReference `json:"owner,omitempty"` + RuntimeIdentity common.RuntimeIdentity `json:"runtimeIdentity"` + ClusterDomain string `json:"clusterDomain,omitempty"` + UFSVolumes []UFSVolume `json:"ufsVolumes,omitempty"` + SecretKey string `json:"secretKey,omitempty"` + SecretValue string `json:"secretValue,omitempty"` + UseStsToken bool `json:"UseStsToken"` + MountType string `json:"mountType,omitempty"` + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` } type HadoopConfig struct { diff --git a/pkg/ddc/jindofsx/load_data.go b/pkg/ddc/jindofsx/load_data.go index b6b3ac04102..bd6125b7558 100644 --- a/pkg/ddc/jindofsx/load_data.go +++ b/pkg/ddc/jindofsx/load_data.go @@ -186,9 +186,10 @@ func (e *JindoFSxEngine) genDataLoadValue(image string, runtime *datav1alpha1.Ji dataloadInfo.Options = options dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil diff --git a/pkg/ddc/jindofsx/master_internal.go b/pkg/ddc/jindofsx/master_internal.go index 2adff343108..28203874810 100644 --- a/pkg/ddc/jindofsx/master_internal.go +++ b/pkg/ddc/jindofsx/master_internal.go @@ -74,7 +74,9 @@ func (e *JindoFSxEngine) generateJindoValueFile() (valueFileName string, err err return } - err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getHelmValuesConfigMapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/jindofsx/transform.go b/pkg/ddc/jindofsx/transform.go index 2ae0b5ce96f..83fcee25e90 100644 --- a/pkg/ddc/jindofsx/transform.go +++ b/pkg/ddc/jindofsx/transform.go @@ -154,7 +154,7 @@ func (e *JindoFSxEngine) transform(runtime *datav1alpha1.JindoRuntime) (value *J }, } - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) e.transformNetworkMode(runtime, value) err = e.transformHadoopConfig(runtime, value) diff --git a/pkg/ddc/jindofsx/types.go b/pkg/ddc/jindofsx/types.go index 4a7e4ef8b13..e41c8fa3e7f 100644 --- a/pkg/ddc/jindofsx/types.go +++ b/pkg/ddc/jindofsx/types.go @@ -22,38 +22,38 @@ import ( ) type Jindo struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` - Image string `json:"image"` - ImageTag string `json:"imageTag"` - ImagePullPolicy string `json:"imagePullPolicy"` - FuseImage string `json:"fuseImage"` - FuseImageTag string `json:"fuseImageTag"` - FuseImagePullPolicy string `json:"fuseImagePullPolicy"` - User int `json:"user"` - Group int `json:"group"` - UseHostNetwork bool `json:"useHostNetwork"` - Properties map[string]string `json:"properties"` - Master Master `json:"master"` - Worker Worker `json:"worker"` - Fuse Fuse `json:"fuse"` - Mounts Mounts `json:"mounts"` - HadoopConfig HadoopConfig `json:"hadoopConfig,omitempty"` - Secret string `json:"secret,omitempty"` - Tolerations []corev1.Toleration `json:"tolerations,omitempty"` - InitPortCheck common.InitPortCheck `json:"initPortCheck,omitempty"` - LogConfig map[string]string `json:"logConfig,omitempty"` - FuseLogConfig map[string]string `json:"fuseLogConfig,omitempty"` - PlacementMode string `json:"placement,omitempty"` - Owner *common.OwnerReference `json:"owner,omitempty"` - RuntimeIdentity common.RuntimeIdentity `json:"runtimeIdentity"` - ClusterDomain string `json:"clusterDomain,omitempty"` - UFSVolumes []UFSVolume `json:"ufsVolumes,omitempty"` - SecretKey string `json:"secretKey,omitempty"` - SecretValue string `json:"secretValue,omitempty"` - UseStsToken bool `json:"UseStsToken"` - MountType string `json:"mountType,omitempty"` - ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Image string `json:"image"` + ImageTag string `json:"imageTag"` + ImagePullPolicy string `json:"imagePullPolicy"` + FuseImage string `json:"fuseImage"` + FuseImageTag string `json:"fuseImageTag"` + FuseImagePullPolicy string `json:"fuseImagePullPolicy"` + User int `json:"user"` + Group int `json:"group"` + UseHostNetwork bool `json:"useHostNetwork"` + Properties map[string]string `json:"properties"` + Master Master `json:"master"` + Worker Worker `json:"worker"` + Fuse Fuse `json:"fuse"` + Mounts Mounts `json:"mounts"` + HadoopConfig HadoopConfig `json:"hadoopConfig,omitempty"` + Secret string `json:"secret,omitempty"` + Tolerations []corev1.Toleration `json:"tolerations,omitempty"` + InitPortCheck common.InitPortCheck `json:"initPortCheck,omitempty"` + LogConfig map[string]string `json:"logConfig,omitempty"` + FuseLogConfig map[string]string `json:"fuseLogConfig,omitempty"` + PlacementMode string `json:"placement,omitempty"` + Owner *common.OwnerReference `json:"owner,omitempty"` + RuntimeIdentity common.RuntimeIdentity `json:"runtimeIdentity"` + ClusterDomain string `json:"clusterDomain,omitempty"` + UFSVolumes []UFSVolume `json:"ufsVolumes,omitempty"` + SecretKey string `json:"secretKey,omitempty"` + SecretValue string `json:"secretValue,omitempty"` + UseStsToken bool `json:"UseStsToken"` + MountType string `json:"mountType,omitempty"` + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` } type HadoopConfig struct { diff --git a/pkg/ddc/juicefs/data_load.go b/pkg/ddc/juicefs/data_load.go index b2a8fd37704..fd940b7869e 100644 --- a/pkg/ddc/juicefs/data_load.go +++ b/pkg/ddc/juicefs/data_load.go @@ -208,9 +208,10 @@ func (j *JuiceFSEngine) genDataLoadValue(image string, cacheinfo map[string]stri dataloadInfo.Options = options dataLoadValue := &cdataload.DataLoadValue{ - Name: dataload.Name, - DataLoadInfo: dataloadInfo, - Owner: transformer.GenerateOwnerReferenceFromObject(dataload), + Name: dataload.Name, + OwnedDatasetReference: utils.GetDatasetReferenceValue(targetDataset.Namespace, targetDataset.Name, string(targetDataset.UID)), + DataLoadInfo: dataloadInfo, + Owner: transformer.GenerateOwnerReferenceFromObject(dataload), } return dataLoadValue, nil diff --git a/pkg/ddc/juicefs/data_migrate.go b/pkg/ddc/juicefs/data_migrate.go index a28b0081f2d..c0e6b3cfa8c 100644 --- a/pkg/ddc/juicefs/data_migrate.go +++ b/pkg/ddc/juicefs/data_migrate.go @@ -174,7 +174,7 @@ func (j *JuiceFSEngine) generateDataMigrateValueFile(r cruntime.ReconcileRequest DataMigrateInfo: dataMigrateInfo, } dataMigrateValue.Owner = transformer.GenerateOwnerReferenceFromObject(dataMigrate) - dataMigrateValue.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", j.namespace, j.name, j.runtimeInfo.GetNamespacedNameAlias()) + dataMigrateValue.OwnedDatasetReference = utils.GetDatasetReferenceValue(j.namespace, j.name, j.runtimeInfo.GetNamespacedNameAlias()) // 6. create the value file data, err := yaml.Marshal(dataMigrateValue) diff --git a/pkg/ddc/juicefs/master_internal.go b/pkg/ddc/juicefs/master_internal.go index 6d4d794a092..e7fa5b48f3d 100644 --- a/pkg/ddc/juicefs/master_internal.go +++ b/pkg/ddc/juicefs/master_internal.go @@ -98,7 +98,9 @@ func (j *JuiceFSEngine) generateJuicefsValueFile(runtime *datav1alpha1.JuiceFSRu } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(j.Client, j.getHelmValuesConfigMapName(), j.namespace, "data", data) + runtimeInfo := j.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(j.Client, j.getHelmValuesConfigMapName(), j.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/juicefs/transform.go b/pkg/ddc/juicefs/transform.go index 36bf84b7ac1..9bbabdf4cdc 100644 --- a/pkg/ddc/juicefs/transform.go +++ b/pkg/ddc/juicefs/transform.go @@ -52,7 +52,7 @@ func (j *JuiceFSEngine) transform(runtime *datav1alpha1.JuiceFSRuntime) (value * } value.FullnameOverride = j.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", j.namespace, j.name, j.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(j.namespace, j.name, j.runtimeInfo.GetNamespacedNameAlias()) value.Owner = transformer.GenerateOwnerReferenceFromObject(runtime) // transform toleration diff --git a/pkg/ddc/juicefs/type.go b/pkg/ddc/juicefs/type.go index a08c3114611..6966df46acb 100644 --- a/pkg/ddc/juicefs/type.go +++ b/pkg/ddc/juicefs/type.go @@ -25,10 +25,10 @@ import ( // JuiceFS The value json file type JuiceFS struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` - Edition string `json:"edition,omitempty"` - Source string `json:"source,omitempty"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` + Edition string `json:"edition,omitempty"` + Source string `json:"source,omitempty"` common.ImageInfo `json:",inline"` common.UserInfo `json:",inline"` diff --git a/pkg/ddc/thin/master_internal.go b/pkg/ddc/thin/master_internal.go index 82c67fda791..1e4b48a5181 100644 --- a/pkg/ddc/thin/master_internal.go +++ b/pkg/ddc/thin/master_internal.go @@ -102,7 +102,9 @@ func (t *ThinEngine) generateThinValueFile(runtime *datav1alpha1.ThinRuntime, pr } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(t.Client, t.getHelmValuesConfigMapName(), t.namespace, "data", data) + runtimeInfo := t.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(t.Client, t.getHelmValuesConfigMapName(), t.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/thin/referencedataset/cm.go b/pkg/ddc/thin/referencedataset/cm.go index 1eba74b697b..70da79f0466 100644 --- a/pkg/ddc/thin/referencedataset/cm.go +++ b/pkg/ddc/thin/referencedataset/cm.go @@ -53,11 +53,18 @@ func copyFuseDaemonSetForRefDataset(client client.Client, refDataset *datav1alph UID: refDataset.UID, } - dsToCreate := &appsv1.DaemonSet{} - dsToCreate.Name = refDataset.Name + "-fuse" - dsToCreate.Namespace = refDataset.Namespace - dsToCreate.OwnerReferences = append(dsToCreate.OwnerReferences, ownerReference) - dsToCreate.Spec = *ds.Spec.DeepCopy() + dsToCreate := &appsv1.DaemonSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: refDataset.Name + "-fuse", + Namespace: refDataset.Namespace, + OwnerReferences: []metav1.OwnerReference{ownerReference}, + Labels: map[string]string{ + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(refDataset.Namespace, refDataset.Name, string(refDataset.UID)), + }, + }, + Spec: *ds.Spec.DeepCopy(), + } + if len(dsToCreate.Spec.Template.Spec.NodeSelector) == 0 { dsToCreate.Spec.Template.Spec.NodeSelector = map[string]string{} } diff --git a/pkg/ddc/thin/referencedataset/volume.go b/pkg/ddc/thin/referencedataset/volume.go index f9580671f91..126d5b62d5b 100644 --- a/pkg/ddc/thin/referencedataset/volume.go +++ b/pkg/ddc/thin/referencedataset/volume.go @@ -112,6 +112,7 @@ func createFusePersistentVolume(client client.Client, virtualRuntime base.Runtim Name: virtualPvName, Labels: map[string]string{ virtualRuntime.GetCommonLabelName(): "true", + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(virtualDataset.GetNamespace(), virtualDataset.GetName(), string(virtualDataset.GetUID())), }, Annotations: physicalPV.ObjectMeta.Annotations, }, @@ -174,6 +175,7 @@ func createFusePersistentVolumeClaim(client client.Client, virtualRuntime base.R utils.GetNamespacedNameValueWithPrefix(common.LabelAnnotationStorageCapacityPrefix, virtualNamespace, virtualName, virtualRuntime.GetNamespacedNameAlias()): "true", common.LabelAnnotationDatasetReferringName: runtimePVC.Name, common.LabelAnnotationDatasetReferringNameSpace: runtimePVC.Namespace, + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(virtualNamespace, virtualName, virtualRuntime.GetNamespacedNameAlias()), }, Annotations: common.ExpectedFluidAnnotations, }, diff --git a/pkg/ddc/thin/transform.go b/pkg/ddc/thin/transform.go index f0d7b1df6bd..7dab0755bb2 100644 --- a/pkg/ddc/thin/transform.go +++ b/pkg/ddc/thin/transform.go @@ -51,7 +51,7 @@ func (t *ThinEngine) transform(runtime *datav1alpha1.ThinRuntime, profile *datav } value.FullnameOverride = t.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", t.namespace, t.name, t.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(t.namespace, t.name, t.runtimeInfo.GetNamespacedNameAlias()) value.Owner = transformer.GenerateOwnerReferenceFromObject(runtime) toRuntimeSetConfig, err := t.toRuntimeSetConfig(nil, nil) if err != nil { diff --git a/pkg/ddc/thin/type.go b/pkg/ddc/thin/type.go index d2f6f662add..7de4464d562 100644 --- a/pkg/ddc/thin/type.go +++ b/pkg/ddc/thin/type.go @@ -23,8 +23,8 @@ import ( ) type ThinValue struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` common.ImageInfo `json:",inline"` common.UserInfo `json:",inline"` diff --git a/pkg/ddc/vineyard/master_internal.go b/pkg/ddc/vineyard/master_internal.go index e96cc2b9e32..3fa49908cc0 100644 --- a/pkg/ddc/vineyard/master_internal.go +++ b/pkg/ddc/vineyard/master_internal.go @@ -94,7 +94,9 @@ func (e *VineyardEngine) generateVineyardValueFile(runtime *datav1alpha1.Vineyar } //3. Save the configfile into configmap - err = kubeclient.CreateConfigMap(e.Client, e.getConfigmapName(), e.namespace, "data", data) + runtimeInfo := e.runtimeInfo + referenceDatasetLabelValue := utils.GetDatasetReferenceValue(runtimeInfo.GetNamespace(), runtimeInfo.GetName(), runtimeInfo.GetNamespacedNameAlias()) + err = kubeclient.CreateConfigMap(e.Client, e.getConfigmapName(), e.namespace, "data", data, referenceDatasetLabelValue) if err != nil { return } diff --git a/pkg/ddc/vineyard/transform.go b/pkg/ddc/vineyard/transform.go index 1e6b77cc1cf..edbcfdfbe2c 100644 --- a/pkg/ddc/vineyard/transform.go +++ b/pkg/ddc/vineyard/transform.go @@ -41,7 +41,7 @@ func (e *VineyardEngine) transform(runtime *datav1alpha1.VineyardRuntime) (value Owner: transformer.GenerateOwnerReferenceFromObject(runtime), } value.FullnameOverride = e.name - value.FullNamespacedNameOverride = utils.GetNamespacedNameValueWithPrefix("", e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) + value.OwnedDatasetReference = utils.GetDatasetReferenceValue(e.namespace, e.name, e.runtimeInfo.GetNamespacedNameAlias()) value.TieredStore, err = e.transformTieredStore(runtime) if err != nil { return diff --git a/pkg/ddc/vineyard/type.go b/pkg/ddc/vineyard/type.go index bb4b73c8f71..0081441ded7 100644 --- a/pkg/ddc/vineyard/type.go +++ b/pkg/ddc/vineyard/type.go @@ -23,8 +23,8 @@ import ( // The value yaml file type Vineyard struct { - FullnameOverride string `json:"fullnameOverride"` - FullNamespacedNameOverride string `json:"fullNamespacedNameOverride"` + FullnameOverride string `json:"fullnameOverride"` + OwnedDatasetReference string `json:"ownedDatasetReference"` common.ImageInfo `json:",inline"` common.UserInfo `json:",inline"` diff --git a/pkg/utils/crtl_utils.go b/pkg/utils/crtl_utils.go index 1fa354893fa..08b959ac43b 100644 --- a/pkg/utils/crtl_utils.go +++ b/pkg/utils/crtl_utils.go @@ -134,6 +134,11 @@ func ContainsOwners(owners []metav1.OwnerReference, dataset *datav1alpha1.Datase return false } +func ContainsLabel(labels map[string]string, labelKey string) bool { + _, exit := labels[labelKey] + return exit +} + // ContainsSelector Determine whether the labels contain the selector func ContainsSelector(labels map[string]string, selector map[string]string) bool { for key, value := range selector { diff --git a/pkg/utils/dataset/volume/create.go b/pkg/utils/dataset/volume/create.go index 4e125c74d86..c96bb5f16aa 100644 --- a/pkg/utils/dataset/volume/create.go +++ b/pkg/utils/dataset/volume/create.go @@ -62,7 +62,8 @@ func CreatePersistentVolumeForRuntime(client client.Client, Name: pvName, Namespace: runtime.GetNamespace(), Labels: map[string]string{ - runtime.GetCommonLabelName(): "true", + runtime.GetCommonLabelName(): "true", + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(runtime.GetNamespace(), runtime.GetName(), runtime.GetNamespacedNameAlias()), }, Annotations: common.ExpectedFluidAnnotations, }, @@ -207,7 +208,8 @@ func CreatePersistentVolumeClaimForRuntime(client client.Client, Name: runtime.GetName(), Namespace: runtime.GetNamespace(), Labels: map[string]string{ - runtime.GetCommonLabelName(): "true", + runtime.GetCommonLabelName(): "true", + common.LabelAnnotationDataset: utils.GetDatasetReferenceValue(runtime.GetNamespace(), runtime.GetName(), runtime.GetNamespacedNameAlias()), }, Annotations: common.ExpectedFluidAnnotations, }, diff --git a/pkg/utils/dataset_runtime.go b/pkg/utils/dataset_runtime.go index 73f9fa7aaa4..030404c076d 100644 --- a/pkg/utils/dataset_runtime.go +++ b/pkg/utils/dataset_runtime.go @@ -80,6 +80,9 @@ func CreateRuntimeForReferenceDatasetIfNotExist(client client.Client, dataset *d Controller: ptr.To(true), }, }, + Labels: map[string]string{ + common.LabelAnnotationDataset: GetDatasetReferenceValue(dataset.GetNamespace(), dataset.GetName(), string(dataset.GetUID())), + }, }, } err = client.Create(context.TODO(), &runtime) diff --git a/pkg/utils/kubeclient/configmap.go b/pkg/utils/kubeclient/configmap.go index 504ddf84a96..6a6ddfceb33 100644 --- a/pkg/utils/kubeclient/configmap.go +++ b/pkg/utils/kubeclient/configmap.go @@ -19,6 +19,7 @@ package kubeclient import ( "context" "fmt" + "github.com/fluid-cloudnative/fluid/pkg/common" "github.com/fluid-cloudnative/fluid/pkg/utils" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -130,6 +131,11 @@ func CopyConfigMap(client client.Client, src types.NamespacedName, dst types.Nam Data: copiedConfigMap.Data, } + if dstConfigMap.Labels == nil { + dstConfigMap.Labels = make(map[string]string) + } + dstConfigMap.Labels[common.LabelAnnotationDataset] = utils.GetDatasetReferenceValue(dst.Namespace, dst.Name, string(reference.UID)) + err = client.Create(context.TODO(), dstConfigMap) if err != nil { if otherErr := utils.IgnoreAlreadyExists(err); otherErr != nil { @@ -144,11 +150,14 @@ func UpdateConfigMap(client client.Client, cm *v1.ConfigMap) error { return err } -func CreateConfigMap(client client.Client, name string, namespace string, key string, data []byte) (err error) { +func CreateConfigMap(client client.Client, name string, namespace string, key string, data []byte, referenceDatasetLabelValue string) (err error) { configMap := &v1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, + Labels: map[string]string{ + common.LabelAnnotationDataset: referenceDatasetLabelValue, + }, }, Data: map[string]string{ key: string(data), diff --git a/pkg/utils/kubeclient/configmap_test.go b/pkg/utils/kubeclient/configmap_test.go index ca9cefd0835..e6cee7860e9 100644 --- a/pkg/utils/kubeclient/configmap_test.go +++ b/pkg/utils/kubeclient/configmap_test.go @@ -263,7 +263,7 @@ func TestCreateConfigMapExist(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err := CreateConfigMap(client, tt.args.name, tt.args.namespace, tt.args.key, tt.args.data) + err := CreateConfigMap(client, tt.args.name, tt.args.namespace, tt.args.key, tt.args.data, "") if err != nil { t.Errorf("testcase %v CreateConfigMap() err is %v", tt.name, err) } diff --git a/pkg/utils/kubeclient/secret.go b/pkg/utils/kubeclient/secret.go index 6ad79421710..6faa71c48e9 100644 --- a/pkg/utils/kubeclient/secret.go +++ b/pkg/utils/kubeclient/secret.go @@ -66,13 +66,18 @@ func CopySecretToNamespace(client client.Client, from types.NamespacedName, to t return err } - secretToCreate := &v1.Secret{} - secretToCreate.Namespace = to.Namespace - secretToCreate.Name = to.Name - secretToCreate.Data = secret.Data - secretToCreate.StringData = secret.StringData - secretToCreate.Labels = map[string]string{} - secretToCreate.Labels["fluid.io/copied-from"] = fmt.Sprintf("%s_%s", from.Namespace, from.Name) + secretToCreate := &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: to.Name, + Namespace: to.Namespace, + Labels: map[string]string{ + common.LabelAnnotationCopyFrom: fmt.Sprintf("%s_%s", from.Namespace, from.Name), + }, + }, + Data: secret.Data, + StringData: secret.StringData, + } + if ownerReference != nil { secretToCreate.OwnerReferences = append(secretToCreate.OwnerReferences, metav1.OwnerReference{ APIVersion: ownerReference.APIVersion, diff --git a/pkg/utils/label.go b/pkg/utils/label.go index cbc759eb83c..0cbe48492fc 100644 --- a/pkg/utils/label.go +++ b/pkg/utils/label.go @@ -203,3 +203,35 @@ func GetNamespacedNameValueWithPrefix(prefix, namespace, name, overLimitNamespac return } + +func GetDatasetReferenceValue(namespace, name, overLimitNamespacedNameAlias string) (fullNamespacedNameWithPrefix string) { + return GetNamespacedNameValueWithPrefix("", namespace, name, overLimitNamespacedNameAlias) +} + +func PatchDatasetLabelToObjects(cli client.Client, datasetLabelValue string, objs ...client.Object) (errs []error) { + for _, obj := range objs { + if !ContainsLabel(obj.GetLabels(), common.LabelAnnotationDataset) { + labelValuePair := map[string]string{ + common.LabelAnnotationDataset: datasetLabelValue, + } + + metadata := map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": labelValuePair, + }, + } + + patchByteData, err := json.Marshal(metadata) + if err != nil { + errs = append(errs, err) + } + + err = cli.Patch(context.TODO(), obj, client.RawPatch(types.MergePatchType, patchByteData)) + if err != nil { + log.Error(err, "failed to patch labels", "objKind", obj.GetObjectKind(), "name", obj.GetName(), "labels", obj.GetLabels()) + errs = append(errs, err) + } + } + } + return +}