github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/tekton/enterprise_contract_policies.go (about)

     1  package tekton
     2  
     3  import (
     4  	"context"
     5  
     6  	ecp "github.com/enterprise-contract/enterprise-contract-controller/api/v1alpha1"
     7  	"k8s.io/apimachinery/pkg/api/errors"
     8  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  	crclient "sigs.k8s.io/controller-runtime/pkg/client"
    10  )
    11  
    12  // CreateEnterpriseContractPolicy creates an EnterpriseContractPolicy in a specified namespace.
    13  func (t *TektonController) CreateEnterpriseContractPolicy(name, namespace string, ecpolicy ecp.EnterpriseContractPolicySpec) (*ecp.EnterpriseContractPolicy, error) {
    14  	ec := &ecp.EnterpriseContractPolicy{
    15  		ObjectMeta: metav1.ObjectMeta{
    16  			Name:      name,
    17  			Namespace: namespace,
    18  		},
    19  		Spec: ecpolicy,
    20  	}
    21  	return ec, t.KubeRest().Create(context.Background(), ec)
    22  }
    23  
    24  // CreateOrUpdatePolicyConfiguration creates new policy if it doesn't exist, otherwise updates the existing one, in a specified namespace.
    25  func (t *TektonController) CreateOrUpdatePolicyConfiguration(namespace string, policy ecp.EnterpriseContractPolicySpec) error {
    26  	ecPolicy := ecp.EnterpriseContractPolicy{
    27  		ObjectMeta: metav1.ObjectMeta{
    28  			Name:      "ec-policy",
    29  			Namespace: namespace,
    30  		},
    31  	}
    32  
    33  	// fetch to see if it exists
    34  	err := t.KubeRest().Get(context.Background(), crclient.ObjectKey{
    35  		Namespace: namespace,
    36  		Name:      "ec-policy",
    37  	}, &ecPolicy)
    38  
    39  	exists := true
    40  	if err != nil {
    41  		if errors.IsNotFound(err) {
    42  			exists = false
    43  		} else {
    44  			return err
    45  		}
    46  	}
    47  
    48  	ecPolicy.Spec = policy
    49  	if !exists {
    50  		// it doesn't, so create
    51  		if err := t.KubeRest().Create(context.Background(), &ecPolicy); err != nil {
    52  			return err
    53  		}
    54  	} else {
    55  		// it does, so update
    56  		if err := t.KubeRest().Update(context.Background(), &ecPolicy); err != nil {
    57  			return err
    58  		}
    59  	}
    60  
    61  	return nil
    62  }
    63  
    64  // GetEnterpriseContractPolicy gets an EnterpriseContractPolicy from specified a namespace
    65  func (t *TektonController) GetEnterpriseContractPolicy(name, namespace string) (*ecp.EnterpriseContractPolicy, error) {
    66  	defaultEcPolicy := ecp.EnterpriseContractPolicy{
    67  		ObjectMeta: metav1.ObjectMeta{
    68  			Name:      name,
    69  			Namespace: namespace,
    70  		},
    71  	}
    72  	err := t.KubeRest().Get(context.Background(), crclient.ObjectKey{
    73  		Namespace: namespace,
    74  		Name:      name,
    75  	}, &defaultEcPolicy)
    76  
    77  	return &defaultEcPolicy, err
    78  }
    79  
    80  // DeleteEnterpriseContractPolicy deletes enterprise contract policy.
    81  func (t *TektonController) DeleteEnterpriseContractPolicy(name string, namespace string, failOnNotFound bool) error {
    82  	ecPolicy := ecp.EnterpriseContractPolicy{
    83  		ObjectMeta: metav1.ObjectMeta{
    84  			Name:      name,
    85  			Namespace: namespace,
    86  		},
    87  	}
    88  	err := t.KubeRest().Delete(context.Background(), &ecPolicy)
    89  	if err != nil && !failOnNotFound && errors.IsNotFound(err) {
    90  		err = nil
    91  	}
    92  	return err
    93  }