Defaults and validation are such that the field has to be set when
the feature is enabled, just as for the other boolean fields. This
was missing in some tests, which was okay as long as they ran
with the feature disabled. Once it gets enabled, validation will
flag the missing field as error.
Other tests didn't run at all.
And give ownership to pkg/scheduler/framework/plugins/volumebinding
Signed-off-by: Aldo Culquicondor <acondor@google.com>
Change-Id: I4bd89b1745a2be0e458601056ab905bdd6692195
This was added to staging/src/k8s.io/api/storage/v1beta1/types.go but
unintentionally left out for the internal type. Both docs should
better match because it is uncertain which one will be looked at by
developers.
The original "iff" for "if and only if" is unnecessary because the
comment about "otherwise false" avoids ambiguity.
When adding CSIDriver.Spec.VolumeLifecycleModes, the defaulting in
pkg/apis/storage/fuzzer/fuzzer.go did not quite match the one from
pkg/apis/storage/v1beta1/defaults.go, causing a test failure when the
corresponding feature gate is enabled.
This ensures that users get a good error message early on when trying
to do something that isn't okay:
$ kubectl create -f csi-hostpath-driverinfo.yaml
The CSIDriver "hostpath.csi.k8s.io" is invalid: spec.volumeLifecycleModes: Unsupported value: "foobar": supported values: "persistent", "ephemeral"
Using a "normal" CSI driver for an inline ephemeral volume may have
unexpected and potentially harmful effects when the driver gets a
NodePublishVolume call that it isn't expecting. To prevent that mistake,
driver deployments for a driver that supports such volumes must:
- deploy a CSIDriver object for the driver
- list "ephemeral" as one of the supported modes
The default is "persistent", so existing deployments continue to work
and are automatically protected against incorrect usage.
This commit contains the API change. Generated code and manual code
which uses the new API follow.
This PR is the first step to transition CSINodeInfo and CSIDriver
CRD's to in-tree APIs. It adds them to the existing API group
“storage.k8s.io” as core storage APIs.