Skip to content

Commit 756be5c

Browse files
Merge pull request #681 from alecmerdler/ALM-878
Ensure Owner References on ConfigMaps for CatalogSources
2 parents 3af3a51 + 81a852c commit 756be5c

File tree

6 files changed

+72
-8
lines changed

6 files changed

+72
-8
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,5 @@ require (
5555
k8s.io/klog v0.1.0 // indirect
5656
k8s.io/kube-aggregator v0.0.0-20181204002017-122bac39d429
5757
k8s.io/kube-openapi v0.0.0-20181031203759-72693cb1fadd
58-
k8s.io/kubernetes v1.11.7-beta.0.0.20190118094746-65ecaf067134
58+
k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2
5959
)

go.sum

Lines changed: 51 additions & 4 deletions
Large diffs are not rendered by default.

pkg/controller/operators/catalog/operator.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,10 @@ func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {
354354
return fmt.Errorf("failed to get catalog config map %s: %s", catsrc.Spec.ConfigMap, err)
355355
}
356356

357+
if wasOwned := ownerutil.EnsureOwner(configMap, catsrc); !wasOwned {
358+
o.OpClient.KubernetesInterface().CoreV1().ConfigMaps(configMap.GetNamespace()).Update(configMap)
359+
}
360+
357361
if catsrc.Status.ConfigMapResource == nil || catsrc.Status.ConfigMapResource.UID != configMap.GetUID() || catsrc.Status.ConfigMapResource.ResourceVersion != configMap.GetResourceVersion() {
358362
logger.Debug("updating catsrc configmap state")
359363
// configmap ref nonexistent or updated, write out the new configmap ref to status and exit
@@ -364,8 +368,6 @@ func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {
364368
ResourceVersion: configMap.GetResourceVersion(),
365369
}
366370
out.Status.LastSync = timeNow()
367-
368-
// update status
369371
if _, err = o.client.OperatorsV1alpha1().CatalogSources(out.GetNamespace()).UpdateStatus(out); err != nil {
370372
return err
371373
}

pkg/controller/operators/catalog/operator_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
3535
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister"
3636
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/queueinformer"
37+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/ownerutil"
3738
)
3839

3940
type mockTransitioner struct {
@@ -368,6 +369,10 @@ func TestSyncCatalogSources(t *testing.T) {
368369
if tt.expectedStatus != nil {
369370
require.NotEmpty(t, updated.Status)
370371
require.Equal(t, *tt.expectedStatus.ConfigMapResource, *updated.Status.ConfigMapResource)
372+
373+
configMap, err := op.OpClient.KubernetesInterface().CoreV1().ConfigMaps(tt.catalogSource.GetNamespace()).Get(tt.catalogSource.Spec.ConfigMap, metav1.GetOptions{})
374+
require.NoError(t, err)
375+
require.True(t, ownerutil.EnsureOwner(configMap, updated))
371376
}
372377
})
373378
}

pkg/lib/ownerutil/util.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,16 @@ func AddOwner(object metav1.Object, owner Owner, blockOwnerDeletion, isControlle
190190
object.SetOwnerReferences(ownerRefs)
191191
}
192192

193+
// EnsureOwner adds a new owner if needed and returns whether the object already had the owner.
194+
func EnsureOwner(object metav1.Object, owner Owner) bool {
195+
if IsOwnedBy(object, owner) {
196+
return true
197+
} else {
198+
AddNonBlockingOwner(object, owner)
199+
return false
200+
}
201+
}
202+
193203
// InferGroupVersionKind adds TypeMeta to an owner so that it can be written to an ownerref.
194204
// TypeMeta is generally only known at serialization time, so we often won't know what GVK an owner has.
195205
// For the types we know about, we can add the GVK of the apis that we're using the interact with the object.

vendor/modules.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ k8s.io/kube-openapi/pkg/generators/rules
664664
k8s.io/kube-openapi/pkg/builder
665665
k8s.io/kube-openapi/pkg/handler
666666
k8s.io/kube-openapi/pkg/util/sets
667-
# k8s.io/kubernetes v1.11.7-beta.0.0.20190118094746-65ecaf067134
667+
# k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2
668668
k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac
669669
k8s.io/kubernetes/pkg/apis/rbac/v1
670670
k8s.io/kubernetes/pkg/registry/rbac/validation

0 commit comments

Comments
 (0)