github.com/argoproj/argo-cd/v3@v3.2.1/cmd/argocd/commands/admin/notifications.go (about) 1 package admin 2 3 import ( 4 "log" 5 6 "k8s.io/apimachinery/pkg/runtime/schema" 7 "k8s.io/client-go/kubernetes" 8 "k8s.io/client-go/tools/clientcmd" 9 10 "github.com/argoproj/argo-cd/v3/common" 11 "github.com/argoproj/argo-cd/v3/reposerver/apiclient" 12 "github.com/argoproj/argo-cd/v3/util/env" 13 service "github.com/argoproj/argo-cd/v3/util/notification/argocd" 14 "github.com/argoproj/argo-cd/v3/util/notification/settings" 15 "github.com/argoproj/argo-cd/v3/util/tls" 16 17 "github.com/argoproj/notifications-engine/pkg/cmd" 18 "github.com/spf13/cobra" 19 20 "github.com/argoproj/argo-cd/v3/pkg/apis/application" 21 ) 22 23 var applications = schema.GroupVersionResource{Group: application.Group, Version: "v1alpha1", Resource: application.ApplicationPlural} 24 25 func NewNotificationsCommand() *cobra.Command { 26 var ( 27 argocdRepoServer string 28 argocdRepoServerPlaintext bool 29 argocdRepoServerStrictTLS bool 30 ) 31 32 var argocdService service.Service 33 34 toolsCommand := cmd.NewToolsCommand( 35 "notifications", 36 "argocd admin notifications", 37 applications, 38 settings.GetFactorySettingsForCLI(func() service.Service { return argocdService }, "argocd-notifications-secret", "argocd-notifications-cm", false), 39 func(clientConfig clientcmd.ClientConfig) { 40 k8sCfg, err := clientConfig.ClientConfig() 41 if err != nil { 42 log.Fatalf("Failed to parse k8s config: %v", err) 43 } 44 ns, _, err := clientConfig.Namespace() 45 if err != nil { 46 log.Fatalf("Failed to parse k8s config: %v", err) 47 } 48 tlsConfig := apiclient.TLSConfiguration{ 49 DisableTLS: argocdRepoServerPlaintext, 50 StrictValidation: argocdRepoServerStrictTLS, 51 } 52 if !tlsConfig.DisableTLS && tlsConfig.StrictValidation { 53 pool, err := tls.LoadX509CertPool( 54 env.StringFromEnv(common.EnvAppConfigPath, common.DefaultAppConfigPath)+"/reposerver/tls/tls.crt", 55 env.StringFromEnv(common.EnvAppConfigPath, common.DefaultAppConfigPath)+"/reposerver/tls/ca.crt", 56 ) 57 if err != nil { 58 log.Fatalf("Failed to load tls certs: %v", err) 59 } 60 tlsConfig.Certificates = pool 61 } 62 repoClientset := apiclient.NewRepoServerClientset(argocdRepoServer, 5, tlsConfig) 63 argocdService, err = service.NewArgoCDService(kubernetes.NewForConfigOrDie(k8sCfg), ns, repoClientset) 64 if err != nil { 65 log.Fatalf("Failed to initialize Argo CD service: %v", err) 66 } 67 }) 68 toolsCommand.PersistentFlags().StringVar(&argocdRepoServer, "argocd-repo-server", common.DefaultRepoServerAddr, "Argo CD repo server address") 69 toolsCommand.PersistentFlags().BoolVar(&argocdRepoServerPlaintext, "argocd-repo-server-plaintext", false, "Use a plaintext client (non-TLS) to connect to repository server") 70 toolsCommand.PersistentFlags().BoolVar(&argocdRepoServerStrictTLS, "argocd-repo-server-strict-tls", false, "Perform strict validation of TLS certificates when connecting to repo server") 71 return toolsCommand 72 }