bubble this up somehow
github-actions opened this issue · 1 comments
github-actions commented
}
}()
// TODO: we're not properly clearing out Bundle lookup errors despite the installation being successful
// TODO: need to at least add a simple message for when the InstallationSucceeded reason is present
// TODO: play around with pivoting behavior
// TODO: immutable bundles vs. updating bundles directly
b := &rukpakv1alpha1.Bundle{}
if err := r.Get(ctx, types.NamespacedName{Name: bi.Spec.Bundle.Name}, b); err != nil {
// check whether we're handling an embedded Bundle spec
if bi.Spec.Bundle.Spec == nil {
bundleStatus := metav1.ConditionUnknown
if apierrors.IsNotFound(err) {
bundleStatus = metav1.ConditionFalse
}
meta.SetStatusCondition(&bi.Status.Conditions, metav1.Condition{
Type: rukpakv1alpha1.TypeHasValidBundle,
Status: bundleStatus,
Reason: rukpakv1alpha1.ReasonBundleLookupFailed,
Message: err.Error(),
})
return ctrl.Result{}, client.IgnoreNotFound(err)
}
if apierrors.IsNotFound(err) {
bundleSpec := bi.Spec.Bundle.Spec
b = &rukpakv1alpha1.Bundle{
ObjectMeta: metav1.ObjectMeta{
Name: bi.Spec.Bundle.Name,
},
Spec: rukpakv1alpha1.BundleSpec{
ProvisionerClassName: bundleSpec.ProvisionerClassName,
Source: bundleSpec.Source,
},
}
if err := controllerutil.SetOwnerReference(bi, b, r.Scheme); err != nil {
return ctrl.Result{}, fmt.Errorf("failed to establish owner references for embedded bundle: %v", err)
}
if err := r.Create(ctx, b); err != nil {
// TODO: bubble this up somehow
return ctrl.Result{}, err
}
}
}
// r.ensureBundle -> bundle; r.ensureBundle calls r.ensureEmbeddedBundle under-the-hood?
// TODO: create an r.ensureEmbeddedBundle(...) method
// TODO: check case for missing owner references
if bi.Spec.Bundle.Spec != nil {
var needsUpdate bool
if b.GetName() != bi.Spec.Bundle.Name {
b.Name = bi.Spec.Bundle.Name
needsUpdate = true
}
if !equality.Semantic.DeepEqual(b.Spec, bi.Spec.Bundle.Spec) {
b.Spec = *bi.Spec.Bundle.Spec
needsUpdate = true
}
// check whether we need to update the embedded Bundle resource and
// let r.loadBundle determine whether the Bundle is reporting a non-sucessful
// bundle unpack status.
if needsUpdate {
if err := r.Update(ctx, b); err != nil {
// TODO: bubble this up to the status
return ctrl.Result{}, fmt.Errorf("failed to update the embedded bundle: %v", err)
}
}
}
// TODO: handle the interaction between installed and desired Bundle status field
desiredObjects, err := r.loadBundle(ctx, bi)
if err != nil {
github-actions commented
This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the lifecycle/frozen
label will cause this issue to ignore lifecycle events.