Skip to content
This repository has been archived by the owner on Oct 13, 2021. It is now read-only.

Commit

Permalink
implement clustergittrackmode disabled in GTOs
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Morsing committed Sep 24, 2019
1 parent efaa944 commit eb30369
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 32 deletions.
68 changes: 43 additions & 25 deletions pkg/controller/gittrackobject/gittrackobject_controller.go
Expand Up @@ -50,11 +50,12 @@ import (
// and Start it when the Manager is Started.
// USER ACTION REQUIRED: update cmd/manager/main.go to call this faros.Add(mgr) to install this Controller
func Add(mgr manager.Manager) error {
return add(mgr, newReconciler(mgr))
rec, opts := newReconciler(mgr)
return add(mgr, rec, opts)
}

// newReconciler returns a new reconcile.Reconciler
func newReconciler(mgr manager.Manager) reconcile.Reconciler {
func newReconciler(mgr manager.Manager) (reconcile.Reconciler, *reconcileGitTrackObjectOpts) {
// Set up informer stop channel
stop := make(chan struct{})
c := make(chan os.Signal)
Expand All @@ -74,24 +75,36 @@ func newReconciler(mgr manager.Manager) reconcile.Reconciler {
panic(fmt.Errorf("unable to create dry run verifier: %v", err))
}

return &ReconcileGitTrackObject{
Client: mgr.GetClient(),
scheme: mgr.GetScheme(),
eventStream: make(chan event.GenericEvent),
cache: mgr.GetCache(),
informers: make(map[string]cache.Informer),
config: mgr.GetConfig(),
stop: stop,
recorder: mgr.GetEventRecorderFor("gittrackobject-controller"),
applier: applier,
dryRunVerifier: dryRunVerifier,
log: rlogr.Log.WithName("gittrackobject-controller"),
namespace: farosflags.Namespace,
rec := &ReconcileGitTrackObject{
Client: mgr.GetClient(),
scheme: mgr.GetScheme(),
eventStream: make(chan event.GenericEvent),
cache: mgr.GetCache(),
informers: make(map[string]cache.Informer),
config: mgr.GetConfig(),
stop: stop,
recorder: mgr.GetEventRecorderFor("gittrackobject-controller"),
applier: applier,
dryRunVerifier: dryRunVerifier,
log: rlogr.Log.WithName("gittrackobject-controller"),
namespace: farosflags.Namespace,
gitTrackMode: farosflags.GitTrack,
clusterGitTrackMode: farosflags.ClusterGitTrack,
}
opts := &reconcileGitTrackObjectOpts{
gitTrackMode: farosflags.GitTrack,
clusterGitTrackMode: farosflags.ClusterGitTrack,
}
return rec, opts
}

type reconcileGitTrackObjectOpts struct {
clusterGitTrackMode farosflags.ClusterGitTrackMode
gitTrackMode farosflags.GitTrackMode
}

// add adds a new Controller to mgr with r as the reconcile.Reconciler
func add(mgr manager.Manager, r reconcile.Reconciler) error {
func add(mgr manager.Manager, r reconcile.Reconciler, opts *reconcileGitTrackObjectOpts) error {
// Create a new controller
c, err := controller.New("gittrackobject-controller", mgr, controller.Options{Reconciler: r})
if err != nil {
Expand All @@ -104,14 +117,16 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
return err
}

// Watch for changes to ClusterGitTrackObject
err = c.Watch(
&source.Kind{Type: &farosv1alpha1.ClusterGitTrackObject{}},
&handler.EnqueueRequestForObject{},
utils.NewOwnerInNamespacePredicate(mgr.GetClient()),
)
if err != nil {
return err
if opts.clusterGitTrackMode != farosflags.CGTMDisabled {
// Watch for changes to ClusterGitTrackObject
err = c.Watch(
&source.Kind{Type: &farosv1alpha1.ClusterGitTrackObject{}},
&handler.EnqueueRequestForObject{},
utils.NewOwnerInNamespacePredicate(mgr.GetClient()),
)
if err != nil {
return err
}
}

// Watch for events on the reconciler's eventStream channel
Expand Down Expand Up @@ -165,7 +180,10 @@ type ReconcileGitTrackObject struct {
stop chan struct{}
recorder record.EventRecorder
log logr.Logger
namespace string

namespace string
gitTrackMode farosflags.GitTrackMode
clusterGitTrackMode farosflags.ClusterGitTrackMode

applier farosclient.Client
dryRunVerifier *utils.DryRunVerifier
Expand Down
13 changes: 10 additions & 3 deletions pkg/controller/gittrackobject/gittrackobject_controller_test.go
Expand Up @@ -60,7 +60,7 @@ var _ = Describe("GitTrackObject Suite", func() {
const timeout = time.Second * 5
const consistentlyTimeout = time.Second

BeforeEach(func() {
var SetupTest = func(cgtm farosflags.ClusterGitTrackMode) {
// Setup the Manager and Controller. Wrap the Controller Reconcile function so it writes each request to a
// channel when it is finished.
var err error
Expand All @@ -78,11 +78,13 @@ var _ = Describe("GitTrackObject Suite", func() {
Expect(err).NotTo(HaveOccurred())
m = testutils.Matcher{Client: mgr.GetClient(), FarosClient: applier}

recFn := newReconciler(mgr)
recFn, opts := newReconciler(mgr)
r = recFn.(*ReconcileGitTrackObject)
r.clusterGitTrackMode = cgtm
opts.clusterGitTrackMode = cgtm
recFn, testEvents = SetupTestEventRecorder(recFn)
recFn, requests, reconcileStopped = SetupTestReconcile(recFn)
Expect(add(mgr, recFn)).NotTo(HaveOccurred())
Expect(add(mgr, recFn, opts)).NotTo(HaveOccurred())

stopInformers = r.StopChan()
stop = StartTestManager(mgr)
Expand All @@ -104,6 +106,11 @@ var _ = Describe("GitTrackObject Suite", func() {

// Reset all metrics before each test
metrics.InSync.Reset()

}

BeforeEach(func() {
SetupTest(farosflags.CGTMIncludeNamespaced)
})

AfterEach(func() {
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/gittrackobject/handler_test.go
Expand Up @@ -67,7 +67,7 @@ var _ = Describe("Handler Suite", func() {

m = testutils.Matcher{Client: c, FarosClient: applier}

recFn := newReconciler(mgr)
recFn, _ := newReconciler(mgr)
r = recFn.(*ReconcileGitTrackObject)

stopInformers = r.StopChan()
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/gittrackobject/metrics_test.go
Expand Up @@ -44,7 +44,7 @@ var _ = Describe("Metrics Suite", func() {
})
Expect(err).NotTo(HaveOccurred())

recFn := newReconciler(mgr)
recFn, _ := newReconciler(mgr)
r = recFn.(*ReconcileGitTrackObject)

// Reset all metrics before each test
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/gittrackobject/status_test.go
Expand Up @@ -56,7 +56,7 @@ var _ = Describe("Status Suite", func() {

m = testutils.Matcher{Client: mgr.GetClient()}

recFn := newReconciler(mgr)
recFn, _ := newReconciler(mgr)
r = recFn.(*ReconcileGitTrackObject)

stopInformers = r.StopChan()
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/gittrackobject/watch_test.go
Expand Up @@ -61,7 +61,7 @@ var _ = Describe("Watch Suite", func() {
c = mgr.GetClient()
m = testutils.Matcher{Client: c}

recFn := newReconciler(mgr)
recFn, _ := newReconciler(mgr)
r = recFn.(*ReconcileGitTrackObject)

stopInformers = r.StopChan()
Expand Down

0 comments on commit eb30369

Please sign in to comment.