Skip to content

Commit 30311e7

Browse files
authored
Fix BackupBucket validation when ProviderConfig is nil (#1633)
1 parent 99b3830 commit 30311e7

2 files changed

Lines changed: 22 additions & 8 deletions

File tree

pkg/admission/validator/backupbucket.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ func (b *backupBucketValidator) validateCreate(backupBucket *core.BackupBucket)
6464
providerConfigPath = field.NewPath("spec", "providerConfig")
6565
)
6666

67-
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketProviderConfigCreate(b.lenientDecoder, backupBucket.Spec.ProviderConfig, providerConfigPath)...)
67+
if backupBucket.Spec.ProviderConfig != nil {
68+
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketProviderConfigCreate(b.lenientDecoder, backupBucket.Spec.ProviderConfig, providerConfigPath)...)
69+
}
70+
6871
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketCredentialsRef(backupBucket.Spec.CredentialsRef, credentialsRefPath)...)
6972
return allErrs
7073
}
@@ -79,7 +82,10 @@ func (b *backupBucketValidator) validateUpdate(oldBackupBucket, backupBucket *co
7982
providerConfigPath = field.NewPath("spec", "providerConfig")
8083
)
8184

82-
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketProviderConfigUpdate(b.decoder, b.lenientDecoder, oldBackupBucket.Spec.ProviderConfig, backupBucket.Spec.ProviderConfig, providerConfigPath)...)
85+
if backupBucket.Spec.ProviderConfig != nil {
86+
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketProviderConfigUpdate(b.decoder, b.lenientDecoder, oldBackupBucket.Spec.ProviderConfig, backupBucket.Spec.ProviderConfig, providerConfigPath)...)
87+
}
88+
8389
allErrs = append(allErrs, awsvalidation.ValidateBackupBucketCredentialsRef(backupBucket.Spec.CredentialsRef, credentialsRefPath)...)
8490
return allErrs
8591
}

pkg/apis/aws/validation/backupbucket.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,18 @@ func ValidateBackupBucketProviderConfigCreate(lenientDecoder runtime.Decoder, co
4343

4444
// ValidateBackupBucketProviderConfigUpdate validates the BackupBucket provider config on update.
4545
func ValidateBackupBucketProviderConfigUpdate(decoder, lenientDecoder runtime.Decoder, oldConfig, newConfig *runtime.RawExtension, fldPath *field.Path) field.ErrorList {
46-
allErrs := field.ErrorList{}
46+
var (
47+
allErrs = field.ErrorList{}
48+
oldBackupBucketConfig *apisaws.BackupBucketConfig
49+
err error
50+
)
4751

48-
oldBackupBucketConfig, err := apisawshelper.DecodeBackupBucketConfig(lenientDecoder, oldConfig)
49-
if err != nil {
50-
allErrs = append(allErrs, field.Invalid(fldPath, rawExtensionToString(oldConfig), fmt.Sprintf("failed to decode old provider config: %s", err.Error())))
51-
return allErrs
52+
if oldConfig != nil {
53+
oldBackupBucketConfig, err = apisawshelper.DecodeBackupBucketConfig(lenientDecoder, oldConfig)
54+
if err != nil {
55+
allErrs = append(allErrs, field.Invalid(fldPath, rawExtensionToString(oldConfig), fmt.Sprintf("failed to decode old provider config: %s", err.Error())))
56+
return allErrs
57+
}
5258
}
5359

5460
newBackupBucketConfig, err := apisawshelper.DecodeBackupBucketConfig(decoder, newConfig)
@@ -58,7 +64,9 @@ func ValidateBackupBucketProviderConfigUpdate(decoder, lenientDecoder runtime.De
5864
}
5965

6066
allErrs = append(allErrs, ValidateBackupBucketConfig(newBackupBucketConfig, fldPath)...)
61-
allErrs = append(allErrs, validateBackupBucketImmutabilityUpdate(oldBackupBucketConfig, newBackupBucketConfig, fldPath)...)
67+
if oldConfig != nil {
68+
allErrs = append(allErrs, validateBackupBucketImmutabilityUpdate(oldBackupBucketConfig, newBackupBucketConfig, fldPath)...)
69+
}
6270

6371
return allErrs
6472
}

0 commit comments

Comments
 (0)