Skip to content

Commit f7814cb

Browse files
authored
Merge pull request #2086 from tecarter94/enforce-dependency-build-ownership-of-build-recipe
Enforce dependency build ownership of build recipe config map
2 parents 53fe140 + 3bc7a68 commit f7814cb

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

deploy/operator/base/rbac.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ rules:
151151
verbs:
152152
- get
153153
- create
154+
- update
154155
- apiGroups:
155156
- ""
156157
resources:

openshift-with-appstudio-test/e2e/basictests.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/redhat-appstudio/jvm-build-service/pkg/reconciler/util"
88
portforward "github.com/swist/go-k8s-portforward"
99
"io"
10+
"k8s.io/apimachinery/pkg/api/errors"
1011
"knative.dev/pkg/apis"
1112
"net/http"
1213
"os"
@@ -626,6 +627,44 @@ func runDbTests(path string, testSet string, ta *testArgs) {
626627
})
627628

628629
pf.Stop()
630+
631+
ta.t.Run(fmt.Sprintf("buildrecipe is deleted with dependencybuild for %s", s), func(t *testing.T) {
632+
defer GenerateStatusReport(ta.ns, jvmClient, kubeClient, tektonClient)
633+
err = wait.PollUntilContextTimeout(context.TODO(), ta.interval, time.Hour, true, func(ctx context.Context) (done bool, err error) {
634+
err = jvmClient.JvmbuildserviceV1alpha1().DependencyBuilds(ta.ns).Delete(context.TODO(), db.Name, metav1.DeleteOptions{})
635+
if err != nil {
636+
ta.Logf(fmt.Sprintf("error deleting dependencybuild %s for repo %s: %s", db.Name, db.Spec.ScmInfo.SCMURL, err.Error()))
637+
return false, err
638+
}
639+
retrievedDb, err := jvmClient.JvmbuildserviceV1alpha1().DependencyBuilds(ta.ns).Get(context.TODO(), db.Name, metav1.GetOptions{})
640+
if err != nil {
641+
if errors.IsNotFound(err) {
642+
ta.Logf(fmt.Sprintf("successfully deleted dependencybuild %s for repo %s", db.Name, db.Spec.ScmInfo.SCMURL))
643+
} else {
644+
ta.Logf(fmt.Sprintf("error retrieving dependencybuild %s for repo %s: %s", db.Name, db.Spec.ScmInfo.SCMURL, err.Error()))
645+
return false, err
646+
}
647+
} else if retrievedDb != nil {
648+
ta.Logf(fmt.Sprintf("failed to delete dependencybuild %s for repo %s", retrievedDb.Name, retrievedDb.Spec.ScmInfo.SCMURL))
649+
}
650+
retrievedCfgMap, err := kubeClient.CoreV1().ConfigMaps(ta.ns).Get(context.TODO(), cfgMap.Name, metav1.GetOptions{})
651+
if err != nil {
652+
if errors.IsNotFound(err) {
653+
ta.Logf(fmt.Sprintf("successfully deleted configmap %s for dependencybuild repo %s", cfgMap.Name, db.Spec.ScmInfo.SCMURL))
654+
return true, nil
655+
} else {
656+
ta.Logf(fmt.Sprintf("error retrieving configmap %s for dependencybuild repo %s: %s", cfgMap.Name, db.Spec.ScmInfo.SCMURL, err.Error()))
657+
return false, err
658+
}
659+
} else if retrievedCfgMap != nil {
660+
ta.Logf(fmt.Sprintf("failed to delete configmap %s for dependencybuild repo %s", retrievedCfgMap.Name, retrievedDb.Spec.ScmInfo.SCMURL))
661+
}
662+
return false, nil
663+
})
664+
if err != nil {
665+
debugAndFailTest(ta, fmt.Sprintf("timed out waiting for deletion of configmap %s for dependencybuild repo %s", db.Name, db.Spec.ScmInfo.SCMURL))
666+
}
667+
})
629668
}
630669
}
631670

pkg/reconciler/dependencybuild/dependencybuild.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,22 @@ func (r *ReconcileDependencyBuild) handleRedeployAnnotation(ctx context.Context,
215215
func (r *ReconcileDependencyBuild) handleStateNew(ctx context.Context, db *v1alpha1.DependencyBuild) (reconcile.Result, error) {
216216

217217
log, _ := logr.FromContext(ctx)
218+
var err error
219+
if len(db.Spec.BuildRecipeConfigMap) > 0 {
220+
configMap := v1.ConfigMap{}
221+
err = r.client.Get(ctx, types.NamespacedName{Namespace: db.Namespace, Name: db.Spec.BuildRecipeConfigMap}, &configMap)
222+
if err != nil {
223+
return reconcile.Result{}, err
224+
}
225+
if err := controllerutil.SetOwnerReference(db, &configMap, r.scheme); err != nil {
226+
return reconcile.Result{}, err
227+
}
228+
if err := r.client.Update(ctx, &configMap); err != nil {
229+
return reconcile.Result{}, err
230+
}
231+
}
218232
jbsConfig := &v1alpha1.JBSConfig{}
219-
err := r.client.Get(ctx, types.NamespacedName{Namespace: db.Namespace, Name: v1alpha1.JBSConfigName}, jbsConfig)
233+
err = r.client.Get(ctx, types.NamespacedName{Namespace: db.Namespace, Name: v1alpha1.JBSConfigName}, jbsConfig)
220234
if err != nil && !errors.IsNotFound(err) {
221235
return reconcile.Result{}, err
222236
}

0 commit comments

Comments
 (0)