Implement controller publish/transfer logic + node mount/unmount

This commit is contained in:
2024-10-01 22:58:35 -04:00
parent b9f2259674
commit beee5a441d
4 changed files with 112 additions and 11 deletions

View File

@@ -122,13 +122,26 @@ func (d *controllerService) ControllerGetCapabilities(ctx context.Context, reque
// ControllerPublishVolume publish a volume
func (d *controllerService) ControllerPublishVolume(ctx context.Context, request *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) {
klog.Infof("controller.ControllerPublishVolume: %s on node %s", request.GetVolumeId(), request.GetNodeId())
return nil, status.Error(codes.Unimplemented, "controller.ControllerPublishVolume")
vol, err := d.p5x.GetVolumeByName(request.GetVolumeId())
if err != nil {
return nil, err
}
_, err = d.p5x.TransferVolume(vol, request.GetNodeId())
if err != nil {
return nil, err
}
return &csi.ControllerPublishVolumeResponse{}, nil
}
// ControllerUnpublishVolume unpublish a volume
func (d *controllerService) ControllerUnpublishVolume(ctx context.Context, request *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) {
klog.Infof("controller.ControllerUnpublishVolume: %s on node %s", request.GetVolumeId(), request.GetNodeId())
return nil, status.Error(codes.Unimplemented, "controller.ControllerUnpublishVolume")
// No need to "unpublish" a volume currently -- it will be transferred to the correct node next time it's published
return &csi.ControllerUnpublishVolumeResponse{}, nil
}
// ValidateVolumeCapabilities validate volume capabilities