Skip to content

Commit 5aa4905

Browse files
committed
STONEBLD-1437 Use ownerreferences for jbsconfig
1 parent 519aafd commit 5aa4905

File tree

5 files changed

+83
-148
lines changed

5 files changed

+83
-148
lines changed

pkg/apis/jvmbuildservice/v1alpha1/systemconfig_types.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ const (
77
JDK8Builder = "jdk8"
88
JDK11Builder = "jdk11"
99
JDK17Builder = "jdk17"
10-
ControllerNamespace = "jvm-build-service"
1110
DefaultRecipeDatabase = "https://github.com/redhat-appstudio/jvm-build-data"
12-
13-
OpenShiftQuota = QuotaImpl("openshift")
14-
K8SQuota = QuotaImpl("kubernetes")
1511
)
1612

1713
type QuotaImpl string

pkg/reconciler/artifactbuild/artifactbuild.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,10 @@ func removePipelineFinalizer(ctx context.Context, pr *pipelinev1beta1.PipelineRu
219219
}
220220

221221
func setArtifactState(log *logr.Logger, abr *v1alpha1.ArtifactBuild, state string) {
222-
if abr.Status.State != state {
223-
log.Info(fmt.Sprintf("ArtifactBuild %s changing state from %s to %s", abr.Name, abr.Status.State, state))
224-
abr.Status.State = state
222+
abr.Status.State = state
223+
switch state {
224+
case v1alpha1.ArtifactBuildStateFailed, v1alpha1.ArtifactBuildStateComplete:
225+
log.Info(fmt.Sprintf("ArtifactBuild %s has state set to %s", abr.Name, state))
225226
}
226227
}
227228

pkg/reconciler/jbsconfig/jbsconfig.go

Lines changed: 34 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/redhat-appstudio/image-controller/pkg/quay"
99
"github.com/redhat-appstudio/jvm-build-service/pkg/reconciler/systemconfig"
1010
"github.com/redhat-appstudio/service-provider-integration-operator/api/v1beta1"
11-
"go.uber.org/multierr"
1211
"regexp"
1312
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1413
"sort"
@@ -38,7 +37,6 @@ import (
3837
const (
3938
TlsServiceName = v1alpha1.CacheDeploymentName + "-tls"
4039
TestRegistry = "jvmbuildservice.io/test-registry"
41-
JBSConfigFinalizer = "jvmbuildservice.io/jbsconfig-finalizer"
4240
ImageRepositoryFinalizer = "jvmbuildservice.io/quay-repository-finalizer"
4341
DeleteImageRepositoryAnnotationName = "image.redhat.com/delete-image-repo"
4442
UploadSecretName = "jvm-build-service-temp-upload-secret" //#nosec
@@ -84,25 +82,15 @@ func (r *ReconcilerJBSConfig) Reconcile(ctx context.Context, request reconcile.R
8482
jbsConfig := v1alpha1.JBSConfig{}
8583
err := r.client.Get(ctx, request.NamespacedName, &jbsConfig)
8684
if err != nil {
87-
fmt.Printf("### Reconcile::afterClientGet for %s with error %s and jbsconfig %s\n", request.Name, err,
88-
jbsConfig.DeletionTimestamp.IsZero())
89-
// Deleted JBSConfig - delete cache resources
90-
// if errors.IsNotFound(err) && request.Name == v1alpha1.JBSConfigName {
91-
//// return r.handleConfigDeleted(ctx, request, log)
92-
// }
9385
return reconcile.Result{}, err
9486
}
9587
if !jbsConfig.DeletionTimestamp.IsZero() {
9688
// The object is being deleted.
97-
fmt.Printf("### Reconcile::deletiontimestamp %s \n", jbsConfig.DeletionTimestamp.String())
98-
return reconcile.Result{}, multierr.Append(r.handlePossibleJBCConfigCleanup(ctx, &jbsConfig, log, request), r.handlePossibleRepositoryCleanup(ctx, &jbsConfig, log))
89+
return reconcile.Result{}, r.handlePossibleRepositoryCleanup(ctx, &jbsConfig, log)
9990
}
10091

10192
//TODO do we eventually want to allow more than one JBSConfig per namespace?
10293
if jbsConfig.Name == v1alpha1.JBSConfigName {
103-
if err := r.insertFinalizerIfMissing(ctx, &jbsConfig, log); err != nil {
104-
return reconcile.Result{}, err
105-
}
10694
systemConfig := v1alpha1.SystemConfig{}
10795
err := r.client.Get(ctx, types.NamespacedName{Name: systemconfig.SystemConfigKey}, &systemConfig)
10896
if err != nil {
@@ -124,7 +112,7 @@ func (r *ReconcilerJBSConfig) Reconcile(ctx context.Context, request reconcile.R
124112
return reconcile.Result{}, nil
125113
}
126114

127-
err = r.deploymentSupportObjects(ctx, log, request, &jbsConfig)
115+
err = r.deploymentSupportObjects(ctx, request, &jbsConfig)
128116
if err != nil {
129117
return reconcile.Result{}, err
130118
}
@@ -172,89 +160,13 @@ func (r *ReconcilerJBSConfig) handlePossibleRepositoryCleanup(ctx context.Contex
172160
return nil
173161
}
174162

175-
func (r *ReconcilerJBSConfig) handleConfigDeleted(ctx context.Context, request reconcile.Request, log logr.Logger) {
176-
177-
fmt.Printf("### handleConfigDeleted for %s\n", request.Namespace)
178-
service := &corev1.Service{}
179-
service.Name = v1alpha1.CacheDeploymentName
180-
service.Namespace = request.Namespace
181-
err := r.client.Delete(ctx, service)
182-
if err != nil && !errors.IsNotFound(err) {
183-
msg := fmt.Sprintf("Unable to delete service - %s", err.Error())
184-
log.Error(err, msg)
185-
r.eventRecorder.Event(service, corev1.EventTypeWarning, msg, "")
186-
}
187-
service = &corev1.Service{}
188-
service.Name = TlsServiceName
189-
service.Namespace = request.Namespace
190-
err = r.client.Delete(ctx, service)
191-
if err != nil && !errors.IsNotFound(err) {
192-
msg := fmt.Sprintf("Unable to delete service - %s", err.Error())
193-
log.Error(err, msg)
194-
r.eventRecorder.Event(service, corev1.EventTypeWarning, msg, "")
195-
}
196-
tlsConfigMap := &corev1.ConfigMap{}
197-
tlsConfigMap.Name = v1alpha1.TlsConfigMapName
198-
tlsConfigMap.Namespace = request.Namespace
199-
err = r.client.Delete(ctx, tlsConfigMap)
200-
if err != nil && !errors.IsNotFound(err) {
201-
msg := fmt.Sprintf("Unable to delete configmap - %s", err.Error())
202-
log.Error(err, msg)
203-
r.eventRecorder.Event(service, corev1.EventTypeWarning, msg, "")
204-
}
205-
serviceAccount := &corev1.ServiceAccount{}
206-
serviceAccount.Name = v1alpha1.CacheDeploymentName
207-
serviceAccount.Namespace = request.Namespace
208-
err = r.client.Delete(ctx, serviceAccount)
209-
if err != nil && !errors.IsNotFound(err) {
210-
msg := fmt.Sprintf("Unable to delete serviceAccount - %s", err.Error())
211-
log.Error(err, msg)
212-
r.eventRecorder.Event(serviceAccount, corev1.EventTypeWarning, msg, "")
213-
}
214-
roleBinding := &rbacv1.RoleBinding{}
215-
roleBinding.Name = v1alpha1.CacheDeploymentName
216-
roleBinding.Namespace = request.Namespace
217-
err = r.client.Delete(ctx, roleBinding)
218-
if err != nil && !errors.IsNotFound(err) {
219-
msg := fmt.Sprintf("Unable to delete roleBinding - %s", err.Error())
220-
log.Error(err, msg)
221-
r.eventRecorder.Event(roleBinding, corev1.EventTypeWarning, msg, "")
222-
}
223-
deployment := &appsv1.Deployment{}
224-
deployment.Name = v1alpha1.CacheDeploymentName
225-
deployment.Namespace = request.Namespace
226-
err = r.client.Delete(ctx, deployment)
227-
if err != nil && !errors.IsNotFound(err) {
228-
msg := fmt.Sprintf("Unable to delete deployment - %s", err.Error())
229-
log.Error(err, msg)
230-
r.eventRecorder.Event(deployment, corev1.EventTypeWarning, msg, "")
231-
}
232-
pvc := &corev1.PersistentVolumeClaim{}
233-
pvc.Name = v1alpha1.CacheDeploymentName
234-
pvc.Namespace = request.Namespace
235-
err = r.client.Delete(ctx, pvc)
236-
if err != nil && !errors.IsNotFound(err) {
237-
msg := fmt.Sprintf("Unable to delete PersistentVolumeClaim - %s", err.Error())
238-
log.Error(err, msg)
239-
r.eventRecorder.Event(deployment, corev1.EventTypeWarning, msg, "")
240-
}
241-
binding := &v1beta1.SPIAccessTokenBinding{}
242-
binding.Name = v1alpha1.ImageSecretName
243-
binding.Namespace = request.Namespace
244-
err = r.client.Delete(ctx, binding)
245-
if err != nil && !errors.IsNotFound(err) {
246-
msg := fmt.Sprintf("Unable to delete SPIAccessTokenBinding - %s", err.Error())
247-
log.Error(err, msg)
248-
r.eventRecorder.Event(deployment, corev1.EventTypeWarning, msg, "")
249-
}
250-
}
251-
252163
func settingOrDefault(setting, def string) string {
253164
if len(strings.TrimSpace(setting)) == 0 {
254165
return def
255166
}
256167
return setting
257168
}
169+
258170
func generateRobotAccountName(component *v1alpha1.JBSConfig) string {
259171
robotAccountName := component.Namespace + component.Name
260172
robotAccountName = strings.Replace(robotAccountName, "-", "_", -1)
@@ -334,8 +246,7 @@ func (r *ReconcilerJBSConfig) validations(ctx context.Context, log logr.Logger,
334246
if r.spiPresent {
335247
return r.handleNoImageSecretFound(ctx, jbsConfig)
336248
} else {
337-
errorMessage := "Secret jvm-build-image-secrets not found, and SPI not installed. Rebuilds not possible."
338-
return errors2.New(errorMessage)
249+
return errors2.New("secret jvm-build-image-secrets not found, and SPI not installed. Rebuilds not possible")
339250
}
340251

341252
}
@@ -360,7 +271,7 @@ func (r *ReconcilerJBSConfig) validations(ctx context.Context, log logr.Logger,
360271
return nil
361272
}
362273

363-
func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log logr.Logger, request reconcile.Request, jbsConfig *v1alpha1.JBSConfig) error {
274+
func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, request reconcile.Request, jbsConfig *v1alpha1.JBSConfig) error {
364275
//TODO may have to switch to ephemeral storage for KCP until storage story there is sorted out
365276
pvc := corev1.PersistentVolumeClaim{}
366277
deploymentName := types.NamespacedName{Namespace: request.Namespace, Name: v1alpha1.CacheDeploymentName}
@@ -376,8 +287,11 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
376287
return err
377288
}
378289
pvc.Spec.Resources.Requests = map[corev1.ResourceName]resource.Quantity{"storage": qty}
379-
err = r.client.Create(ctx, &pvc)
380-
if err != nil {
290+
291+
if err := controllerutil.SetOwnerReference(jbsConfig, &pvc, r.scheme); err != nil {
292+
return err
293+
}
294+
if err := r.client.Create(ctx, &pvc); err != nil {
381295
return err
382296
}
383297
}
@@ -403,8 +317,10 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
403317
Selector: map[string]string{"app": v1alpha1.CacheDeploymentName},
404318
},
405319
}
406-
err := r.client.Create(ctx, &service)
407-
if err != nil {
320+
if err := controllerutil.SetOwnerReference(jbsConfig, &service, r.scheme); err != nil {
321+
return err
322+
}
323+
if err := r.client.Create(ctx, &service); err != nil {
408324
return err
409325
}
410326
}
@@ -431,8 +347,10 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
431347
Selector: map[string]string{"app": v1alpha1.CacheDeploymentName},
432348
},
433349
}
434-
err := r.client.Create(ctx, &service)
435-
if err != nil {
350+
if err := controllerutil.SetOwnerReference(jbsConfig, &service, r.scheme); err != nil {
351+
return err
352+
}
353+
if err := r.client.Create(ctx, &service); err != nil {
436354
return err
437355
}
438356
}
@@ -449,8 +367,10 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
449367
Annotations: map[string]string{"service.beta.openshift.io/inject-cabundle": "true"},
450368
},
451369
}
452-
err := r.client.Create(ctx, &service)
453-
if err != nil {
370+
if err := controllerutil.SetOwnerReference(jbsConfig, &service, r.scheme); err != nil {
371+
return err
372+
}
373+
if err := r.client.Create(ctx, &service); err != nil {
454374
return err
455375
}
456376
}
@@ -465,8 +385,10 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
465385
sa := corev1.ServiceAccount{}
466386
sa.Name = v1alpha1.CacheDeploymentName
467387
sa.Namespace = request.Namespace
468-
err := r.client.Create(ctx, &sa)
469-
if err != nil {
388+
if err := controllerutil.SetOwnerReference(jbsConfig, &sa, r.scheme); err != nil {
389+
return err
390+
}
391+
if err := r.client.Create(ctx, &sa); err != nil {
470392
return err
471393
}
472394
}
@@ -481,8 +403,10 @@ func (r *ReconcilerJBSConfig) deploymentSupportObjects(ctx context.Context, log
481403
cb.Namespace = request.Namespace
482404
cb.RoleRef = rbacv1.RoleRef{Kind: "ClusterRole", Name: "hacbs-jvm-cache", APIGroup: "rbac.authorization.k8s.io"}
483405
cb.Subjects = []rbacv1.Subject{{Kind: "ServiceAccount", Name: v1alpha1.CacheDeploymentName, Namespace: request.Namespace}}
484-
err := r.client.Create(ctx, &cb)
485-
if err != nil {
406+
if err = controllerutil.SetOwnerReference(jbsConfig, &cb, r.scheme); err != nil {
407+
return err
408+
}
409+
if err := r.client.Create(ctx, &cb); err != nil {
486410
return err
487411
}
488412
}
@@ -509,7 +433,7 @@ func (r *ReconcilerJBSConfig) cacheDeployment(ctx context.Context, log logr.Logg
509433
cache.Spec.Replicas = &replicas
510434
cache.Spec.Strategy = appsv1.DeploymentStrategy{Type: appsv1.RecreateDeploymentStrategyType}
511435
cache.Spec.Selector = &metav1.LabelSelector{MatchLabels: map[string]string{"app": v1alpha1.CacheDeploymentName}}
512-
cache.Spec.Template.ObjectMeta.Labels = map[string]string{"app": v1alpha1.CacheDeploymentName}
436+
cache.Spec.Template.Labels = map[string]string{"app": v1alpha1.CacheDeploymentName}
513437
cache.Spec.Template.Spec.Containers = []corev1.Container{{
514438
Name: v1alpha1.CacheDeploymentName,
515439
ImagePullPolicy: corev1.PullIfNotPresent,
@@ -676,6 +600,9 @@ func (r *ReconcilerJBSConfig) cacheDeployment(ctx context.Context, log logr.Logg
676600
}
677601

678602
if create {
603+
if err := controllerutil.SetOwnerReference(jbsConfig, cache, r.scheme); err != nil {
604+
return err
605+
}
679606
return r.client.Create(ctx, cache)
680607
} else {
681608
return r.client.Update(ctx, cache)
@@ -828,35 +755,6 @@ func (r *ReconcilerJBSConfig) generateImageRepository(log logr.Logger, component
828755
return repo, robotAccount, nil
829756
}
830757

831-
func (r *ReconcilerJBSConfig) insertFinalizerIfMissing(ctx context.Context, jbsConfig *v1alpha1.JBSConfig, log logr.Logger) error {
832-
if !controllerutil.ContainsFinalizer(jbsConfig, JBSConfigFinalizer) {
833-
fmt.Printf("### Adding finalizer %s to %s\n", JBSConfigFinalizer, jbsConfig.GetFinalizers())
834-
controllerutil.AddFinalizer(jbsConfig, JBSConfigFinalizer)
835-
if err := r.client.Update(ctx, jbsConfig); err != nil {
836-
log.Error(err, "Failed to add JBSConfig repository finalizer")
837-
return err
838-
}
839-
}
840-
return nil
841-
}
842-
843-
func (r *ReconcilerJBSConfig) handlePossibleJBCConfigCleanup(ctx context.Context, jbsConfig *v1alpha1.JBSConfig, log logr.Logger, request reconcile.Request) error {
844-
if controllerutil.ContainsFinalizer(jbsConfig, JBSConfigFinalizer) {
845-
fmt.Printf("### Removing finalizer %s to %s\n", JBSConfigFinalizer, jbsConfig.GetFinalizers())
846-
847-
if request.Name == v1alpha1.JBSConfigName {
848-
r.handleConfigDeleted(ctx, request, log)
849-
}
850-
851-
controllerutil.RemoveFinalizer(jbsConfig, JBSConfigFinalizer)
852-
if err := r.client.Update(ctx, jbsConfig); err != nil {
853-
log.Error(err, "Failed to remove JBSConfig finalizer")
854-
return err
855-
}
856-
}
857-
return nil
858-
}
859-
860758
// generateSecret dumps the robot account token into a Secret for future consumption.
861759
func generateSecret(c *v1alpha1.JBSConfig, r quay.RobotAccount, imageURL string, spiPresent bool) corev1.Secret {
862760
secret := corev1.Secret{

0 commit comments

Comments
 (0)