Skip to content

Commit 7d4f29f

Browse files
stevekuznetsovawgreene
authored andcommitted
catalog operator: add logging
Signed-off-by: Steve Kuznetsov <[email protected]>
1 parent 0e1e089 commit 7d4f29f

12 files changed

+141
-105
lines changed

pkg/controller/operators/catalog/operator.go

+42-35
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ func (o *Operator) now() metav1.Time {
707707
func (o *Operator) syncSourceState(state grpc.SourceState) {
708708
o.sourcesLastUpdate.Set(o.now().Time)
709709

710-
o.logger.Debugf("state.Key.Namespace=%s state.Key.Name=%s state.State=%s", state.Key.Namespace, state.Key.Name, state.State.String())
710+
o.logger.Infof("state.Key.Namespace=%s state.Key.Name=%s state.State=%s", state.Key.Namespace, state.Key.Name, state.State.String())
711711
metrics.RegisterCatalogSourceState(state.Key.Name, state.Key.Namespace, state.State)
712712

713713
switch state.State {
@@ -868,7 +868,11 @@ func (o *Operator) syncConfigMap(logger *logrus.Entry, in *v1alpha1.CatalogSourc
868868

869869
out = in.DeepCopy()
870870

871-
logger.Debug("checking catsrc configmap state")
871+
logger = logger.WithFields(logrus.Fields{
872+
"configmap.namespace": in.Namespace,
873+
"configmap.name": in.Spec.ConfigMap,
874+
})
875+
logger.Info("checking catsrc configmap state")
872876

873877
var updateLabel bool
874878
// Get the catalog source's config map
@@ -902,11 +906,11 @@ func (o *Operator) syncConfigMap(logger *logrus.Entry, in *v1alpha1.CatalogSourc
902906
return
903907
}
904908

905-
logger.Debug("adopted configmap")
909+
logger.Info("adopted configmap")
906910
}
907911

908912
if in.Status.ConfigMapResource == nil || !in.Status.ConfigMapResource.IsAMatch(&configMap.ObjectMeta) {
909-
logger.Debug("updating catsrc configmap state")
913+
logger.Info("updating catsrc configmap state")
910914
// configmap ref nonexistent or updated, write out the new configmap ref to status and exit
911915
out.Status.ConfigMapResource = &v1alpha1.ConfigMapResourceReference{
912916
Name: configMap.GetName(),
@@ -926,6 +930,7 @@ func (o *Operator) syncConfigMap(logger *logrus.Entry, in *v1alpha1.CatalogSourc
926930
func (o *Operator) syncRegistryServer(logger *logrus.Entry, in *v1alpha1.CatalogSource) (out *v1alpha1.CatalogSource, continueSync bool, syncError error) {
927931
out = in.DeepCopy()
928932

933+
logger.Info("synchronizing registry server")
929934
sourceKey := registry.CatalogKey{Name: in.GetName(), Namespace: in.GetNamespace()}
930935
srcReconciler := o.reconciler.ReconcilerForSource(in)
931936
if srcReconciler == nil {
@@ -935,31 +940,32 @@ func (o *Operator) syncRegistryServer(logger *logrus.Entry, in *v1alpha1.Catalog
935940
return
936941
}
937942

938-
healthy, err := srcReconciler.CheckRegistryServer(in)
943+
healthy, err := srcReconciler.CheckRegistryServer(logger, in)
939944
if err != nil {
940945
syncError = err
941946
out.SetError(v1alpha1.CatalogSourceRegistryServerError, syncError)
942947
return
943948
}
944949

945-
logger.Debugf("check registry server healthy: %t", healthy)
950+
logger.WithField("health", healthy).Infof("checked registry server health")
946951

947952
if healthy && in.Status.RegistryServiceStatus != nil {
948-
logger.Debug("registry state good")
953+
logger.Info("registry state good")
949954
continueSync = true
950955
// return here if catalog does not have polling enabled
951956
if !out.Poll() {
957+
logger.Info("polling not enabled, nothing more to do")
952958
return
953959
}
954960
}
955961

956962
// Registry pod hasn't been created or hasn't been updated since the last configmap update, recreate it
957-
logger.Debug("ensuring registry server")
963+
logger.Info("ensuring registry server")
958964

959-
err = srcReconciler.EnsureRegistryServer(out)
965+
err = srcReconciler.EnsureRegistryServer(logger, out)
960966
if err != nil {
961967
if _, ok := err.(reconciler.UpdateNotReadyErr); ok {
962-
logger.Debug("requeueing registry server for catalog update check: update pod not yet ready")
968+
logger.Info("requeueing registry server for catalog update check: update pod not yet ready")
963969
o.catsrcQueueSet.RequeueAfter(out.GetNamespace(), out.GetName(), reconciler.CatalogPollingRequeuePeriod)
964970
return
965971
}
@@ -968,7 +974,7 @@ func (o *Operator) syncRegistryServer(logger *logrus.Entry, in *v1alpha1.Catalog
968974
return
969975
}
970976

971-
logger.Debug("ensured registry server")
977+
logger.Info("ensured registry server")
972978

973979
// requeue the catalog sync based on the polling interval, for accurate syncs of catalogs with polling enabled
974980
if out.Spec.UpdateStrategy != nil && out.Spec.UpdateStrategy.RegistryPoll != nil {
@@ -980,7 +986,7 @@ func (o *Operator) syncRegistryServer(logger *logrus.Entry, in *v1alpha1.Catalog
980986
if out.Spec.UpdateStrategy.RegistryPoll.ParsingError != "" && out.Status.Reason != v1alpha1.CatalogSourceIntervalInvalidError {
981987
out.SetError(v1alpha1.CatalogSourceIntervalInvalidError, fmt.Errorf(out.Spec.UpdateStrategy.RegistryPoll.ParsingError))
982988
}
983-
logger.Debugf("requeuing registry server sync based on polling interval %s", out.Spec.UpdateStrategy.Interval.Duration.String())
989+
logger.Infof("requeuing registry server sync based on polling interval %s", out.Spec.UpdateStrategy.Interval.Duration.String())
984990
resyncPeriod := reconciler.SyncRegistryUpdateInterval(out, time.Now())
985991
o.catsrcQueueSet.RequeueAfter(out.GetNamespace(), out.GetName(), queueinformer.ResyncWithJitter(resyncPeriod, 0.1)())
986992
return
@@ -1068,16 +1074,17 @@ func (o *Operator) syncConnection(logger *logrus.Entry, in *v1alpha1.CatalogSour
10681074
func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {
10691075
catsrc, ok := obj.(*v1alpha1.CatalogSource)
10701076
if !ok {
1071-
o.logger.Debugf("wrong type: %#v", obj)
1077+
o.logger.Infof("wrong type: %#v", obj)
10721078
syncError = nil
10731079
return
10741080
}
10751081

10761082
logger := o.logger.WithFields(logrus.Fields{
1077-
"source": catsrc.GetName(),
1078-
"id": queueinformer.NewLoopID(),
1083+
"catalogsource.namespace": catsrc.Namespace,
1084+
"catalogsource.name": catsrc.Name,
1085+
"id": queueinformer.NewLoopID(),
10791086
})
1080-
logger.Debug("syncing catsrc")
1087+
logger.Info("syncing catalog source")
10811088

10821089
syncFunc := func(in *v1alpha1.CatalogSource, chain []CatalogSourceSyncFunc) (out *v1alpha1.CatalogSource, syncErr error) {
10831090
out = in
@@ -1133,7 +1140,7 @@ func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {
11331140
func (o *Operator) syncResolvingNamespace(obj interface{}) error {
11341141
ns, ok := obj.(*corev1.Namespace)
11351142
if !ok {
1136-
o.logger.Debugf("wrong type: %#v", obj)
1143+
o.logger.Infof("wrong type: %#v", obj)
11371144
return fmt.Errorf("casting Namespace failed")
11381145
}
11391146
namespace := ns.GetName()
@@ -1146,9 +1153,9 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
11461153
o.gcInstallPlans(logger, namespace)
11471154

11481155
// get the set of sources that should be used for resolution and best-effort get their connections working
1149-
logger.Debug("resolving sources")
1156+
logger.Info("resolving sources")
11501157

1151-
logger.Debug("checking if subscriptions need update")
1158+
logger.Info("checking if subscriptions need update")
11521159

11531160
subs, err := o.listSubscriptions(namespace)
11541161
if err != nil {
@@ -1158,7 +1165,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
11581165

11591166
// If there are no subscriptions, don't attempt to sync the namespace.
11601167
if len(subs) == 0 {
1161-
logger.Debug(fmt.Sprintf("No subscriptions were found in namespace %v", namespace))
1168+
logger.Info(fmt.Sprintf("No subscriptions were found in namespace %v", namespace))
11621169
return nil
11631170
}
11641171

@@ -1196,23 +1203,23 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
11961203
// ensure the installplan reference is correct
11971204
sub, changedIP, err := o.ensureSubscriptionInstallPlanState(logger, sub, failForwardEnabled)
11981205
if err != nil {
1199-
logger.Debugf("error ensuring installplan state: %v", err)
1206+
logger.Infof("error ensuring installplan state: %v", err)
12001207
return err
12011208
}
12021209
subscriptionUpdated = subscriptionUpdated || changedIP
12031210

12041211
// record the current state of the desired corresponding CSV in the status. no-op if we don't know the csv yet.
12051212
sub, changedCSV, err := o.ensureSubscriptionCSVState(logger, sub, failForwardEnabled)
12061213
if err != nil {
1207-
logger.Debugf("error recording current state of CSV in status: %v", err)
1214+
logger.Infof("error recording current state of CSV in status: %v", err)
12081215
return err
12091216
}
12101217

12111218
subscriptionUpdated = subscriptionUpdated || changedCSV
12121219
subs[i] = sub
12131220
}
12141221
if subscriptionUpdated {
1215-
logger.Debug("subscriptions were updated, wait for a new resolution")
1222+
logger.Info("subscriptions were updated, wait for a new resolution")
12161223
return nil
12171224
}
12181225

@@ -1221,11 +1228,11 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
12211228
shouldUpdate = shouldUpdate || !o.nothingToUpdate(logger, sub)
12221229
}
12231230
if !shouldUpdate {
1224-
logger.Debug("all subscriptions up to date")
1231+
logger.Info("all subscriptions up to date")
12251232
return nil
12261233
}
12271234

1228-
logger.Debug("resolving subscriptions in namespace")
1235+
logger.Info("resolving subscriptions in namespace")
12291236

12301237
// resolve a set of steps to apply to a cluster, a set of subscriptions to create/update, and any errors
12311238
steps, bundleLookups, updatedSubs, err := o.resolver.ResolveSteps(namespace)
@@ -1270,7 +1277,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
12701277
// Attempt to unpack bundles before installing
12711278
// Note: This should probably use the attenuated client to prevent users from resolving resources they otherwise don't have access to.
12721279
if len(bundleLookups) > 0 {
1273-
logger.Debug("unpacking bundles")
1280+
logger.Info("unpacking bundles")
12741281

12751282
var unpacked bool
12761283
unpacked, steps, bundleLookups, err = o.unpackBundles(namespace, steps, bundleLookups, unpackTimeout, minUnpackRetryInterval)
@@ -1335,15 +1342,15 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
13351342
return updateErr
13361343
}
13371344

1338-
logger.Debug("unpacking is not complete yet, requeueing")
1345+
logger.Info("unpacking is not complete yet, requeueing")
13391346
o.nsResolveQueue.AddAfter(namespace, 5*time.Second)
13401347
return nil
13411348
}
13421349
}
13431350

13441351
// create installplan if anything updated
13451352
if len(updatedSubs) > 0 {
1346-
logger.Debug("resolution caused subscription changes, creating installplan")
1353+
logger.Info("resolution caused subscription changes, creating installplan")
13471354
// Finish calculating max generation by checking the existing installplans
13481355
installPlans, err := o.listInstallPlans(namespace)
13491356
if err != nil {
@@ -1372,7 +1379,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
13721379
}
13731380
updatedSubs = o.setIPReference(updatedSubs, maxGeneration+1, installPlanReference)
13741381
} else {
1375-
logger.Debugf("no subscriptions were updated")
1382+
logger.Infof("no subscriptions were updated")
13761383
}
13771384

13781385
// Make sure that we no longer indicate unpacking progress
@@ -1416,7 +1423,7 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
14161423
func (o *Operator) syncSubscriptions(obj interface{}) error {
14171424
sub, ok := obj.(*v1alpha1.Subscription)
14181425
if !ok {
1419-
o.logger.Debugf("wrong type: %#v", obj)
1426+
o.logger.Infof("wrong type: %#v", obj)
14201427
return fmt.Errorf("casting Subscription failed")
14211428
}
14221429

@@ -1430,7 +1437,7 @@ func (o *Operator) syncSubscriptions(obj interface{}) error {
14301437
func (o *Operator) syncOperatorGroups(obj interface{}) error {
14311438
og, ok := obj.(*operatorsv1.OperatorGroup)
14321439
if !ok {
1433-
o.logger.Debugf("wrong type: %#v", obj)
1440+
o.logger.Infof("wrong type: %#v", obj)
14341441
return fmt.Errorf("casting OperatorGroup failed")
14351442
}
14361443

@@ -1441,7 +1448,7 @@ func (o *Operator) syncOperatorGroups(obj interface{}) error {
14411448

14421449
func (o *Operator) nothingToUpdate(logger *logrus.Entry, sub *v1alpha1.Subscription) bool {
14431450
if sub.Status.InstallPlanRef != nil && sub.Status.State == v1alpha1.SubscriptionStateUpgradePending {
1444-
logger.Debugf("skipping update: installplan already created")
1451+
logger.Infof("skipping update: installplan already created")
14451452
return true
14461453
}
14471454
return false
@@ -1452,7 +1459,7 @@ func (o *Operator) ensureSubscriptionInstallPlanState(logger *logrus.Entry, sub
14521459
return sub, false, nil
14531460
}
14541461

1455-
logger.Debug("checking for existing installplan")
1462+
logger.Info("checking for existing installplan")
14561463

14571464
// check if there's an installplan that created this subscription (only if it doesn't have a reference yet)
14581465
// this indicates it was newly resolved by another operator, and we should reference that installplan in the status
@@ -1808,7 +1815,7 @@ func (o *Operator) unpackBundles(namespace string, installPlanSteps []*v1alpha1.
18081815
}
18091816

18101817
if err := utilerrors.NewAggregate(errs); err != nil {
1811-
o.logger.Debugf("failed to unpack bundles: %v", err)
1818+
o.logger.Infof("failed to unpack bundles: %v", err)
18121819
return false, nil, nil, err
18131820
}
18141821

@@ -1889,7 +1896,7 @@ func (o *Operator) gcInstallPlans(log logrus.FieldLogger, namespace string) {
18891896
func (o *Operator) syncInstallPlans(obj interface{}) (syncError error) {
18901897
plan, ok := obj.(*v1alpha1.InstallPlan)
18911898
if !ok {
1892-
o.logger.Debugf("wrong type: %#v", obj)
1899+
o.logger.Infof("wrong type: %#v", obj)
18931900
return fmt.Errorf("casting InstallPlan failed")
18941901
}
18951902

pkg/controller/operators/catalog/operator_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1412,7 +1412,7 @@ func TestSyncResolvingNamespace(t *testing.T) {
14121412
o.reconciler = &fakes.FakeRegistryReconcilerFactory{
14131413
ReconcilerForSourceStub: func(source *v1alpha1.CatalogSource) reconciler.RegistryReconciler {
14141414
return &fakes.FakeRegistryReconciler{
1415-
EnsureRegistryServerStub: func(source *v1alpha1.CatalogSource) error {
1415+
EnsureRegistryServerStub: func(logger *logrus.Entry, source *v1alpha1.CatalogSource) error {
14161416
return nil
14171417
},
14181418
}
@@ -1748,7 +1748,7 @@ func TestSyncRegistryServer(t *testing.T) {
17481748
op.reconciler = &fakes.FakeRegistryReconcilerFactory{
17491749
ReconcilerForSourceStub: func(source *v1alpha1.CatalogSource) reconciler.RegistryReconciler {
17501750
return &fakes.FakeRegistryReconciler{
1751-
EnsureRegistryServerStub: func(source *v1alpha1.CatalogSource) error {
1751+
EnsureRegistryServerStub: func(logger *logrus.Entry, source *v1alpha1.CatalogSource) error {
17521752
return nil
17531753
},
17541754
}

pkg/controller/operators/catalog/subscription/reconciler.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"sort"
88

9+
"github.com/sirupsen/logrus"
910
apierrors "k8s.io/apimachinery/pkg/api/errors"
1011
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1112
"k8s.io/apimachinery/pkg/labels"
@@ -193,7 +194,7 @@ func (c *catalogHealthReconciler) healthy(catalog *v1alpha1.CatalogSource) (bool
193194
return false, fmt.Errorf("could not get reconciler for catalog: %#v", catalog)
194195
}
195196

196-
return rec.CheckRegistryServer(catalog)
197+
return rec.CheckRegistryServer(logrus.NewEntry(logrus.New()), catalog)
197198
}
198199

199200
// installPlanReconciler reconciles InstallPlan status for Subscriptions.

pkg/controller/operators/catalog/subscription/reconciler_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77
"time"
88

9+
"github.com/sirupsen/logrus"
910
"github.com/stretchr/testify/require"
1011
corev1 "k8s.io/api/core/v1"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -1676,7 +1677,7 @@ func fakeRegistryReconcilerFactory(healthy bool, err error) *olmfakes.FakeRegist
16761677
return &olmfakes.FakeRegistryReconcilerFactory{
16771678
ReconcilerForSourceStub: func(*v1alpha1.CatalogSource) registryreconciler.RegistryReconciler {
16781679
return &olmfakes.FakeRegistryReconciler{
1679-
CheckRegistryServerStub: func(*v1alpha1.CatalogSource) (bool, error) {
1680+
CheckRegistryServerStub: func(*logrus.Entry, *v1alpha1.CatalogSource) (bool, error) {
16801681
return healthy, err
16811682
},
16821683
}

pkg/controller/operators/catalog/subscriptions_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88
"time"
99

10+
"github.com/sirupsen/logrus"
1011
"github.com/stretchr/testify/require"
1112
corev1 "k8s.io/api/core/v1"
1213
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -1182,7 +1183,7 @@ func TestSyncSubscriptions(t *testing.T) {
11821183
o.reconciler = &fakes.FakeRegistryReconcilerFactory{
11831184
ReconcilerForSourceStub: func(source *v1alpha1.CatalogSource) reconciler.RegistryReconciler {
11841185
return &fakes.FakeRegistryReconciler{
1185-
EnsureRegistryServerStub: func(source *v1alpha1.CatalogSource) error {
1186+
EnsureRegistryServerStub: func(*logrus.Entry, *v1alpha1.CatalogSource) error {
11861187
return nil
11871188
},
11881189
}
@@ -1320,7 +1321,7 @@ func BenchmarkSyncResolvingNamespace(b *testing.B) {
13201321
reconciler: &fakes.FakeRegistryReconcilerFactory{
13211322
ReconcilerForSourceStub: func(*v1alpha1.CatalogSource) reconciler.RegistryReconciler {
13221323
return &fakes.FakeRegistryReconciler{
1323-
CheckRegistryServerStub: func(*v1alpha1.CatalogSource) (bool, error) {
1324+
CheckRegistryServerStub: func(*logrus.Entry, *v1alpha1.CatalogSource) (bool, error) {
13241325
return true, nil
13251326
},
13261327
}

pkg/controller/registry/reconciler/configmap.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (c *ConfigMapRegistryReconciler) currentPodsWithCorrectResourceVersion(sour
254254
}
255255

256256
// EnsureRegistryServer ensures that all components of registry server are up to date.
257-
func (c *ConfigMapRegistryReconciler) EnsureRegistryServer(catalogSource *v1alpha1.CatalogSource) error {
257+
func (c *ConfigMapRegistryReconciler) EnsureRegistryServer(logger *logrus.Entry, catalogSource *v1alpha1.CatalogSource) error {
258258
source := configMapCatalogSourceDecorator{catalogSource, c.createPodAsUser}
259259

260260
image := c.Image
@@ -403,7 +403,7 @@ func (c *ConfigMapRegistryReconciler) ensureService(source configMapCatalogSourc
403403
}
404404

405405
// CheckRegistryServer returns true if the given CatalogSource is considered healthy; false otherwise.
406-
func (c *ConfigMapRegistryReconciler) CheckRegistryServer(catalogSource *v1alpha1.CatalogSource) (healthy bool, err error) {
406+
func (c *ConfigMapRegistryReconciler) CheckRegistryServer(logger *logrus.Entry, catalogSource *v1alpha1.CatalogSource) (healthy bool, err error) {
407407
source := configMapCatalogSourceDecorator{catalogSource, c.createPodAsUser}
408408

409409
image := c.Image

pkg/controller/registry/reconciler/configmap_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/ghodss/yaml"
1111
k8slabels "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/kubernetes/pkg/util/labels"
12+
"github.com/sirupsen/logrus"
1213
"github.com/stretchr/testify/require"
1314
corev1 "k8s.io/api/core/v1"
1415
rbacv1 "k8s.io/api/rbac/v1"
@@ -444,7 +445,7 @@ func TestConfigMapRegistryReconciler(t *testing.T) {
444445
factory, client := fakeReconcilerFactory(t, stopc, withNow(now), withK8sObjs(tt.in.cluster.k8sObjs...), withK8sClientOptions(clientfake.WithNameGeneration(t)))
445446
rec := factory.ReconcilerForSource(tt.in.catsrc)
446447

447-
err := rec.EnsureRegistryServer(tt.in.catsrc)
448+
err := rec.EnsureRegistryServer(logrus.NewEntry(logrus.New()), tt.in.catsrc)
448449

449450
require.Equal(t, tt.out.err, err)
450451
require.Equal(t, tt.out.status, tt.in.catsrc.Status.RegistryServiceStatus)

0 commit comments

Comments
 (0)