From 07288163519c4c10698e55c25bed484eefbcb7d4 Mon Sep 17 00:00:00 2001 From: Marcell Sevcsik <31651557+0sewa0@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:14:43 +0100 Subject: [PATCH] Moves the version check in the correct volume publisher (#648) --- src/controllers/csi/driver/volumes/app/publisher.go | 7 +++++++ src/controllers/csi/driver/volumes/host/publisher.go | 8 +------- .../csi/driver/volumes/host/publisher_test.go | 10 ++++++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/controllers/csi/driver/volumes/app/publisher.go b/src/controllers/csi/driver/volumes/app/publisher.go index 7cdfb6e27b..ebec8c88d5 100644 --- a/src/controllers/csi/driver/volumes/app/publisher.go +++ b/src/controllers/csi/driver/volumes/app/publisher.go @@ -58,6 +58,13 @@ func (publisher *AppVolumePublisher) PublishVolume(ctx context.Context, volumeCf return nil, err } + if bindCfg.Version == "" { + return nil, status.Error( + codes.Unavailable, + fmt.Sprintf("version is not yet set, csi-provisioner hasn't finished setup yet for tenant: %s", bindCfg.TenantUUID), + ) + } + if err := publisher.mountOneAgent(bindCfg, volumeCfg); err != nil { return nil, status.Error(codes.Internal, fmt.Sprintf("failed to mount oneagent volume: %s", err)) } diff --git a/src/controllers/csi/driver/volumes/host/publisher.go b/src/controllers/csi/driver/volumes/host/publisher.go index e9732206e6..f7176460ee 100644 --- a/src/controllers/csi/driver/volumes/host/publisher.go +++ b/src/controllers/csi/driver/volumes/host/publisher.go @@ -56,16 +56,10 @@ func (publisher *HostVolumePublisher) PublishVolume(ctx context.Context, volumeC return nil, err } - if bindCfg.Version == "" { - return nil, status.Error( - codes.Unavailable, - fmt.Sprintf("version is not yet set, csi-provisioner hasn't finished setup yet for tenant: %s", bindCfg.TenantUUID), - ) - } - if err := publisher.mountOneAgent(bindCfg.TenantUUID, volumeCfg); err != nil { return nil, status.Error(codes.Internal, fmt.Sprintf("failed to mount osagent volume: %s", err.Error())) } + volume, err := publisher.db.GetOsAgentVolumeViaTenantUUID(bindCfg.TenantUUID) if err != nil { return nil, status.Error(codes.Internal, fmt.Sprintf("failed to get osagent volume info from database: %s", err.Error())) diff --git a/src/controllers/csi/driver/volumes/host/publisher_test.go b/src/controllers/csi/driver/volumes/host/publisher_test.go index d8ff9cd2ed..5e5c5a2554 100644 --- a/src/controllers/csi/driver/volumes/host/publisher_test.go +++ b/src/controllers/csi/driver/volumes/host/publisher_test.go @@ -44,12 +44,14 @@ func TestPublishVolume(t *testing.T) { mounter := mount.NewFakeMounter([]mount.MountPoint{}) publisher := newPublisherForTesting(t, mounter) - mockNotReadyDynakube(t, &publisher) + mockDynakubeWithoutVersion(t, &publisher) response, err := publisher.PublishVolume(context.TODO(), createTestVolumeConfig()) - assert.Error(t, err) - assert.Nil(t, response) + require.NoError(t, err) + assert.NotNil(t, response) + assert.NotEmpty(t, mounter.MountPoints) + assertReferencesForPublishedVolume(t, &publisher, mounter) }) } @@ -150,7 +152,7 @@ func mockDynakube(t *testing.T, publisher *HostVolumePublisher) { require.NoError(t, err) } -func mockNotReadyDynakube(t *testing.T, publisher *HostVolumePublisher) { +func mockDynakubeWithoutVersion(t *testing.T, publisher *HostVolumePublisher) { err := publisher.db.InsertDynakube(metadata.NewDynakube(testDynakubeName, testTenantUUID, "")) require.NoError(t, err) }