func()

in pkg/webhook/stage_webhook.go [103:122]


func (r *StageValidationWebhook) uniqueTargetNamespaceAcrossCluster(ctx context.Context, stage *pipelineApi.Stage) error {
	namespaces := &corev1.NamespaceList{}
	if err := r.client.List(
		ctx,
		namespaces,
		client.MatchingLabels{
			util.TenantLabelName: stage.Spec.Namespace,
		},
	); err != nil {
		return fmt.Errorf("failed to list namespaces: %w", err)
	}

	for i := range namespaces.Items {
		if namespaces.Items[i].Name == stage.Spec.Namespace {
			return fmt.Errorf("namespace %s is already used in the cluster", stage.Spec.Namespace)
		}
	}

	return nil
}