@@ -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
0 commit comments