github.com/argoproj/argo-cd/v3@v3.2.1/hack/gen-resources/generators/project_generator.go (about)

     1  package generator
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"log"
     7  
     8  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  
    10  	"github.com/argoproj/argo-cd/v3/hack/gen-resources/util"
    11  	"github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1"
    12  	appclientset "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned"
    13  )
    14  
    15  type ProjectGenerator struct {
    16  	clientSet *appclientset.Clientset
    17  }
    18  
    19  func NewProjectGenerator(clientSet *appclientset.Clientset) Generator {
    20  	return &ProjectGenerator{clientSet}
    21  }
    22  
    23  func (pg *ProjectGenerator) Generate(opts *util.GenerateOpts) error {
    24  	projects := pg.clientSet.ArgoprojV1alpha1().AppProjects(opts.Namespace)
    25  	for i := 0; i < opts.ProjectOpts.Samples; i++ {
    26  		log.Printf("Generate project #%v", i)
    27  		_, err := projects.Create(context.TODO(), &v1alpha1.AppProject{
    28  			ObjectMeta: metav1.ObjectMeta{
    29  				GenerateName: "project-",
    30  				Namespace:    opts.Namespace,
    31  				Labels:       labels,
    32  			},
    33  			Spec: v1alpha1.AppProjectSpec{
    34  				Description: "generated-project",
    35  			},
    36  		}, metav1.CreateOptions{})
    37  		if err != nil {
    38  			log.Printf("Project #%v failed to generate", i)
    39  			return fmt.Errorf("error in generated-project: %w", err)
    40  		}
    41  	}
    42  	return nil
    43  }
    44  
    45  func (pg *ProjectGenerator) Clean(opts *util.GenerateOpts) error {
    46  	log.Printf("Clean projects")
    47  	projects := pg.clientSet.ArgoprojV1alpha1().AppProjects(opts.Namespace)
    48  	return projects.DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{
    49  		LabelSelector: "app.kubernetes.io/generated-by=argocd-generator",
    50  	})
    51  }