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 }