Skip to content

Commit

Permalink
Adds Watches on NADs
Browse files Browse the repository at this point in the history
Adds to watch NADs so that the controller reconciles when the
configured NAD changes.

Signed-off-by: Martin Schuppert <[email protected]>
  • Loading branch information
stuggi committed Aug 6, 2024
1 parent 26c067f commit 05aedf3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
19 changes: 19 additions & 0 deletions controllers/placementapi_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import (
"github.com/go-logr/logr"
keystonev1 "github.com/openstack-k8s-operators/keystone-operator/api/v1beta1"

networkv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1"
common "github.com/openstack-k8s-operators/lib-common/modules/common"
condition "github.com/openstack-k8s-operators/lib-common/modules/common/condition"
deployment "github.com/openstack-k8s-operators/lib-common/modules/common/deployment"
Expand Down Expand Up @@ -799,13 +800,15 @@ const (
caBundleSecretNameField = ".spec.tls.caBundleSecretName"
tlsAPIInternalField = ".spec.tls.api.internal.secretName"
tlsAPIPublicField = ".spec.tls.api.public.secretName"
networkAttachmentsField = ".spec.networkAttachments"
)

var allWatchFields = []string{
passwordSecretField,
caBundleSecretNameField,
tlsAPIInternalField,
tlsAPIPublicField,
networkAttachmentsField,
}

// SetupWithManager sets up the controller with the Manager.
Expand Down Expand Up @@ -858,6 +861,18 @@ func (r *PlacementAPIReconciler) SetupWithManager(mgr ctrl.Manager) error {
return err
}

// index networkAttachmentsField
if err := mgr.GetFieldIndexer().IndexField(context.Background(), &placementv1.PlacementAPI{}, networkAttachmentsField, func(rawObj client.Object) []string {
// Extract the NetworkAttachments name from the spec, if one is provided
cr := rawObj.(*placementv1.PlacementAPI)
if cr.Spec.NetworkAttachments == nil {
return nil
}
return cr.Spec.NetworkAttachments
}); err != nil {
return err
}

return ctrl.NewControllerManagedBy(mgr).
For(&placementv1.PlacementAPI{}).
Owns(&mariadbv1.MariaDBDatabase{}).
Expand All @@ -877,6 +892,10 @@ func (r *PlacementAPIReconciler) SetupWithManager(mgr ctrl.Manager) error {
handler.EnqueueRequestsFromMapFunc(r.findObjectsForSrc),
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
).
Watches(&networkv1.NetworkAttachmentDefinition{},
handler.EnqueueRequestsFromMapFunc(r.findObjectsForSrc),
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
).
Complete(r)
}

Expand Down
7 changes: 7 additions & 0 deletions tests/functional/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import (

metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"

networkv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1"
keystonev1 "github.com/openstack-k8s-operators/keystone-operator/api/v1beta1"
test "github.com/openstack-k8s-operators/lib-common/modules/test"
mariadbv1 "github.com/openstack-k8s-operators/mariadb-operator/api/v1beta1"
Expand Down Expand Up @@ -104,6 +105,9 @@ var _ = BeforeSuite(func() {
mariaDBCRDs, err := test.GetCRDDirFromModule(
"github.com/openstack-k8s-operators/mariadb-operator/api", "../../go.mod", "bases")
Expect(err).ShouldNot(HaveOccurred())
networkv1CRD, err := test.GetCRDDirFromModule(
"github.com/k8snetworkplumbingwg/network-attachment-definition-client", "../../go.mod", "artifacts/networks-crd.yaml")
Expect(err).ShouldNot(HaveOccurred())

By("bootstrapping test environment")
testEnv = &envtest.Environment{
Expand All @@ -112,6 +116,7 @@ var _ = BeforeSuite(func() {
// NOTE(gibi): we need to list all the external CRDs our operator depends on
keystoneCRDs,
mariaDBCRDs,
networkv1CRD,
},
ErrorIfCRDPathMissing: true,
WebhookInstallOptions: envtest.WebhookInstallOptions{
Expand All @@ -138,6 +143,8 @@ var _ = BeforeSuite(func() {
Expect(err).NotTo(HaveOccurred())
err = keystonev1.AddToScheme(scheme.Scheme)
Expect(err).NotTo(HaveOccurred())
err = networkv1.AddToScheme(scheme.Scheme)
Expect(err).NotTo(HaveOccurred())
//+kubebuilder:scaffold:scheme

logger = ctrl.Log.WithName("---Test---")
Expand Down

0 comments on commit 05aedf3

Please sign in to comment.