/*
Copyright (c) Edgeless Systems GmbH

SPDX-License-Identifier: AGPL-3.0-only
*/

package patch

import (
	"sigs.k8s.io/controller-runtime/pkg/client"
)

// SetLabels creates a patch for a client.Object by merging labels with existing labels.
func SetLabels(original, patched client.Object, labels map[string]string) client.Patch {
	mergedLabels := patched.GetLabels()
	if mergedLabels == nil {
		mergedLabels = make(map[string]string, len(labels))
	}
	for labelKey, labelValue := range labels {
		mergedLabels[labelKey] = labelValue
	}
	patched.SetLabels(mergedLabels)
	return client.StrategicMergeFrom(original, client.MergeFromWithOptimisticLock{})
}