Skip to content

Commit

Permalink
Uses a pre-release of manifestival to fix knative#138
Browse files Browse the repository at this point in the history
This relies on the Transform function now being immutable, returning a
new Manifest instead of mutating its source resources.

This is related to knative#163 as well.
  • Loading branch information
jcrossley3 committed Sep 11, 2019
1 parent da14107 commit fafbc40
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 26 deletions.
6 changes: 3 additions & 3 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ required = [

[[constraint]]
name = "github.com/jcrossley3/manifestival"
branch = "client-go"
branch = "immutable-transform"

[[constraint]]
name = "knative.dev/pkg"
Expand Down
24 changes: 13 additions & 11 deletions pkg/reconciler/knativeserving/knativeserving_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,32 +158,30 @@ func (r *Reconciler) install(instance *servingv1alpha1.KnativeServing) error {
r.Logger.Debug("Installing manifest")
defer r.updateStatus(instance)

if err := r.transform(instance); err != nil {
transformed, err := r.transform(instance)
if err != nil {
return err
}
if err := r.apply(instance); err != nil {
if err := r.apply(transformed, instance); err != nil {
return err
}
return nil
}

// Transform the resources
func (r *Reconciler) transform(instance *servingv1alpha1.KnativeServing) error {
func (r *Reconciler) transform(instance *servingv1alpha1.KnativeServing) (*mf.Manifest, error) {
r.Logger.Debug("Transforming manifest")
transforms, err := platform.Transformers(r.KubeClientSet, instance, r.Logger)
if err != nil {
return err
}
if err := r.config.Transform(transforms...); err != nil {
return err
return nil, err
}
return nil
return r.config.Transform(transforms...)
}

// Apply the embedded resources
func (r *Reconciler) apply(instance *servingv1alpha1.KnativeServing) error {
func (r *Reconciler) apply(manifest mf.Manifestival, instance *servingv1alpha1.KnativeServing) error {
r.Logger.Debug("Applying manifest")
if err := r.config.ApplyAll(); err != nil {
if err := manifest.ApplyAll(); err != nil {
instance.Status.MarkInstallFailed(err.Error())
return err
}
Expand All @@ -204,7 +202,11 @@ func (r *Reconciler) checkDeployments(instance *servingv1alpha1.KnativeServing)
}
return false
}
for _, u := range r.config.Resources {
transformed, err := r.transform(instance)
if err != nil {
return err
}
for _, u := range transformed.Resources {
if u.GetKind() == "Deployment" {
deployment, err := r.KubeClientSet.AppsV1().Deployments(u.GetNamespace()).Get(u.GetName(), metav1.GetOptions{})
if err != nil {
Expand Down
14 changes: 9 additions & 5 deletions vendor/github.com/jcrossley3/manifestival/manifestival.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions vendor/github.com/jcrossley3/manifestival/transform.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit fafbc40

Please sign in to comment.