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 }