@@ -14,6 +14,7 @@ import (
14
14
"github.com/argoproj-labs/argo-cloudops/internal/env"
15
15
"github.com/argoproj-labs/argo-cloudops/service/internal/credentials"
16
16
"github.com/argoproj-labs/argo-cloudops/service/internal/workflow"
17
+ vault "github.com/hashicorp/vault/api"
17
18
18
19
"github.com/aws/aws-sdk-go/aws/arn"
19
20
"github.com/distribution/distribution/reference"
@@ -72,12 +73,14 @@ var isStringAlphaNumericUnderscore = regexp.MustCompile(`^([a-zA-Z])[a-zA-Z0-9_]
72
73
// HTTP handler
73
74
type handler struct {
74
75
logger log.Logger
75
- newCredentialsProvider func (a credentials.Authorization ) (credentials.Provider , error )
76
+ newCredentialsProvider func (a credentials.Authorization , svc * vault. Client ) (credentials.Provider , error )
76
77
argo workflow.Workflow
77
78
argoCtx context.Context
78
79
config * Config
79
80
gitClient gitClient
80
81
env env.EnvVars
82
+ newCredsProviderSvc func (c credentials.VaultConfig , h http.Header ) (* vault.Client , error )
83
+ vaultConfig credentials.VaultConfig
81
84
}
82
85
83
86
// Validates workflow parameters
@@ -210,7 +213,7 @@ func (h handler) createWorkflowFromGit(w http.ResponseWriter, r *http.Request) {
210
213
211
214
level .Debug (l ).Log ("message" , "creating workflow" )
212
215
cwr .Type = cgwr .Type
213
- h .createWorkflowFromRequest (ctx , w , a , cwr , l )
216
+ h .createWorkflowFromRequest (ctx , w , r , a , cwr , l )
214
217
}
215
218
216
219
// Creates a workflow
@@ -245,11 +248,11 @@ func (h handler) createWorkflow(w http.ResponseWriter, r *http.Request) {
245
248
}
246
249
247
250
level .Debug (l ).Log ("message" , "creating workflow" )
248
- h .createWorkflowFromRequest (ctx , w , a , cwr , l )
251
+ h .createWorkflowFromRequest (ctx , w , r , a , cwr , l )
249
252
}
250
253
251
254
// Creates a workflow
252
- func (h handler ) createWorkflowFromRequest (ctx context.Context , w http.ResponseWriter , a * credentials.Authorization , cwr createWorkflowRequest , l log.Logger ) {
255
+ func (h handler ) createWorkflowFromRequest (ctx context.Context , w http.ResponseWriter , r * http. Request , a * credentials.Authorization , cwr createWorkflowRequest , l log.Logger ) {
253
256
level .Debug (l ).Log ("message" , "validating workflow parameters" )
254
257
if err := h .validateWorkflowParameters (cwr .Parameters ); err != nil {
255
258
level .Error (l ).Log ("message" , "error in parameters" , "error" , err )
@@ -329,8 +332,15 @@ func (h handler) createWorkflowFromRequest(ctx context.Context, w http.ResponseW
329
332
return
330
333
}
331
334
335
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
336
+ if err != nil {
337
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
338
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
339
+ return
340
+ }
341
+
332
342
level .Debug (l ).Log ("message" , "creating new credentials provider" )
333
- cp , err := h .newCredentialsProvider (* a )
343
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
334
344
if err != nil {
335
345
level .Error (l ).Log ("message" , "bad or unknown credentials provider" , "error" , err )
336
346
h .errorResponse (w , "bad or unknown credentials provider" , http .StatusInternalServerError , err )
@@ -445,8 +455,15 @@ func (h handler) getTarget(w http.ResponseWriter, r *http.Request) {
445
455
return
446
456
}
447
457
458
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
459
+ if err != nil {
460
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
461
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
462
+ return
463
+ }
464
+
448
465
level .Debug (l ).Log ("message" , "creating credential provider" )
449
- cp , err := h .newCredentialsProvider (* a )
466
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
450
467
if err != nil {
451
468
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
452
469
h .errorResponse (w , "error creating credentials provider" , http .StatusBadRequest , err )
@@ -564,8 +581,15 @@ func (h handler) createProject(w http.ResponseWriter, r *http.Request) {
564
581
return
565
582
}
566
583
584
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
585
+ if err != nil {
586
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
587
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
588
+ return
589
+ }
590
+
567
591
level .Debug (l ).Log ("message" , "creating credential provider" )
568
- cp , err := h .newCredentialsProvider (* a )
592
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
569
593
if err != nil {
570
594
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
571
595
h .errorResponse (w , "error creating credentials provider" , http .StatusBadRequest , err )
@@ -633,8 +657,15 @@ func (h handler) getProject(w http.ResponseWriter, r *http.Request) {
633
657
return
634
658
}
635
659
660
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
661
+ if err != nil {
662
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
663
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
664
+ return
665
+ }
666
+
636
667
level .Debug (l ).Log ("message" , "creating credential provider" )
637
- cp , err := h .newCredentialsProvider (* a )
668
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
638
669
if err != nil {
639
670
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
640
671
h .errorResponse (w , "error creating credentials provider" , http .StatusBadRequest , err )
@@ -674,8 +705,15 @@ func (h handler) deleteProject(w http.ResponseWriter, r *http.Request) {
674
705
return
675
706
}
676
707
708
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
709
+ if err != nil {
710
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
711
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
712
+ return
713
+ }
714
+
677
715
level .Debug (l ).Log ("message" , "creating credential provider" )
678
- cp , err := h .newCredentialsProvider (* a )
716
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
679
717
if err != nil {
680
718
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
681
719
h .errorResponse (w , "error creating credentials provider" , http .StatusBadRequest , err )
@@ -760,8 +798,15 @@ func (h handler) createTarget(w http.ResponseWriter, r *http.Request) {
760
798
return
761
799
}
762
800
801
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
802
+ if err != nil {
803
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
804
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
805
+ return
806
+ }
807
+
763
808
level .Debug (l ).Log ("message" , "creating credential provider" )
764
- cp , err := h .newCredentialsProvider (* a )
809
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
765
810
if err != nil {
766
811
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
767
812
h .errorResponse (w , "error creating credentials provider" , http .StatusInternalServerError , err )
@@ -845,8 +890,15 @@ func (h handler) deleteTarget(w http.ResponseWriter, r *http.Request) {
845
890
return
846
891
}
847
892
893
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
894
+ if err != nil {
895
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
896
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
897
+ return
898
+ }
899
+
848
900
level .Debug (l ).Log ("message" , "creating credential provider" )
849
- cp , err := h .newCredentialsProvider (* a )
901
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
850
902
if err != nil {
851
903
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
852
904
h .errorResponse (w , "error creating credentials provider" , http .StatusBadRequest , err )
@@ -886,8 +938,15 @@ func (h handler) listTargets(w http.ResponseWriter, r *http.Request) {
886
938
return
887
939
}
888
940
941
+ cpSvc , err := h .newCredsProviderSvc (h .vaultConfig , r .Header )
942
+ if err != nil {
943
+ level .Error (l ).Log ("message" , "error creating credentials provider service" , "error" , err )
944
+ h .errorResponse (w , "error creating credentials provider service" , http .StatusBadRequest , err )
945
+ return
946
+ }
947
+
889
948
level .Debug (l ).Log ("message" , "creating credential provider" )
890
- cp , err := h .newCredentialsProvider (* a )
949
+ cp , err := h .newCredentialsProvider (* a , cpSvc )
891
950
if err != nil {
892
951
level .Error (l ).Log ("message" , "error creating credentials provider" , "error" , err )
893
952
h .errorResponse (w , "error creating credentials provider" , http .StatusInternalServerError , err )
0 commit comments