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  }