Skip to content

Commit bd292c7

Browse files
committed
Recreating desired KnativeServing state on reconciliation
1 parent b6e6078 commit bd292c7

File tree

3 files changed

+47
-40
lines changed

3 files changed

+47
-40
lines changed

pkg/reconciler/knativeserving/knativeserving_controller.go

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,23 @@ func (r *Reconciler) reconcile(ctx context.Context, ks *servingv1alpha1.KnativeS
107107

108108
// TODO: We need to find a better way to make sure the instance has the updated info.
109109
ks.SetGroupVersionKind(servingv1alpha1.SchemeGroupVersion.WithKind("KnativeServing"))
110-
stages := []func(*servingv1alpha1.KnativeServing) error{
111-
r.initStatus,
112-
r.install,
110+
if err := r.initStatus(ks); err != nil {
111+
return err
112+
}
113+
114+
config, err := r.transformManifest(ks)
115+
if err != nil {
116+
return err
117+
}
118+
119+
stages := []func(*servingv1alpha1.KnativeServing, *mf.Manifest) error{
120+
r.applyManifest,
113121
r.checkDeployments,
114122
r.deleteObsoleteResources,
115123
}
116124

117125
for _, stage := range stages {
118-
if err := stage(ks); err != nil {
126+
if err := stage(ks, config); err != nil {
119127
return err
120128
}
121129
}
@@ -148,34 +156,24 @@ func (r *Reconciler) updateStatus(instance *servingv1alpha1.KnativeServing) erro
148156
}
149157

150158
// Install the resources from the Manifest
151-
func (r *Reconciler) install(instance *servingv1alpha1.KnativeServing) error {
152-
r.Logger.Infof("Installing knative-serving. The current status is %q.", instance.Status)
153-
defer r.updateStatus(instance)
154-
155-
if err := r.transform(instance); err != nil {
156-
return err
157-
}
158-
if err := r.apply(instance); err != nil {
159-
return err
160-
}
161-
return nil
162-
}
163-
164-
// Transform the resources
165-
func (r *Reconciler) transform(instance *servingv1alpha1.KnativeServing) error {
159+
func (r *Reconciler) transformManifest(instance *servingv1alpha1.KnativeServing) (*mf.Manifest, error) {
166160
transforms, err := platform.Transformers(r.KubeClientSet, instance)
167161
if err != nil {
168-
return err
162+
return nil, err
169163
}
170-
if err := r.config.Transform(transforms...); err != nil {
171-
return err
164+
desiredManifest, err := r.config.Transform(transforms...)
165+
if err != nil {
166+
return nil, err
172167
}
173-
return nil
168+
return desiredManifest.(*mf.Manifest), nil
174169
}
175170

176-
// Apply the embedded resources
177-
func (r *Reconciler) apply(instance *servingv1alpha1.KnativeServing) error {
178-
if err := r.config.ApplyAll(); err != nil {
171+
// Install the resources from the Manifest
172+
func (r *Reconciler) applyManifest(instance *servingv1alpha1.KnativeServing, config *mf.Manifest) error {
173+
r.Logger.Infof("Installing knative-serving. The current status is %q.", instance.Status)
174+
defer r.updateStatus(instance)
175+
176+
if err := config.ApplyAll(); err != nil {
179177
instance.Status.MarkInstallFailed(err.Error())
180178
return err
181179
}
@@ -186,7 +184,7 @@ func (r *Reconciler) apply(instance *servingv1alpha1.KnativeServing) error {
186184
}
187185

188186
// Check for all deployments available
189-
func (r *Reconciler) checkDeployments(instance *servingv1alpha1.KnativeServing) error {
187+
func (r *Reconciler) checkDeployments(instance *servingv1alpha1.KnativeServing, config *mf.Manifest) error {
190188
r.Logger.Infof("Checking the deployments. The current status is %q.", instance.Status)
191189
defer r.updateStatus(instance)
192190
available := func(d *appsv1.Deployment) bool {
@@ -197,7 +195,7 @@ func (r *Reconciler) checkDeployments(instance *servingv1alpha1.KnativeServing)
197195
}
198196
return false
199197
}
200-
for _, u := range r.config.Resources {
198+
for _, u := range config.Resources {
201199
if u.GetKind() == "Deployment" {
202200
deployment, err := r.KubeClientSet.AppsV1().Deployments(u.GetNamespace()).Get(u.GetName(), metav1.GetOptions{})
203201
if err != nil {
@@ -219,24 +217,24 @@ func (r *Reconciler) checkDeployments(instance *servingv1alpha1.KnativeServing)
219217
}
220218

221219
// Delete obsolete resources from previous versions
222-
func (r *Reconciler) deleteObsoleteResources(instance *servingv1alpha1.KnativeServing) error {
220+
func (r *Reconciler) deleteObsoleteResources(instance *servingv1alpha1.KnativeServing, config *mf.Manifest) error {
223221
// istio-system resources from 0.3
224222
resource := &unstructured.Unstructured{}
225223
resource.SetNamespace("istio-system")
226224
resource.SetName("knative-ingressgateway")
227225
resource.SetAPIVersion("v1")
228226
resource.SetKind("Service")
229-
if err := r.config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
227+
if err := config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
230228
return err
231229
}
232230
resource.SetAPIVersion("apps/v1")
233231
resource.SetKind("Deployment")
234-
if err := r.config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
232+
if err := config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
235233
return err
236234
}
237235
resource.SetAPIVersion("autoscaling/v1")
238236
resource.SetKind("HorizontalPodAutoscaler")
239-
if err := r.config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
237+
if err := config.Delete(resource, &metav1.DeleteOptions{}); err != nil {
240238
return err
241239
}
242240
// config-controller from 0.5

vendor/github.com/jcrossley3/manifestival/manifestival.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/jcrossley3/manifestival/transform.go

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)