Skip to content

Commit 27f2d1a

Browse files
authored
Merge pull request #2291 from crossplane-contrib/backport-2286-to-release-0.57
[Backport release-0.57] fix(rds): correct nil-check for RestoreType in point-in-time restore
2 parents e424d16 + a57ab42 commit 27f2d1a

2 files changed

Lines changed: 67 additions & 1 deletion

File tree

pkg/controller/rds/dbcluster/setup.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ func generateRestoreDBClusterToPointInTimeInput(cr *svcapitypes.DBCluster) *svcs
502502
if p.RestoreFrom.PointInTime != nil && p.RestoreFrom.PointInTime.RestoreTime != nil {
503503
res.RestoreToTime = &p.RestoreFrom.PointInTime.RestoreTime.Time
504504
}
505-
if p.RestoreFrom.PointInTime != nil && p.RestoreFrom.PointInTime.RestoreTime != nil {
505+
if p.RestoreFrom.PointInTime != nil && p.RestoreFrom.PointInTime.RestoreType != nil {
506506
res.RestoreType = p.RestoreFrom.PointInTime.RestoreType
507507
}
508508
if p.RestoreFrom.PointInTime != nil && p.RestoreFrom.PointInTime.SourceDBClusterIdentifier != nil {

pkg/controller/rds/dbcluster/setup_test.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,3 +928,69 @@ func TestIsUpToDate(t *testing.T) {
928928
})
929929
}
930930
}
931+
932+
func TestGenerateRestoreDBClusterToPointInTimeInput(t *testing.T) {
933+
type args struct {
934+
cr *svcapitypes.DBCluster
935+
}
936+
937+
type want struct {
938+
restoreType *string
939+
}
940+
941+
cases := map[string]struct {
942+
args
943+
want
944+
}{
945+
"RestoreTypeSet": {
946+
args: args{
947+
cr: &svcapitypes.DBCluster{
948+
Spec: svcapitypes.DBClusterSpec{
949+
ForProvider: svcapitypes.DBClusterParameters{
950+
CustomDBClusterParameters: svcapitypes.CustomDBClusterParameters{
951+
RestoreFrom: &svcapitypes.RestoreDBClusterBackupConfiguration{
952+
PointInTime: &svcapitypes.PointInTimeRestoreDBClusterBackupConfiguration{
953+
RestoreType: ptr.To("copy-on-write"),
954+
SourceDBClusterIdentifier: ptr.To("source-cluster"),
955+
},
956+
},
957+
},
958+
},
959+
},
960+
},
961+
},
962+
want: want{
963+
restoreType: ptr.To("copy-on-write"),
964+
},
965+
},
966+
"RestoreTypeNotSet": {
967+
args: args{
968+
cr: &svcapitypes.DBCluster{
969+
Spec: svcapitypes.DBClusterSpec{
970+
ForProvider: svcapitypes.DBClusterParameters{
971+
CustomDBClusterParameters: svcapitypes.CustomDBClusterParameters{
972+
RestoreFrom: &svcapitypes.RestoreDBClusterBackupConfiguration{
973+
PointInTime: &svcapitypes.PointInTimeRestoreDBClusterBackupConfiguration{
974+
SourceDBClusterIdentifier: ptr.To("source-cluster"),
975+
},
976+
},
977+
},
978+
},
979+
},
980+
},
981+
},
982+
want: want{
983+
restoreType: nil,
984+
},
985+
},
986+
}
987+
988+
for name, tc := range cases {
989+
t.Run(name, func(t *testing.T) {
990+
result := generateRestoreDBClusterToPointInTimeInput(tc.args.cr)
991+
if diff := cmp.Diff(tc.want.restoreType, result.RestoreType); diff != "" {
992+
t.Errorf("RestoreType: -want, +got:\n%s", diff)
993+
}
994+
})
995+
}
996+
}

0 commit comments

Comments
 (0)