From 639e97d156c808986d01fcf6781df03a798060fd Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Tue, 5 May 2020 23:14:44 -0400 Subject: [PATCH 1/2] Enforce offline volume expansion --- mock/service/controller.go | 5 +++++ mock/service/service.go | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mock/service/controller.go b/mock/service/controller.go index 09c2e011..10445882 100644 --- a/mock/service/controller.go +++ b/mock/service/controller.go @@ -227,6 +227,11 @@ func (s *service) ControllerPublishVolume( v.VolumeContext[ReadOnlyKey] = roVal s.vols[i] = v + if volInfo, ok := MockVolumes[req.VolumeId]; ok { + volInfo.ISPublished = true + MockVolumes[req.VolumeId] = volInfo + } + if hookVal, hookMsg := s.execHook("ControllerPublishVolumeEnd"); hookVal != codes.OK { return nil, status.Errorf(hookVal, hookMsg) } diff --git a/mock/service/service.go b/mock/service/service.go index 924d1d41..6a1f774a 100644 --- a/mock/service/service.go +++ b/mock/service/service.go @@ -109,7 +109,6 @@ type service struct { } type Volume struct { - sync.Mutex VolumeCSI csi.Volume NodeID string ISStaged bool From c8940c40434046faeba3cb828ea9bd361bc6933c Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Wed, 6 May 2020 16:52:12 -0400 Subject: [PATCH 2/2] Add a new field for ControllerPublish'd state --- mock/service/controller.go | 6 +++--- mock/service/service.go | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/mock/service/controller.go b/mock/service/controller.go index 10445882..e759b1b5 100644 --- a/mock/service/controller.go +++ b/mock/service/controller.go @@ -228,7 +228,7 @@ func (s *service) ControllerPublishVolume( s.vols[i] = v if volInfo, ok := MockVolumes[req.VolumeId]; ok { - volInfo.ISPublished = true + volInfo.ISControllerPublished = true MockVolumes[req.VolumeId] = volInfo } @@ -628,8 +628,8 @@ func (s *service) ControllerExpandVolume( return nil, status.Error(codes.NotFound, req.VolumeId) } - if s.config.DisableOnlineExpansion && MockVolumes[v.GetVolumeId()].ISPublished { - return nil, status.Error(codes.Aborted, "volume is published and online volume expansion is not supported") + if s.config.DisableOnlineExpansion && MockVolumes[v.GetVolumeId()].ISControllerPublished { + return nil, status.Error(codes.FailedPrecondition, "volume is published and online volume expansion is not supported") } requestBytes := req.CapacityRange.RequiredBytes diff --git a/mock/service/service.go b/mock/service/service.go index 6a1f774a..c45298fb 100644 --- a/mock/service/service.go +++ b/mock/service/service.go @@ -109,13 +109,14 @@ type service struct { } type Volume struct { - VolumeCSI csi.Volume - NodeID string - ISStaged bool - ISPublished bool - ISEphemeral bool - StageTargetPath string - TargetPath string + VolumeCSI csi.Volume + NodeID string + ISStaged bool + ISPublished bool + ISEphemeral bool + ISControllerPublished bool + StageTargetPath string + TargetPath string } var MockVolumes map[string]Volume