Beispiel #1
0
        /// <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;
            }));
        }
Beispiel #2
0
        /// <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;
            }));
        }
Beispiel #3
0
        /// <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;
            }));
        }