Merge pull request #1622 from stingshen/stingshen/nil_cluster_secret

check if cluster secretRef is nil before using it
This commit is contained in:
karmada-bot 2022-04-20 09:11:07 +08:00 committed by GitHub
commit 73e24c2ac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -191,14 +191,29 @@ func startClusterStatusController(ctx controllerscontext.Context) (enabled bool,
clusterPredicateFunc := predicate.Funcs{
CreateFunc: func(createEvent event.CreateEvent) bool {
obj := createEvent.Object.(*clusterv1alpha1.Cluster)
if obj.Spec.SecretRef == nil {
return false
}
return obj.Spec.SyncMode == clusterv1alpha1.Push
},
UpdateFunc: func(updateEvent event.UpdateEvent) bool {
obj := updateEvent.ObjectNew.(*clusterv1alpha1.Cluster)
if obj.Spec.SecretRef == nil {
return false
}
return obj.Spec.SyncMode == clusterv1alpha1.Push
},
DeleteFunc: func(deleteEvent event.DeleteEvent) bool {
obj := deleteEvent.Object.(*clusterv1alpha1.Cluster)
if obj.Spec.SecretRef == nil {
return false
}
return obj.Spec.SyncMode == clusterv1alpha1.Push
},
GenericFunc: func(genericEvent event.GenericEvent) bool {

View File

@ -121,11 +121,12 @@ func buildClusterConfig(clusterName string, client client.Client) (*rest.Config,
return nil, fmt.Errorf("the api endpoint of cluster %s is empty", clusterName)
}
if cluster.Spec.SecretRef == nil {
return nil, fmt.Errorf("cluster %s does not have a secret", clusterName)
}
secretNamespace := cluster.Spec.SecretRef.Namespace
secretName := cluster.Spec.SecretRef.Name
if secretName == "" {
return nil, fmt.Errorf("cluster %s does not have a secret name", clusterName)
}
secret := &corev1.Secret{}
if err := client.Get(context.TODO(), types.NamespacedName{Namespace: secretNamespace, Name: secretName}, secret); err != nil {