diff options
Diffstat (limited to 'pkg/driver/controllerserver.go')
| -rw-r--r-- | pkg/driver/controllerserver.go | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/pkg/driver/controllerserver.go b/pkg/driver/controllerserver.go new file mode 100644 index 0000000..e176866 --- /dev/null +++ b/pkg/driver/controllerserver.go @@ -0,0 +1,104 @@ +package driver + +import ( + "context" + + "github.com/container-storage-interface/spec/lib/go/csi" + "github.com/golang/glog" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +type ControllerServer struct { + Driver *SeaweedFsDriver +} + +var _ = csi.ControllerServer(&ControllerServer{}) + +func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { + + volumeId := req.GetName() + params := req.GetParameters() + glog.V(4).Info("params:%v", params) + capacity := req.GetCapacityRange().GetRequiredBytes() + capacityGB := capacity >> 30 + if capacityGB == 0 { + return nil, status.Error(codes.InvalidArgument, "required bytes less than 1GB") + } + seaweedFsVolumeCount := capacityGB / 30 + if seaweedFsVolumeCount == 0 { + seaweedFsVolumeCount = 1 + } + + err := cs.Driver.createBucket(volumeId, int(seaweedFsVolumeCount)) + + return &csi.CreateVolumeResponse{ + Volume: &csi.Volume{ + VolumeId: volumeId, + CapacityBytes: 0, // seaweedFsVolumeCount * 1024 * 1024 * 30, + VolumeContext: params, + }, + }, err +} + +func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) { + + volumeId := req.VolumeId + err := cs.Driver.deleteBucket(volumeId) + + return &csi.DeleteVolumeResponse{}, err +} + +func (cs *ControllerServer) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error) { + + return &csi.ValidateVolumeCapabilitiesResponse{ + Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{ + VolumeContext: req.GetVolumeContext(), + VolumeCapabilities: req.GetVolumeCapabilities(), + Parameters: req.GetParameters(), + }, + }, nil + +} + +func (cs *ControllerServer) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +// ControllerGetCapabilities implements the default GRPC callout. +// Default supports all capabilities +func (cs *ControllerServer) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) { + glog.V(5).Infof("Using default ControllerGetCapabilities") + + return &csi.ControllerGetCapabilitiesResponse{ + Capabilities: cs.Driver.cscap, + }, nil +} + +func (cs *ControllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} + +func (cs *ControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { + return nil, status.Error(codes.Unimplemented, "") +} |
