@@ -32,25 +32,17 @@ func ParseBuiltinAuthenticationProfile(bi BuiltinAuthenticationProfile, componen
3232 for i , profile := range profiles {
3333 res [i ] = profile
3434
35- // convert slice to a slice of pointers to update in place for required -> non-required fields
36- metadataPtr := make ([] * Metadata , len ( profile . Metadata ))
37- for j := range profile .Metadata {
38- metadataPtr [ j ] = & profile . Metadata [ j ]
39- }
35+ // deep copy the metadata slice to avoid side effects when manually updating some req -> non-req fields to deprecate some fields for kafka/postgres
36+ // TODO: rm all of this manipulation in Dapr 1.17!!
37+ originalMetadata := profile .Metadata
38+ metadataCopy := make ([] Metadata , len ( originalMetadata ))
39+ copy ( metadataCopy , originalMetadata )
4040
4141 if componentTitle == "Apache Kafka" || strings .ToLower (componentTitle ) == "postgresql" {
42- removeRequiredOnSomeAWSFields (& metadataPtr )
43- }
44-
45- // convert back to value slices for merging
46- updatedMetadata := make ([]Metadata , 0 , len (metadataPtr ))
47- for _ , ptr := range metadataPtr {
48- if ptr != nil {
49- updatedMetadata = append (updatedMetadata , * ptr )
50- }
42+ removeRequiredOnSomeAWSFields (& metadataCopy )
5143 }
5244
53- merged := mergedMetadata (bi .Metadata , updatedMetadata ... )
45+ merged := mergedMetadata (bi .Metadata , metadataCopy ... )
5446
5547 // Note: We must apply the removal of deprecated fields after the merge!!
5648
@@ -92,12 +84,14 @@ func mergedMetadata(base []Metadata, add ...Metadata) []Metadata {
9284// We normally have accessKey, secretKey, and region fields marked required as it is part of the builtin AWS auth profile fields.
9385// However, as we rm the aws prefixed ones, we need to then mark the normally required ones as not required only for postgres and kafka.
9486// This way we do not break existing users, and transition them to the standardized fields.
95- func removeRequiredOnSomeAWSFields (metadata * []* Metadata ) {
87+ func removeRequiredOnSomeAWSFields (metadata * []Metadata ) {
9688 if metadata == nil {
9789 return
9890 }
9991
100- for _ , field := range * metadata {
92+ for i := range * metadata {
93+ field := & (* metadata )[i ]
94+
10195 if field == nil {
10296 continue
10397 }
@@ -125,6 +119,10 @@ func removeSomeDeprecatedFieldsOnUnrelatedAuthProfiles(metadata []Metadata) []Me
125119 filteredMetadata := []Metadata {}
126120
127121 for _ , field := range metadata {
122+ // region is required in Assume Role auth profile, so this is needed for now.
123+ if field .Name == "region" {
124+ field .Required = true
125+ }
128126 if field .Name == "awsAccessKey" || field .Name == "awsSecretKey" || field .Name == "awsSessionToken" || field .Name == "awsRegion" {
129127 continue
130128 } else {
0 commit comments