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  }