@@ -324,15 +324,16 @@ func InitAgentCmdFlags(c *cobra.Command, cfg *AgentCmdFlags) {
324
324
325
325
}
326
326
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
330
330
331
331
const (
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"
336
337
)
337
338
338
339
// The command-line flags and the config file are combined into this struct by
@@ -345,7 +346,7 @@ type CombinedConfig struct {
345
346
StrictMode bool
346
347
OneShot bool
347
348
348
- TLSPKMode TLSPKMode
349
+ OutputMode OutputMode
349
350
350
351
// Used by all TLSPK modes.
351
352
ClusterID string
@@ -389,7 +390,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
389
390
390
391
{
391
392
var (
392
- mode TLSPKMode
393
+ mode OutputMode
393
394
reason string
394
395
keysAndValues []any
395
396
)
@@ -419,18 +420,25 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
419
420
case ! flags .VenafiCloudMode && flags .CredentialsPath != "" :
420
421
mode = JetstackSecureOAuth
421
422
reason = "--credentials-file was specified without --venafi-cloud"
423
+ case flags .OutputPath != "" :
424
+ mode = LocalFile
425
+ reason = "--output-path was specified"
426
+ case cfg .OutputPath != "" :
427
+ mode = LocalFile
428
+ reason = "output-path was specified in the config file"
422
429
default :
423
- return CombinedConfig {}, nil , fmt .Errorf ("no TLSPK mode specified. " +
424
- "To enable one of the TLSPK modes, you can:\n " +
430
+ return CombinedConfig {}, nil , fmt .Errorf ("no output mode specified. " +
431
+ "To enable one of the output modes, you can:\n " +
425
432
" - Use (--venafi-cloud with --credentials-file) or (--client-id with --private-key-path) to use the " + string (VenafiCloudKeypair ) + " mode.\n " +
426
433
" - Use --venafi-connection for the " + string (VenafiCloudVenafiConnection ) + " mode.\n " +
427
434
" - 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." )
435
+ " - Use --api-token if you want to use the " + string (JetstackSecureAPIToken ) + " mode.\n " +
436
+ " - Use --output-path or output-path in the config file for " + string (LocalFile ) + " mode." )
429
437
}
430
438
431
439
keysAndValues = append (keysAndValues , "mode" , mode , "reason" , reason )
432
- log .V (logs .Debug ).Info ("Configured to push to Venafi " , keysAndValues ... )
433
- res .TLSPKMode = mode
440
+ log .V (logs .Debug ).Info ("Output mode selected " , keysAndValues ... )
441
+ res .OutputMode = mode
434
442
}
435
443
436
444
var errs error
@@ -459,7 +467,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
459
467
endpointPath = cfg .Endpoint .Path
460
468
case ! hasServerField && ! hasEndpointField :
461
469
server = "https://preflight.jetstack.io"
462
- if res .TLSPKMode == VenafiCloudKeypair {
470
+ if res .OutputMode == VenafiCloudKeypair {
463
471
// The VenafiCloudVenafiConnection mode doesn't need a server.
464
472
server = client .VenafiCloudProdURL
465
473
}
@@ -468,7 +476,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
468
476
if urlErr != nil || url .Hostname () == "" {
469
477
errs = multierror .Append (errs , fmt .Errorf ("server %q is not a valid URL" , server ))
470
478
}
471
- if res .TLSPKMode == VenafiCloudVenafiConnection && server != "" {
479
+ if res .OutputMode == VenafiCloudVenafiConnection && server != "" {
472
480
log .Info (fmt .Sprintf ("ignoring the server field specified in the config file. In %s mode, this field is not needed." , VenafiCloudVenafiConnection ))
473
481
server = ""
474
482
}
@@ -479,10 +487,10 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
479
487
// Validation of `venafi-cloud.upload_path`.
480
488
{
481
489
var uploadPath string
482
- switch res .TLSPKMode { // nolint:exhaustive
490
+ switch res .OutputMode { // nolint:exhaustive
483
491
case VenafiCloudKeypair :
484
492
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 ))
493
+ errs = multierror .Append (errs , fmt .Errorf ("the venafi-cloud.upload_path field is required when using the %s mode" , res .OutputMode ))
486
494
break // Skip to the end of the switch statement.
487
495
}
488
496
_ , urlErr := url .Parse (cfg .VenafiCloud .UploadPath )
@@ -499,7 +507,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
499
507
// change this value with the new --venafi-connection flag, and this
500
508
// field is simply ignored.
501
509
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 ))
510
+ 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 ))
503
511
}
504
512
uploadPath = ""
505
513
}
@@ -517,18 +525,18 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
517
525
// https://venafi.atlassian.net/browse/VC-35385 is done.
518
526
{
519
527
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 ))
528
+ 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 ))
521
529
}
522
530
}
523
531
524
532
// Validation of `cluster_id` and `organization_id`.
525
533
{
526
534
var clusterID string
527
535
var organizationID string // Only used by the old jetstack-secure mode.
528
- switch res .TLSPKMode { // nolint:exhaustive
536
+ switch res .OutputMode { // nolint:exhaustive
529
537
case VenafiCloudKeypair , VenafiCloudVenafiConnection :
530
538
if cfg .ClusterID == "" {
531
- errs = multierror .Append (errs , fmt .Errorf ("cluster_id is required in %s mode" , res .TLSPKMode ))
539
+ errs = multierror .Append (errs , fmt .Errorf ("cluster_id is required in %s mode" , res .OutputMode ))
532
540
}
533
541
clusterID = cfg .ClusterID
534
542
case JetstackSecureOAuth , JetstackSecureAPIToken :
@@ -587,7 +595,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
587
595
var err error
588
596
installNS , err = getInClusterNamespace ()
589
597
if err != nil {
590
- if res .TLSPKMode == VenafiCloudVenafiConnection {
598
+ if res .OutputMode == VenafiCloudVenafiConnection {
591
599
errs = multierror .Append (errs , fmt .Errorf ("could not guess which namespace the agent is running in: %w" , err ))
592
600
}
593
601
}
@@ -596,7 +604,7 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
596
604
}
597
605
598
606
// Validation of --venafi-connection and --venafi-connection-namespace.
599
- if res .TLSPKMode == VenafiCloudVenafiConnection {
607
+ if res .OutputMode == VenafiCloudVenafiConnection {
600
608
res .VenConnName = flags .VenConnName
601
609
venConnNS := flags .VenConnNS
602
610
if flags .VenConnNS == "" {
@@ -643,12 +651,12 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
643
651
return CombinedConfig {}, nil , errs
644
652
}
645
653
646
- preflightClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
654
+ outputClient , err := validateCredsAndCreateClient (log , flags .CredentialsPath , flags .ClientID , flags .PrivateKeyPath , flags .APIToken , res )
647
655
if err != nil {
648
656
return CombinedConfig {}, nil , multierror .Prefix (err , "validating creds:" )
649
657
}
650
658
651
- return res , preflightClient , nil
659
+ return res , outputClient , nil
652
660
}
653
661
654
662
// Validation of --credentials-file/-k, --client-id, and --private-key-path,
@@ -660,9 +668,9 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags)
660
668
func validateCredsAndCreateClient (log logr.Logger , flagCredentialsPath , flagClientID , flagPrivateKeyPath , flagAPIToken string , cfg CombinedConfig ) (client.Client , error ) {
661
669
var errs error
662
670
663
- var preflightClient client.Client
671
+ var outputClient client.Client
664
672
metadata := & api.AgentMetadata {Version : version .PreflightVersion , ClusterID : cfg .ClusterID }
665
- switch cfg .TLSPKMode {
673
+ switch cfg .OutputMode {
666
674
case JetstackSecureOAuth :
667
675
// Note that there are no command line flags to configure the
668
676
// JetstackSecureOAuth mode.
@@ -678,7 +686,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
678
686
break // Don't continue with the client if credentials file invalid.
679
687
}
680
688
681
- preflightClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
689
+ outputClient , err = client .NewOAuthClient (metadata , creds , cfg .Server )
682
690
if err != nil {
683
691
errs = multierror .Append (errs , err )
684
692
}
@@ -730,7 +738,7 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
730
738
log .Info ("Loading upload_path from \" venafi-cloud\" configuration." )
731
739
732
740
var err error
733
- preflightClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
741
+ outputClient , err = client .NewVenafiCloudClient (metadata , creds , cfg .Server , uploaderID , cfg .UploadPath )
734
742
if err != nil {
735
743
errs = multierror .Append (errs , err )
736
744
}
@@ -742,25 +750,27 @@ func validateCredsAndCreateClient(log logr.Logger, flagCredentialsPath, flagClie
742
750
break // Don't continue with the client if kubeconfig wasn't loaded.
743
751
}
744
752
745
- preflightClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
753
+ outputClient , err = client .NewVenConnClient (restCfg , metadata , cfg .InstallNS , cfg .VenConnName , cfg .VenConnNS , nil )
746
754
if err != nil {
747
755
errs = multierror .Append (errs , err )
748
756
}
749
757
case JetstackSecureAPIToken :
750
758
var err error
751
- preflightClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
759
+ outputClient , err = client .NewAPITokenClient (metadata , flagAPIToken , cfg .Server )
752
760
if err != nil {
753
761
errs = multierror .Append (errs , err )
754
762
}
763
+ case LocalFile :
764
+ outputClient = client .NewFileClient (cfg .OutputPath )
755
765
default :
756
- panic (fmt .Errorf ("programmer mistake: auth mode not implemented: %s" , cfg .TLSPKMode ))
766
+ panic (fmt .Errorf ("programmer mistake: output mode not implemented: %s" , cfg .OutputMode ))
757
767
}
758
768
759
769
if errs != nil {
760
- return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .TLSPKMode , errs )
770
+ return nil , fmt .Errorf ("failed loading config using the %s mode: %w" , cfg .OutputMode , errs )
761
771
}
762
772
763
- return preflightClient , nil
773
+ return outputClient , nil
764
774
}
765
775
766
776
// Same as ValidateAndCombineConfig but just for validating the data gatherers.
0 commit comments