Beispiel #1
0
        public async Task create_delete_volume(string hostName, string storageName, string volumeName)
        {
            var host = await Fixture.GetHypervHostAsync(hostName);

            var filter = new HypervVolumeFilter
            {
                Name    = volumeName,
                Storage = storageName,
            };

            {
                var info = await host.GetVolumesAsync(filter).FirstOrDefaultAsync();

                if (info != default)
                {
                    Assert.Equal(volumeName, info.Name);
                    Assert.Equal(storageName, info.Storage);

                    var detail = await host.GetVolumeAsync(info.Path);

                    Assert.Equal(volumeName, detail.Name);
                    Assert.Equal(storageName, detail.Storage);

                    await host.DeleteVolumeAsync(new HypervDeleteVolumeRequest
                    {
                        Id   = detail.Id,
                        Path = detail.Path
                    });
                }
            }

            var volume = await host.CreateVolumeAsync(new HypervCreateVolumeRequest
            {
                Name    = volumeName,
                Storage = storageName
            });

            Assert.Equal(volumeName, volume.Name);
            Assert.Equal(storageName, volume.Storage);

            Assert.Equal(10UL * 1024UL * 1024UL, volume.SizeBytes); //10GB
            Assert.True(volume.FileSizeBytes <= volume.SizeBytes);
            Assert.True(volume.FileSizeBytes > 0);
            Assert.NotEqual(Guid.Empty, volume.Id);

            await host.DeleteVolumeAsync(new HypervDeleteVolumeRequest
            {
                Id   = volume.Id,
                Path = volume.Path
            });


            var notFound = await host.GetVolumesAsync(filter).FirstOrDefaultAsync();

            Assert.Null(notFound);
        }
        public async Task create_and_attach_and_mount_volume(string hostName, string storageName, string volumeName, string vmName)
        {
            var service = await Fixture.GetHypervVolumeSerivceAsync(hostName);

            var filter = new HypervVolumeFilter
            {
                Name    = volumeName,
                Storage = storageName,
            };


            var volume = await service.GetVolumesAsync(filter).FirstOrDefaultAsync();

            if (volume == default)
            {
                var detail = await service.CreateVolumeAsync(new HypervCreateVolumeRequest
                {
                    Name    = volumeName,
                    Storage = storageName
                });

                Assert.Equal(volumeName, detail.Name);
                Assert.Equal(storageName, detail.Storage);

                volume = await service.GetVolumesAsync(filter).FirstAsync();
            }

            var vm = await service.GetVirtualMachinesAsync(new HypervVirtualMachineFilter { Name = vmName }).FirstAsync();

            Assert.Equal(vmName, vm.Name, true);
            Assert.Equal(volumeName, volume.Name, true);

            var vmVolume = await service.GetVirtualMachineVolumesAsync(vm.Id,
                                                                       new HypervVirtualMachineVolumeFilter
            {
                VolumePath = volume.Path,
                Host       = vm.Host
            })
                           .FirstOrDefaultAsync();

            vmVolume ??= await service.AttachVolumeAsync(new HypervAttachVolumeRequest
            {
                VMId       = vm.Id,
                VolumePath = volume.Path,
                Host       = vm.Host
            });

            Assert.Equal(vm.Id, vmVolume.VMId);
            Assert.Equal(vm.Name, vmVolume.VMName, true);
            Assert.Equal(volume.Name, vmVolume.VolumeName, true);
            Assert.Equal(volume.Path, vmVolume.VolumePath, true);
        }
Beispiel #3
0
        public async Task query_volumes_filtered(string hostName, string storageName, string volumeName)
        {
            var host = await Fixture.GetHypervHostAsync(hostName);

            var filter = new HypervVolumeFilter
            {
                Name    = volumeName,
                Storage = storageName,
            };

            var volumes = await host.GetVolumesAsync(filter).ToListAsync();

            Assert.NotEmpty(volumes);

            if (!string.IsNullOrEmpty(volumeName))
            {
                Assert.All(volumes, n => StringComparer.OrdinalIgnoreCase.Equals(n.Name, volumeName));
            }

            if (!string.IsNullOrEmpty(storageName))
            {
                Assert.All(volumes, n => StringComparer.OrdinalIgnoreCase.Equals(n.Storage, storageName));
            }
        }