github.com/kubeshop/testkube@v1.17.23/pkg/triggers/diff.go (about)

     1  package triggers
     2  
     3  import (
     4  	"github.com/google/go-cmp/cmp"
     5  	apps_v1 "k8s.io/api/apps/v1"
     6  
     7  	"github.com/kubeshop/testkube-operator/pkg/validation/tests/v1/testtrigger"
     8  )
     9  
    10  func diffDeployments(old, new *apps_v1.Deployment) []testtrigger.Cause {
    11  	var causes []testtrigger.Cause
    12  
    13  	if *old.Spec.Replicas != *new.Spec.Replicas {
    14  		causes = append(causes, testtrigger.CauseDeploymentScaleUpdate)
    15  	}
    16  	for _, newContainer := range new.Spec.Template.Spec.Containers {
    17  		oldContainer := findContainer(old.Spec.Template.Spec.Containers, newContainer.Name)
    18  		if oldContainer == nil {
    19  			causes = append(causes, testtrigger.CauseDeploymentContainersModified)
    20  			continue
    21  		}
    22  		if oldContainer.Image != newContainer.Image {
    23  			causes = append(causes, testtrigger.CauseDeploymentImageUpdate)
    24  		}
    25  		if !cmp.Equal(oldContainer.Env, newContainer.Env) {
    26  			causes = append(causes, testtrigger.CauseDeploymentEnvUpdate)
    27  		}
    28  		break
    29  	}
    30  	return causes
    31  }