@@ -324,15 +324,16 @@ func InitAgentCmdFlags(c *cobra.Command, cfg *AgentCmdFlags) {
324324
325325}
326326
327- // TLSPKMode controls how to authenticate to TLSPK / Jetstack Secure. Only one
328- // TLSPKMode may be provided if using those backends .
329- type TLSPKMode string
327+ // OutputMode controls how the collected data is published.
328+ // Only one OutputMode may be provided.
329+ type OutputMode string
330330
331331const (
332- JetstackSecureOAuth TLSPKMode = "Jetstack Secure OAuth"
333- JetstackSecureAPIToken TLSPKMode = "Jetstack Secure API Token"
334- VenafiCloudKeypair TLSPKMode = "Venafi Cloud Key Pair Service Account"
335- VenafiCloudVenafiConnection TLSPKMode = "Venafi Cloud VenafiConnection"
332+ JetstackSecureOAuth OutputMode = "Jetstack Secure OAuth"
333+ JetstackSecureAPIToken OutputMode = "Jetstack Secure API Token"
334+ VenafiCloudKeypair OutputMode = "Venafi Cloud Key Pair Service Account"
335+ VenafiCloudVenafiConnection OutputMode = "Venafi Cloud VenafiConnection"
336+ LocalFile OutputMode = "Local File"
336337)
337338
338339// The command-line flags and the config file are combined into this struct by
@@ -345,7 +346,7 @@ type CombinedConfig struct {
345346 StrictMode bool
346347 OneShot bool
347348
348- TLSPKMode TLSPKMode
349+ OutputMode OutputMode
349350
350351 // Used by all TLSPK modes.
351352 ClusterID string
@@ -389,7 +390,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
389390
390391 {
391392 var (
392- mode TLSPKMode
393+ mode OutputMode
393394 reason string
394395 keysAndValues []any
395396 )
@@ -419,18 +420,22 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
419420 case ! flags .VenafiCloudMode && flags .CredentialsPath != "" :
420421 mode = JetstackSecureOAuth
421422 reason = "--credentials-file was specified without --venafi-cloud"
423+ case flags .OutputPath != "" :
424+ mode = LocalFile
425+ reason = "--output-path was specified"
422426 default :
423- return CombinedConfig {}, nil , fmt .Errorf ("no TLSPK mode specified. " +
424- "To enable one of the TLSPK modes, you can:\n " +
427+ return CombinedConfig {}, nil , fmt .Errorf ("no output mode specified. " +
428+ "To enable one of the output modes, you can:\n " +
425429 " - Use (--venafi-cloud with --credentials-file) or (--client-id with --private-key-path) to use the " + string (VenafiCloudKeypair ) + " mode.\n " +
426430 " - Use --venafi-connection for the " + string (VenafiCloudVenafiConnection ) + " mode.\n " +
427431 " - Use --credentials-file alone if you want to use the " + string (JetstackSecureOAuth ) + " mode.\n " +
428- " - Use --api-token if you want to use the " + string (JetstackSecureAPIToken ) + " mode." )
432+ " - Use --api-token if you want to use the " + string (JetstackSecureAPIToken ) + " mode.\n " +
433+ " - Use --output-path for " + string (LocalFile ) + " mode." )
429434 }
430435
431436 keysAndValues = append (keysAndValues , "mode" , mode , "reason" , reason )
432- log .V (logs .Debug ).Info ("Configured to push to Venafi " , keysAndValues ... )
433- res .TLSPKMode = mode
437+ log .V (logs .Debug ).Info ("Output mode selected " , keysAndValues ... )
438+ res .OutputMode = mode
434439 }
435440
436441 var errs error
@@ -459,7 +464,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
459464 endpointPath = cfg .Endpoint .Path
460465 case ! hasServerField && ! hasEndpointField :
461466 server = "https://preflight.jetstack.io"
462- if res .TLSPKMode == VenafiCloudKeypair {
467+ if res .OutputMode == VenafiCloudKeypair {
463468 // The VenafiCloudVenafiConnection mode doesn't need a server.
464469 server = client .VenafiCloudProdURL
465470 }
@@ -468,7 +473,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
468473 if urlErr != nil || url .Hostname () == "" {
469474 errs = multierror .Append (errs , fmt .Errorf ("server %q is not a valid URL" , server ))
470475 }
471- if res .TLSPKMode == VenafiCloudVenafiConnection && server != "" {
476+ if res .OutputMode == VenafiCloudVenafiConnection && server != "" {
472477 log .Info (fmt .Sprintf ("ignoring the server field specified in the config file. In %s mode, this field is not needed." , VenafiCloudVenafiConnection ))
473478 server = ""
474479 }
@@ -479,10 +484,10 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
479484 // Validation of `venafi-cloud.upload_path`.
480485 {
481486 var uploadPath string
482- switch res .TLSPKMode { // nolint:exhaustive
487+ switch res .OutputMode { // nolint:exhaustive
483488 case VenafiCloudKeypair :
484489 if cfg .VenafiCloud == nil || cfg .VenafiCloud .UploadPath == "" {
485- errs = multierror .Append (errs , fmt .Errorf ("the venafi-cloud.upload_path field is required when using the %s mode" , res .TLSPKMode ))
490+ errs = multierror .Append (errs , fmt .Errorf ("the venafi-cloud.upload_path field is required when using the %s mode" , res .OutputMode ))
486491 break // Skip to the end of the switch statement.
487492 }
488493 _ , urlErr := url .Parse (cfg .VenafiCloud .UploadPath )
@@ -499,7 +504,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
499504 // change this value with the new --venafi-connection flag, and this
500505 // field is simply ignored.
501506 if cfg .VenafiCloud != nil && cfg .VenafiCloud .UploadPath != "" {
502- log .Info (fmt .Sprintf (`ignoring the venafi-cloud.upload_path field in the config file. In %s mode, this field is not needed.` , res .TLSPKMode ))
507+ log .Info (fmt .Sprintf (`ignoring the venafi-cloud.upload_path field in the config file. In %s mode, this field is not needed.` , res .OutputMode ))
503508 }
504509 uploadPath = ""
505510 }
@@ -517,18 +522,18 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
517522 // https://venafi.atlassian.net/browse/VC-35385 is done.
518523 {
519524 if cfg .VenafiCloud != nil && cfg .VenafiCloud .UploaderID != "" {
520- log .Info (fmt .Sprintf (`ignoring the venafi-cloud.uploader_id field in the config file. This field is not needed in %s mode.` , res .TLSPKMode ))
525+ log .Info (fmt .Sprintf (`ignoring the venafi-cloud.uploader_id field in the config file. This field is not needed in %s mode.` , res .OutputMode ))
521526 }
522527 }
523528
524529 // Validation of `cluster_id` and `organization_id`.
525530 {
526531 var clusterID string
527532 var organizationID string // Only used by the old jetstack-secure mode.
528- switch res .TLSPKMode { // nolint:exhaustive
533+ switch res .OutputMode { // nolint:exhaustive
529534 case VenafiCloudKeypair , VenafiCloudVenafiConnection :
530535 if cfg .ClusterID == "" {
531- errs = multierror .Append (errs , fmt .Errorf ("cluster_id is required in %s mode" , res .TLSPKMode ))
536+ errs = multierror .Append (errs , fmt .Errorf ("cluster_id is required in %s mode" , res .OutputMode ))
532537 }
533538 clusterID = cfg .ClusterID
534539 case JetstackSecureOAuth , JetstackSecureAPIToken :
@@ -587,7 +592,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
587592 var err error
588593 installNS , err = getInClusterNamespace ()
589594 if err != nil {
590- if res .TLSPKMode == VenafiCloudVenafiConnection {
595+ if res .OutputMode == VenafiCloudVenafiConnection {
591596 errs = multierror .Append (errs , fmt .Errorf ("could not guess which namespace the agent is running in: %w" , err ))
592597 }
593598 }
@@ -596,7 +601,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
596601 }
597602
598603 // Validation of --venafi-connection and --venafi-connection-namespace.
599- if res .TLSPKMode == VenafiCloudVenafiConnection {
604+ if res .OutputMode == VenafiCloudVenafiConnection {
600605 res .VenConnName = flags .VenConnName
601606 venConnNS := flags .VenConnNS
602607 if flags .VenConnNS == "" {
@@ -643,12 +648,12 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
643648 return CombinedConfig {}, nil , errs
644649 }
645650
646- preflightClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
651+ outputClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
647652 if err != nil {
648653 return CombinedConfig {}, nil , multierror .Prefix (err , "validating creds:" )
649654 }
650655
651- return res , preflightClient , nil
656+ return res , outputClient , nil
652657}
653658
654659// Validation of --credentials-file/-k, --client-id, and --private-key-path,
@@ -660,9 +665,9 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
660665func validateCredsAndCreateClient (log logr.Logger , flagCredentialsPath , flagClientID , flagPrivateKeyPath , flagAPIToken string , cfg CombinedConfig ) (client.Client , error ) {
661666 var errs error
662667
663- var preflightClient client.Client
668+ var outputClient client.Client
664669 metadata := & api.AgentMetadata {Version : version .PreflightVersion , ClusterID : cfg .ClusterID }
665- switch cfg .TLSPKMode {
670+ switch cfg .OutputMode {
666671 case JetstackSecureOAuth :
667672 // Note that there are no command line flags to configure the
668673 // JetstackSecureOAuth mode.
@@ -678,7 +683,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
678683 break // Don't continue with the client if credentials file invalid.
679684 }
680685
681- preflightClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
686+ outputClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
682687 if err != nil {
683688 errs = multierror .Append (errs , err )
684689 }
@@ -730,7 +735,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
730735 log .Info ("Loading upload_path from \" venafi-cloud\" configuration." )
731736
732737 var err error
733- preflightClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
738+ outputClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
734739 if err != nil {
735740 errs = multierror .Append (errs , err )
736741 }
@@ -742,25 +747,27 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
742747 break // Don't continue with the client if kubeconfig wasn't loaded.
743748 }
744749
745- preflightClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
750+ outputClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
746751 if err != nil {
747752 errs = multierror .Append (errs , err )
748753 }
749754 case JetstackSecureAPIToken :
750755 var err error
751- preflightClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
756+ outputClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
752757 if err != nil {
753758 errs = multierror .Append (errs , err )
754759 }
760+ case LocalFile :
761+ outputClient = client .NewFileClient (cfg .OutputPath )
755762 default :
756- panic (fmt .Errorf ("programmer mistake: auth mode not implemented: %s" , cfg .TLSPKMode ))
763+ panic (fmt .Errorf ("programmer mistake: output mode not implemented: %s" , cfg .OutputMode ))
757764 }
758765
759766 if errs != nil {
760- return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .TLSPKMode , errs )
767+ return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .OutputMode , errs )
761768 }
762769
763- return preflightClient , nil
770+ return outputClient , nil
764771}
765772
766773// Same as ValidateAndCombineConfig but just for validating the data gatherers.
0 commit comments