@@ -32,40 +32,32 @@ 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 ]
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 )
40+
41+ if componentTitle == "Apache Kafka" || strings .ToLower (componentTitle ) == "postgresql" {
42+ removeRequiredOnSomeAWSFields (& metadataCopy )
3943 }
4044
41- if componentTitle == "Apache Kafka" {
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- }
51- }
52-
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
5749 // Here, we remove some deprecated fields as we support the transition to a new auth profile
58- if profile .Title == "AWS: Assume specific IAM Role" && componentTitle == "Apache Kafka" {
50+ if profile .Title == "AWS: Assume IAM Role" && componentTitle == "Apache Kafka" || profile . Title == "AWS: Assume IAM Role" && strings . ToLower ( componentTitle ) == "postgresql " {
5951 merged = removeSomeDeprecatedFieldsOnUnrelatedAuthProfiles (merged )
6052 }
6153
6254 // Here, there are no metadata fields that need deprecating
63- if profile .Title == "AWS: Credentials from Environment Variables" && componentTitle == "Apache Kafka" {
55+ if profile .Title == "AWS: Credentials from Environment Variables" && componentTitle == "Apache Kafka" || profile . Title == "AWS: Credentials from Environment Variables" && strings . ToLower ( componentTitle ) == "postgresql" {
6456 merged = removeAllDeprecatedFieldsOnUnrelatedAuthProfiles (merged )
6557 }
6658
6759 // Here, this is a new auth profile, so rm all deprecating fields as unrelated.
68- if profile .Title == "AWS: IAM Roles Anywhere" && componentTitle == "Apache Kafka" {
60+ if profile .Title == "AWS: IAM Roles Anywhere" && componentTitle == "Apache Kafka" || profile . Title == "AWS: IAM Roles Anywhere" && strings . ToLower ( componentTitle ) == "postgresql" {
6961 merged = removeAllDeprecatedFieldsOnUnrelatedAuthProfiles (merged )
7062 }
7163
@@ -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,7 +119,11 @@ func removeSomeDeprecatedFieldsOnUnrelatedAuthProfiles(metadata []Metadata) []Me
125119 filteredMetadata := []Metadata {}
126120
127121 for _ , field := range metadata {
128- if field .Name == "awsAccessKey" || field .Name == "awsSecretKey" || field .Name == "awsSessionToken" {
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+ }
126+ if field .Name == "awsAccessKey" || field .Name == "awsSecretKey" || field .Name == "awsSessionToken" || field .Name == "awsRegion" {
129127 continue
130128 } else {
131129 filteredMetadata = append (filteredMetadata , field )
0 commit comments