/// <summary> /// Obtains the volume by Id /// </summary> /// <param name="volumeId">Volume id</param> /// <returns></returns> public async Task <VolumeReply> GetVolume(string volumeId) { return(await grpcCallerService.CallService(urls.Volumes, async channel => { var client = new Volume.VolumeClient(channel); logger.LogDebug("grpc client created, request = {@id}", ""); var response = await client.GetAsync(new GetVolume() { Id = volumeId }); logger.LogDebug("grpc response {@response}", response); return response; })); }
/// <summary> /// Obtain all volumes for user /// </summary> /// <returns></returns> public async Task <List <VolumeReply> > Volumes() { return(await grpcCallerService.CallService(urls.Volumes, async channel => { var client = new Volume.VolumeClient(channel); logger.LogDebug("grpc client created, request = {@id}", ""); using var response = client.List(new Empty()); List <VolumeReply> volumes = new List <VolumeReply>(); await foreach (var volume in response.ResponseStream.ReadAllAsync()) { volumes.Add(volume); } logger.LogDebug($"Featched {volumes.Count} volumes"); return volumes; })); }
/// <summary> /// Create a volume from the bind model /// </summary> /// <param name="bindModel">Bind volume with volume's properties</param> /// <returns></returns> public async Task <VolumeReply> CreateVolume(VolumeConfigurationBindModel bindModel) { return(await grpcCallerService.CallService(urls.Volumes, async channel => { var client = new Volume.VolumeClient(channel); logger.LogDebug("grpc client created, request = {@id}", ""); CreateVolumeRequest volumeRequest = new CreateVolumeRequest() { Name = bindModel.Name, SizeGb = bindModel.SizeGb, OsType = bindModel.OsType }; volumeRequest.MountPints.AddRange(bindModel.MountPoints); var response = await client.CreateAsync(volumeRequest); logger.LogDebug("grpc response {@response}", response); return response; })); }