github.com/redhat-appstudio/e2e-tests@v0.0.0-20230619105049-9a422b2094d7/pkg/utils/common/deployment.go (about) 1 package common 2 3 import ( 4 "context" 5 6 appsv1 "k8s.io/api/apps/v1" 7 k8sErrors "k8s.io/apimachinery/pkg/api/errors" 8 "k8s.io/apimachinery/pkg/types" 9 "k8s.io/apimachinery/pkg/util/wait" 10 ) 11 12 // GetAppDeploymentByName returns the deployment for a given component name 13 func (h *SuiteController) GetDeployment(deploymentName string, namespace string) (*appsv1.Deployment, error) { 14 namespacedName := types.NamespacedName{ 15 Name: deploymentName, 16 Namespace: namespace, 17 } 18 19 deployment := &appsv1.Deployment{} 20 err := h.KubeRest().Get(context.TODO(), namespacedName, deployment) 21 if err != nil { 22 return &appsv1.Deployment{}, err 23 } 24 return deployment, nil 25 } 26 27 // Checks and waits for a kubernetes deployment object to be completed or not 28 func (h *SuiteController) DeploymentIsCompleted(deploymentName, namespace string, readyReplicas int32) wait.ConditionFunc { 29 return func() (bool, error) { 30 namespacedName := types.NamespacedName{ 31 Name: deploymentName, 32 Namespace: namespace, 33 } 34 35 deployment := &appsv1.Deployment{} 36 err := h.KubeRest().Get(context.TODO(), namespacedName, deployment) 37 if err != nil && !k8sErrors.IsNotFound(err) { 38 return false, err 39 } 40 if deployment.Status.AvailableReplicas == readyReplicas && deployment.Status.UnavailableReplicas == 0 { 41 return true, nil 42 } 43 return false, nil 44 } 45 }