Open
Description
Brief:
I am developing a CSI plugin, and at first stages I do not provide dynamic volume provisioning API support (which is a valid plugin according to CSI spec). That is, my plugin does not advertise CREATE_DELETE_VOLUME
Controller Service capability.
But, there are 3 test cases where csi-sanity still sends CreateVolumeRequest to Controller Server.
Tests output:
Summarizing 3 Failures:
[Fail] Node Service [It] should work
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/node.go:648
[Fail] Controller Service ValidateVolumeCapabilities [It] should fail when no volume capabilities are provided
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go:936
[Fail] Controller Service ValidateVolumeCapabilities [It] should return appropriate values (no optional values added)
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go:991
Test cases:
From node.go:648
:
It("should work", func() {
name := UniqueString("sanity-node-full")
// Create Volume First
By("creating a single node writer volume")
vol, err := s.CreateVolume(
context.Background(),
&csi.CreateVolumeRequest{
Name: name,
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessType: &csi.VolumeCapability_Mount{
Mount: &csi.VolumeCapability_MountVolume{},
},
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
},
},
},
Secrets: sc.Secrets.CreateVolumeSecret,
Parameters: sc.Config.TestVolumeParameters,
},
)
Expect(err).NotTo(HaveOccurred())
From controller.go:936
:
It("should fail when no volume capabilities are provided", func() {
// Create Volume First
By("creating a single node writer volume")
name := UniqueString("sanity-controller-validate-nocaps")
vol, err := c.CreateVolume(
context.Background(),
&csi.CreateVolumeRequest{
Name: name,
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessType: &csi.VolumeCapability_Mount{
Mount: &csi.VolumeCapability_MountVolume{},
},
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
},
},
},
Secrets: sc.Secrets.CreateVolumeSecret,
Parameters: sc.Config.TestVolumeParameters,
},
)
Expect(err).NotTo(HaveOccurred())
From controller.go:991
:
It("should return appropriate values (no optional values added)", func() {
// Create Volume First
By("creating a single node writer volume")
name := UniqueString("sanity-controller-validate")
vol, err := c.CreateVolume(
context.Background(),
&csi.CreateVolumeRequest{
Name: name,
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessType: &csi.VolumeCapability_Mount{
Mount: &csi.VolumeCapability_MountVolume{},
},
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
},
},
},
Secrets: sc.Secrets.CreateVolumeSecret,
Parameters: sc.Config.TestVolumeParameters,
},
)
Expect(err).NotTo(HaveOccurred())
IMO, these test cases should be skipped, when Controller service does not have CREATE_DELETE_VOLUME
capability.
Thanks!