github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/gitops/deploymenttargetclasses.go (about) 1 package gitops 2 3 import ( 4 "context" 5 "fmt" 6 7 appservice "github.com/redhat-appstudio/application-api/api/v1alpha1" 8 "github.com/redhat-appstudio/e2e-tests/pkg/logs" 9 k8sErrors "k8s.io/apimachinery/pkg/api/errors" 10 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 11 "sigs.k8s.io/controller-runtime/pkg/client" 12 ) 13 14 // HaveAvailableDeploymentTargetClassExist attempts to find a DeploymentTargetClass with appstudioApi.Provisioner_Devsandbox as provisioner. 15 // return nil if not found 16 func (g *GitopsController) HaveAvailableDeploymentTargetClassExist() (*appservice.DeploymentTargetClass, error) { 17 deploymentTargetClassList := &appservice.DeploymentTargetClassList{} 18 err := g.KubeRest().List(context.Background(), deploymentTargetClassList) 19 if err != nil && !k8sErrors.IsNotFound(err) { 20 return nil, fmt.Errorf("error occurred while trying to list all the available DeploymentTargetClass: %v", err) 21 } 22 23 for _, dtcls := range deploymentTargetClassList.Items { 24 if dtcls.Spec.Provisioner == appservice.Provisioner_Devsandbox { 25 return &dtcls, nil 26 } 27 } 28 29 return nil, nil 30 } 31 32 // CreateDeploymentTargetClass creates a DeploymentTargetClass with a "appstudio.redhat.com/devsandbox" provisioner 33 func (g *GitopsController) CreateDeploymentTargetClass() (*appservice.DeploymentTargetClass, error) { 34 dtcls := &appservice.DeploymentTargetClass{ 35 ObjectMeta: metav1.ObjectMeta{ 36 Name: "test-sandbox-class", 37 Annotations: map[string]string{}, 38 }, 39 Spec: appservice.DeploymentTargetClassSpec{ 40 Provisioner: appservice.Provisioner_Devsandbox, 41 ReclaimPolicy: "Retain", 42 }, 43 } 44 45 err := g.KubeRest().Create(context.Background(), dtcls) 46 if err != nil { 47 return nil, fmt.Errorf("error occurred when creating the DeploymentTargetClass: %+v", err) 48 } 49 return dtcls, nil 50 } 51 52 func (g *GitopsController) DeleteDeploymentTargetClass() error { 53 dtcls := appservice.DeploymentTargetClass{ 54 ObjectMeta: metav1.ObjectMeta{ 55 Name: "test-sandbox-class", 56 }, 57 } 58 if err := g.KubeRest().Delete(context.Background(), &dtcls); err != nil { 59 return fmt.Errorf("error occurred when deleting the DeploymentTargetClass: %+v", err) 60 } 61 62 return nil 63 } 64 65 // ListAllDeploymentTargetClasses returns a list of all DeploymentTargetClassList in a given namespace. 66 func (g *GitopsController) ListAllDeploymentTargetClasses(namespace string) (*appservice.DeploymentTargetClassList, error) { 67 deploymentTargetClassList := &appservice.DeploymentTargetClassList{} 68 err := g.KubeRest().List(context.Background(), deploymentTargetClassList, &client.ListOptions{Namespace: namespace}) 69 70 return deploymentTargetClassList, err 71 } 72 73 // StoreDeploymentTargetClass a stores given DeploymentTargetClass as an artifact. 74 func (g *GitopsController) StoreDeploymentTargetClass(deploymentTargetClass *appservice.DeploymentTargetClass) error { 75 return logs.StoreResourceYaml(deploymentTargetClass, "deploymentTargetClass-"+deploymentTargetClass.Name) 76 } 77 78 // StoreAllDeploymentTargetClasses stores all DeploymentTargetClasses in a given namespace. 79 func (g *GitopsController) StoreAllDeploymentTargetClasses(namespace string) error { 80 deploymentTargetClassList, err := g.ListAllDeploymentTargetClasses(namespace) 81 if err != nil { 82 return err 83 } 84 85 for _, deploymentTargetClass := range deploymentTargetClassList.Items { 86 if err := g.StoreDeploymentTargetClass(&deploymentTargetClass); err != nil { 87 return err 88 } 89 } 90 return nil 91 }