github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/release/plans.go (about) 1 package release 2 3 import ( 4 "context" 5 "strconv" 6 7 "github.com/redhat-appstudio/release-service/tekton/utils" 8 "k8s.io/apimachinery/pkg/runtime" 9 10 releaseApi "github.com/redhat-appstudio/release-service/api/v1alpha1" 11 releaseMetadata "github.com/redhat-appstudio/release-service/metadata" 12 k8sErrors "k8s.io/apimachinery/pkg/api/errors" 13 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 14 "k8s.io/apimachinery/pkg/types" 15 ) 16 17 // CreateReleasePlan creates a new ReleasePlan using the given parameters. 18 func (r *ReleaseController) CreateReleasePlan(name, namespace, application, targetNamespace, autoReleaseLabel string, data *runtime.RawExtension) (*releaseApi.ReleasePlan, error) { 19 var releasePlan *releaseApi.ReleasePlan = &releaseApi.ReleasePlan{ 20 ObjectMeta: metav1.ObjectMeta{ 21 GenerateName: name, 22 Name: name, 23 Namespace: namespace, 24 Labels: map[string]string{ 25 releaseMetadata.AutoReleaseLabel: autoReleaseLabel, 26 releaseMetadata.AttributionLabel: "true", 27 }, 28 }, 29 Spec: releaseApi.ReleasePlanSpec{ 30 Application: application, 31 Data: data, 32 Target: targetNamespace, 33 }, 34 } 35 if autoReleaseLabel == "" || autoReleaseLabel == "true" { 36 releasePlan.ObjectMeta.Labels[releaseMetadata.AutoReleaseLabel] = "true" 37 } else { 38 releasePlan.ObjectMeta.Labels[releaseMetadata.AutoReleaseLabel] = "false" 39 } 40 41 return releasePlan, r.KubeRest().Create(context.Background(), releasePlan) 42 } 43 44 // CreateReleasePlanAdmission creates a new ReleasePlanAdmission using the given parameters. 45 func (r *ReleaseController) CreateReleasePlanAdmission(name, namespace, environment, origin, policy, serviceAccount string, applications []string, autoRelease bool, pipelineRef *utils.PipelineRef, data *runtime.RawExtension) (*releaseApi.ReleasePlanAdmission, error) { 46 releasePlanAdmission := &releaseApi.ReleasePlanAdmission{ 47 ObjectMeta: metav1.ObjectMeta{ 48 Name: name, 49 Namespace: namespace, 50 Labels: map[string]string{ 51 releaseMetadata.AutoReleaseLabel: strconv.FormatBool(autoRelease), 52 }, 53 }, 54 Spec: releaseApi.ReleasePlanAdmissionSpec{ 55 Applications: applications, 56 Data: data, 57 Environment: environment, 58 Origin: origin, 59 Pipeline: &utils.Pipeline{ 60 PipelineRef: *pipelineRef, 61 ServiceAccount: serviceAccount, 62 }, 63 Policy: policy, 64 }, 65 } 66 67 return releasePlanAdmission, r.KubeRest().Create(context.Background(), releasePlanAdmission) 68 } 69 70 // GetReleasePlan returns the ReleasePlan with the given name in the given namespace. 71 func (r *ReleaseController) GetReleasePlan(name, namespace string) (*releaseApi.ReleasePlan, error) { 72 releasePlan := &releaseApi.ReleasePlan{} 73 74 err := r.KubeRest().Get(context.Background(), types.NamespacedName{ 75 Name: name, 76 Namespace: namespace, 77 }, releasePlan) 78 79 return releasePlan, err 80 } 81 82 // GetReleasePlanAdmission returns the ReleasePlanAdmission with the given name in the given namespace. 83 func (r *ReleaseController) GetReleasePlanAdmission(name, namespace string) (*releaseApi.ReleasePlanAdmission, error) { 84 releasePlanAdmission := &releaseApi.ReleasePlanAdmission{} 85 86 err := r.KubeRest().Get(context.Background(), types.NamespacedName{ 87 Name: name, 88 Namespace: namespace, 89 }, releasePlanAdmission) 90 91 return releasePlanAdmission, err 92 } 93 94 // DeleteReleasePlan deletes a given ReleasePlan name in given namespace. 95 func (r *ReleaseController) DeleteReleasePlan(name, namespace string, failOnNotFound bool) error { 96 releasePlan := &releaseApi.ReleasePlan{ 97 ObjectMeta: metav1.ObjectMeta{ 98 Name: name, 99 Namespace: namespace, 100 }, 101 } 102 err := r.KubeRest().Delete(context.Background(), releasePlan) 103 if err != nil && !failOnNotFound && k8sErrors.IsNotFound(err) { 104 err = nil 105 } 106 return err 107 } 108 109 // DeleteReleasePlanAdmission deletes the ReleasePlanAdmission resource with the given name from the given namespace. 110 // Optionally, it can avoid returning an error if the resource did not exist: 111 // specify 'false', if it's likely the ReleasePlanAdmission has already been deleted (for example, because the Namespace was deleted) 112 func (r *ReleaseController) DeleteReleasePlanAdmission(name, namespace string, failOnNotFound bool) error { 113 releasePlanAdmission := releaseApi.ReleasePlanAdmission{ 114 ObjectMeta: metav1.ObjectMeta{ 115 Name: name, 116 Namespace: namespace, 117 }, 118 } 119 err := r.KubeRest().Delete(context.Background(), &releasePlanAdmission) 120 if err != nil && !failOnNotFound && k8sErrors.IsNotFound(err) { 121 err = nil 122 } 123 return err 124 }