-
Notifications
You must be signed in to change notification settings - Fork 298
/
setup.go
38 lines (32 loc) · 1.33 KB
/
setup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package inplaceupgrader
import (
"context"
"fmt"
"github.com/openshift/hypershift/control-plane-operator/hostedclusterconfigoperator/operator"
corev1 "k8s.io/api/core/v1"
capiv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/source"
)
func Setup(ctx context.Context, opts *operator.HostedClusterConfigOperatorConfig) error {
r := &Reconciler{
client: opts.CPCluster.GetClient(),
guestClusterClient: opts.Manager.GetClient(),
releaseProvider: opts.ReleaseProvider,
hcpName: opts.HCPName,
hcpNamespace: opts.Namespace,
CreateOrUpdateProvider: opts.TargetCreateOrUpdateProvider,
}
c, err := controller.New("inplaceupgrader", opts.Manager, controller.Options{Reconciler: r})
if err != nil {
return fmt.Errorf("failed to construct controller: %w", err)
}
if err := c.Watch(source.Kind(opts.Manager.GetCache(), &corev1.Node{}), handler.EnqueueRequestsFromMapFunc(r.nodeToMachineSet)); err != nil {
return fmt.Errorf("failed to watch Nodes: %w", err)
}
if err := c.Watch(source.Kind(opts.CPCluster.GetCache(), &capiv1.MachineSet{}), &handler.EnqueueRequestForObject{}); err != nil {
return fmt.Errorf("failed to watch MachineSets: %w", err)
}
return nil
}