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
}