@@ -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 :
@@ -592,7 +597,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
592597 res .InstallNS = installNS
593598
594599 // Validation of --venafi-connection and --venafi-connection-namespace.
595- if res .TLSPKMode == VenafiCloudVenafiConnection {
600+ if res .OutputMode == VenafiCloudVenafiConnection {
596601 res .VenConnName = flags .VenConnName
597602 venConnNS := flags .VenConnNS
598603 if flags .VenConnNS == "" {
@@ -639,12 +644,12 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
639644 return CombinedConfig {}, nil , errs
640645 }
641646
642- preflightClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
647+ outputClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
643648 if err != nil {
644649 return CombinedConfig {}, nil , multierror .Prefix (err , "validating creds:" )
645650 }
646651
647- return res , preflightClient , nil
652+ return res , outputClient , nil
648653}
649654
650655// Validation of --credentials-file/-k, --client-id, and --private-key-path,
@@ -656,9 +661,9 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
656661func validateCredsAndCreateClient (log logr.Logger , flagCredentialsPath , flagClientID , flagPrivateKeyPath , flagAPIToken string , cfg CombinedConfig ) (client.Client , error ) {
657662 var errs error
658663
659- var preflightClient client.Client
664+ var outputClient client.Client
660665 metadata := & api.AgentMetadata {Version : version .PreflightVersion , ClusterID : cfg .ClusterID }
661- switch cfg .TLSPKMode {
666+ switch cfg .OutputMode {
662667 case JetstackSecureOAuth :
663668 // Note that there are no command line flags to configure the
664669 // JetstackSecureOAuth mode.
@@ -674,7 +679,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
674679 break // Don't continue with the client if credentials file invalid.
675680 }
676681
677- preflightClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
682+ outputClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
678683 if err != nil {
679684 errs = multierror .Append (errs , err )
680685 }
@@ -726,7 +731,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
726731 log .Info ("Loading upload_path from \" venafi-cloud\" configuration." )
727732
728733 var err error
729- preflightClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
734+ outputClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
730735 if err != nil {
731736 errs = multierror .Append (errs , err )
732737 }
@@ -738,25 +743,27 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
738743 break // Don't continue with the client if kubeconfig wasn't loaded.
739744 }
740745
741- preflightClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
746+ outputClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
742747 if err != nil {
743748 errs = multierror .Append (errs , err )
744749 }
745750 case JetstackSecureAPIToken :
746751 var err error
747- preflightClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
752+ outputClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
748753 if err != nil {
749754 errs = multierror .Append (errs , err )
750755 }
756+ case LocalFile :
757+ outputClient = client .NewFileClient (cfg .OutputPath )
751758 default :
752- panic (fmt .Errorf ("programmer mistake: auth mode not implemented: %s" , cfg .TLSPKMode ))
759+ panic (fmt .Errorf ("programmer mistake: output mode not implemented: %s" , cfg .OutputMode ))
753760 }
754761
755762 if errs != nil {
756- return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .TLSPKMode , errs )
763+ return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .OutputMode , errs )
757764 }
758765
759- return preflightClient , nil
766+ return outputClient , nil
760767}
761768
762769// Same as ValidateAndCombineConfig but just for validating the data gatherers.
0 commit comments