github.com/redhat-appstudio/e2e-tests@v0.0.0-20230619105049-9a422b2094d7/pkg/utils/common/proxy_plugin.go (about)

     1  package common
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"time"
     7  
     8  	toolchainv1alpha1 "github.com/codeready-toolchain/api/api/v1alpha1"
     9  	"github.com/redhat-appstudio/e2e-tests/pkg/utils"
    10  
    11  	k8sErrors "k8s.io/apimachinery/pkg/api/errors"
    12  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    13  	"k8s.io/apimachinery/pkg/types"
    14  )
    15  
    16  // CreateProxyPlugin creates an object of ProxyPlugin for the OpenShift route target
    17  func (s *SuiteController) CreateProxyPlugin(proxyPluginName, proxyPluginNamespace, routeName, routeNamespace string) (*toolchainv1alpha1.ProxyPlugin, error) {
    18  
    19  	// Create the ProxyPlugin object
    20  	proxyPlugin := NewProxyPlugin(proxyPluginName, proxyPluginNamespace, routeName, routeNamespace)
    21  
    22  	if err := s.KubeRest().Create(context.TODO(), proxyPlugin); err != nil {
    23  		return nil, fmt.Errorf("unable to create proxy plugin due to %v", err)
    24  	}
    25  	return proxyPlugin, nil
    26  }
    27  
    28  // DeleteProxyPlugin deletes the ProxyPlugin object
    29  func (s *SuiteController) DeleteProxyPlugin(proxyPluginName, proxyPluginNamespace string) (bool, error) {
    30  	proxyPlugin := &toolchainv1alpha1.ProxyPlugin{
    31  		ObjectMeta: metav1.ObjectMeta{
    32  			Name:      proxyPluginName,
    33  			Namespace: proxyPluginNamespace,
    34  		},
    35  	}
    36  
    37  	if err := s.KubeRest().Delete(context.TODO(), proxyPlugin); err != nil {
    38  		return false, err
    39  	}
    40  	err := utils.WaitUntil(func() (done bool, err error) {
    41  		err = s.KubeRest().Get(context.TODO(), types.NamespacedName{
    42  			Namespace: proxyPluginNamespace,
    43  			Name:      proxyPluginName,
    44  		}, proxyPlugin)
    45  
    46  		if err != nil {
    47  			if k8sErrors.IsNotFound(err) {
    48  				return true, nil
    49  			}
    50  			return false, fmt.Errorf("deletion of proxy plugin has been timedout:: %v", err)
    51  		}
    52  		return false, nil
    53  	}, 5*time.Minute)
    54  
    55  	if err != nil {
    56  		return false, err
    57  	}
    58  
    59  	return true, nil
    60  }
    61  
    62  // NewProxyPlugin gives the proxyplugin resource template
    63  func NewProxyPlugin(proxyPluginName, proxyPluginNamespace, routeName, routeNamespace string) *toolchainv1alpha1.ProxyPlugin {
    64  	return &toolchainv1alpha1.ProxyPlugin{
    65  		ObjectMeta: metav1.ObjectMeta{
    66  			Namespace: proxyPluginNamespace,
    67  			Name:      proxyPluginName,
    68  		},
    69  		Spec: toolchainv1alpha1.ProxyPluginSpec{
    70  			OpenShiftRouteTargetEndpoint: &toolchainv1alpha1.OpenShiftRouteTarget{
    71  				Namespace: routeNamespace,
    72  				Name:      routeName,
    73  			},
    74  		},
    75  	}
    76  }