Merge pull request #78997 from j-griffith/fix_nil_pointer

Fix nil pointer
This commit is contained in:
Kubernetes Prow Robot 2019-06-15 08:52:12 -07:00 committed by GitHub
commit fc33ddc285
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 6 deletions

View File

@ -60,15 +60,20 @@ func dataSourceInUse(oldPVCSpec *core.PersistentVolumeClaimSpec) bool {
func dataSourceIsEnabled(pvcSpec *core.PersistentVolumeClaimSpec) bool {
if pvcSpec.DataSource != nil {
if pvcSpec.DataSource.Kind == pvc &&
*pvcSpec.DataSource.APIGroup == "" &&
utilfeature.DefaultFeatureGate.Enabled(features.VolumePVCDataSource) {
apiGroup := ""
if pvcSpec.DataSource.APIGroup != nil {
apiGroup = *pvcSpec.DataSource.APIGroup
}
if utilfeature.DefaultFeatureGate.Enabled(features.VolumePVCDataSource) &&
pvcSpec.DataSource.Kind == pvc &&
apiGroup == "" {
return true
}
if pvcSpec.DataSource.Kind == volumeSnapshot &&
*pvcSpec.DataSource.APIGroup == "snapshot.storage.k8s.io" &&
utilfeature.DefaultFeatureGate.Enabled(features.VolumeSnapshotDataSource) {
if utilfeature.DefaultFeatureGate.Enabled(features.VolumeSnapshotDataSource) &&
pvcSpec.DataSource.Kind == volumeSnapshot &&
apiGroup == "snapshot.storage.k8s.io" {
return true
}
}

View File

@ -221,6 +221,12 @@ func TestPVCDataSourceSpecFilter(t *testing.T) {
Name: "test_clone",
},
}
validSpecNilAPIGroup := core.PersistentVolumeClaimSpec{
DataSource: &core.TypedLocalObjectReference{
Kind: "PersistentVolumeClaim",
Name: "test_clone",
},
}
invalidAPIGroup := "invalid.pvc.api.group"
invalidSpec := core.PersistentVolumeClaimSpec{
@ -266,6 +272,16 @@ func TestPVCDataSourceSpecFilter(t *testing.T) {
gateEnabled: false,
want: nil,
},
"enabled with valid spec but nil APIGroup": {
spec: validSpecNilAPIGroup,
gateEnabled: true,
want: validSpecNilAPIGroup.DataSource,
},
"disabled with valid spec but nil APIGroup": {
spec: validSpecNilAPIGroup,
gateEnabled: false,
want: nil,
},
}
for testName, test := range tests {