Skip to content

Commit c44a77d

Browse files
authored
Merge pull request #5 from darkowlzz/hostpath-validatevolumecaps
hostpath: Implement ValidateVolumeCapabilities
2 parents fd2e591 + 90617d0 commit c44a77d

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

hack/e2e-hostpath.sh

-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ CSI_MOUNTPOINT="/mnt"
1313
APP=hostpathplugin
1414

1515
SKIP="WithCapacity"
16-
if [ x${TRAVIS} = x"true" ] ; then
17-
SKIP="ValidateVolumeCapabilities"
18-
fi
1916

2017
# Get csi-sanity
2118
./hack/get-sanity.sh

pkg/hostpath/controllerserver.go

+29-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,35 @@ func (cs *controllerServer) ControllerGetCapabilities(ctx context.Context, req *
163163
}
164164

165165
func (cs *controllerServer) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error) {
166-
return nil, status.Error(codes.Unimplemented, "")
166+
167+
// Check arguments
168+
if len(req.GetVolumeId()) == 0 {
169+
return nil, status.Error(codes.InvalidArgument, "Volume ID cannot be empty")
170+
}
171+
if len(req.VolumeCapabilities) == 0 {
172+
return nil, status.Error(codes.InvalidArgument, req.VolumeId)
173+
}
174+
175+
if _, err := getVolumeByID(req.GetVolumeId()); err != nil {
176+
return nil, status.Error(codes.NotFound, req.GetVolumeId())
177+
}
178+
179+
for _, cap := range req.GetVolumeCapabilities() {
180+
if cap.GetMount() == nil && cap.GetBlock() == nil {
181+
return nil, status.Error(codes.InvalidArgument, "cannot have both mount and block access type be undefined")
182+
}
183+
184+
// A real driver would check the capabilities of the given volume with
185+
// the set of requested capabilities.
186+
}
187+
188+
return &csi.ValidateVolumeCapabilitiesResponse{
189+
Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{
190+
VolumeContext: req.GetVolumeContext(),
191+
VolumeCapabilities: req.GetVolumeCapabilities(),
192+
Parameters: req.GetParameters(),
193+
},
194+
}, nil
167195
}
168196

169197
func (cs *controllerServer) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) {

0 commit comments

Comments
 (0)