|
7 | 7 | "os" |
8 | 8 | "time" |
9 | 9 |
|
| 10 | + configv1 "github.com/openshift/api/config/v1" |
| 11 | + operatorv1alpha1 "github.com/openshift/api/operator/v1alpha1" |
| 12 | + |
10 | 13 | _ "github.com/openshift/api/operator/v1alpha1/zz_generated.crd-manifests" |
11 | 14 | "github.com/openshift/library-go/pkg/controller/controllercmd" |
12 | 15 | "github.com/openshift/library-go/pkg/controller/factory" |
@@ -149,6 +152,14 @@ func runOperator(ctx context.Context, cc *controllercmd.ControllerContext) error |
149 | 152 | versionGetter := status.NewVersionGetter() |
150 | 153 | versionGetter.SetVersion("operator", status.VersionForOperatorFromEnv()) |
151 | 154 |
|
| 155 | + // Add OLM resource and openshift-cluster-olm-operator namespace to relatedObjects |
| 156 | + // to ensure that must-gather picks them up. |
| 157 | + // Note: These two resources are also hard-coded in the ClusterOperator manifest. This way, |
| 158 | + // must-gather will pick them up in case of catastrophic failure before we cluster-olm-operator |
| 159 | + // gets a chance to dynamically update the relatedObjects. Thus, making the pod logs accessible |
| 160 | + // for troubleshooting in the must-gather. |
| 161 | + relatedObjects = append(relatedObjects, newOLMObjectReference(), newNamespaceObjectReference()) |
| 162 | + |
152 | 163 | clusterOperatorController := status.NewClusterOperatorStatusController( |
153 | 164 | "olm", |
154 | 165 | relatedObjects, |
@@ -189,3 +200,23 @@ func runOperator(ctx context.Context, cc *controllercmd.ControllerContext) error |
189 | 200 | <-ctx.Done() |
190 | 201 | return nil |
191 | 202 | } |
| 203 | + |
| 204 | +// newOLMObjectReference creates a configv1.ObjectReference for |
| 205 | +// the cluster scoped OLM resources |
| 206 | +func newOLMObjectReference() configv1.ObjectReference { |
| 207 | + return configv1.ObjectReference{ |
| 208 | + Group: operatorv1alpha1.GroupName, |
| 209 | + Resource: "olms", |
| 210 | + Name: "cluster", |
| 211 | + } |
| 212 | +} |
| 213 | + |
| 214 | +// newNamespaceObjectReferences creates a configv1.ObjectReference for |
| 215 | +// the OCP namespaces where this operator is installed: openshift-cluster-olm-operator |
| 216 | +func newNamespaceObjectReference() configv1.ObjectReference { |
| 217 | + return configv1.ObjectReference{ |
| 218 | + Group: "", |
| 219 | + Resource: "namespaces", |
| 220 | + Name: "openshift-cluster-olm-operator", |
| 221 | + } |
| 222 | +} |
0 commit comments