Skip to content

Commit

Permalink
Merge pull request #2000 from trystanleftwich/fix/rdsinstane-add-mast…
Browse files Browse the repository at this point in the history
…erUsername-to-output-if-exists

fix(rdsinstance): Updates will now set ResourceCredentialsSecretUserKey in ConnectionDetails if masterUsername is set
  • Loading branch information
MisterMX committed Mar 15, 2024
2 parents 4b536aa + ef4c3af commit 63b23e4
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
10 changes: 6 additions & 4 deletions pkg/controller/database/rdsinstance/rdsinstance.go
Original file line number Diff line number Diff line change
Expand Up @@ -275,19 +275,21 @@ func (e *external) Update(ctx context.Context, mg resource.Managed) (managed.Ext
return managed.ExternalUpdate{}, errors.Wrap(err, errPatchCreationFailed)
}
modify := rds.GenerateModifyDBInstanceInput(meta.GetExternalName(cr), patch, &rsp.DBInstances[0])
var conn managed.ConnectionDetails
conn := managed.ConnectionDetails{}

pwd, changed, err := rds.GetPassword(ctx, e.kube, cr.Spec.ForProvider.MasterPasswordSecretRef, cr.Spec.WriteConnectionSecretToReference)
if err != nil {
return managed.ExternalUpdate{}, err
}
if changed {
conn = managed.ConnectionDetails{
xpv1.ResourceCredentialsSecretPasswordKey: []byte(pwd),
}
conn[xpv1.ResourceCredentialsSecretPasswordKey] = []byte(pwd)
modify.MasterUserPassword = aws.String(pwd)
}

if cr.Spec.ForProvider.MasterUsername != nil {
conn[xpv1.ResourceCredentialsSecretUserKey] = []byte(aws.ToString(cr.Spec.ForProvider.MasterUsername))
}

if _, err = e.client.ModifyDBInstance(ctx, modify); err != nil {
return managed.ExternalUpdate{}, errorutils.Wrap(err, errModifyFailed)
}
Expand Down
38 changes: 38 additions & 0 deletions pkg/controller/database/rdsinstance/rdsinstance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,9 @@ func TestUpdate(t *testing.T) {
},
want: want{
cr: instance(withTags(map[string]string{"foo": "bar"})),
result: managed.ExternalUpdate{
ConnectionDetails: managed.ConnectionDetails{},
},
},
},
"AutoscaleExcludeStorage": {
Expand Down Expand Up @@ -765,6 +768,9 @@ func TestUpdate(t *testing.T) {
},
want: want{
cr: instance(withMaxAllocatedStorage(100), withAllocatedStorage(20)),
result: managed.ExternalUpdate{
ConnectionDetails: managed.ConnectionDetails{},
},
},
},
"AWSManagedBackupRetentionTargetIgnore": {
Expand Down Expand Up @@ -796,6 +802,9 @@ func TestUpdate(t *testing.T) {
},
want: want{
cr: instance(withBackupRetentionPeriod(0), withStatusBackupRetentionPeriod(7), withPreferredBackupWindow("x")),
result: managed.ExternalUpdate{
ConnectionDetails: managed.ConnectionDetails{},
},
},
},
"AlreadyModifying": {
Expand All @@ -804,6 +813,35 @@ func TestUpdate(t *testing.T) {
},
want: want{
cr: instance(withDBInstanceStatus(v1beta1.RDSInstanceStateModifying)),
result: managed.ExternalUpdate{
ConnectionDetails: nil,
},
},
},
"AddMasterUsernameToConnectionDetails": {
args: args{
rds: &fake.MockRDSClient{
MockModify: func(ctx context.Context, input *awsrds.ModifyDBInstanceInput, opts []func(*awsrds.Options)) (*awsrds.ModifyDBInstanceOutput, error) {
return &awsrds.ModifyDBInstanceOutput{}, nil
},
MockDescribe: func(ctx context.Context, input *awsrds.DescribeDBInstancesInput, opts []func(*awsrds.Options)) (*awsrds.DescribeDBInstancesOutput, error) {
return &awsrds.DescribeDBInstancesOutput{
DBInstances: []awsrdstypes.DBInstance{{}},
}, nil
},
MockAddTags: func(ctx context.Context, input *awsrds.AddTagsToResourceInput, opts []func(*awsrds.Options)) (*awsrds.AddTagsToResourceOutput, error) {
return &awsrds.AddTagsToResourceOutput{}, nil
},
},
cr: instance(withMasterUsername(&masterUsername)),
},
want: want{
cr: instance(withMasterUsername(&masterUsername)),
result: managed.ExternalUpdate{
ConnectionDetails: managed.ConnectionDetails{
xpv1.ResourceCredentialsSecretUserKey: []byte(masterUsername),
},
},
},
},
"FailedDescribe": {
Expand Down

0 comments on commit 63b23e4

Please sign in to comment.