public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { DiskParameters vmdkParams = new DiskParameters(diskParameters); vmdkParams.CreateType = VariantToCreateType(variant); return(Disk.Initialize(locator, path, vmdkParams)); }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { switch (variant) { case "fixed": return Disk.InitializeFixed(locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity); case "dynamic": return Disk.InitializeDynamic(locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity); default: throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Unknown VDI disk variant '{0}'", variant), "variant"); } }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { switch (variant) { case "fixed": return Disk.InitializeFixed(locator, path, diskParameters.Capacity, diskParameters.Geometry); case "dynamic": throw new NotImplementedException(); default: throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Unknown VHD disk variant '{0}'", variant), "variant"); } }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { switch (variant) { case "fixed": return(Disk.InitializeFixed(locator, path, diskParameters.Capacity, diskParameters.Geometry)); case "dynamic": return(Disk.InitializeDynamic(locator, path, diskParameters.Capacity, FileParameters.DefaultDynamicBlockSize)); default: throw new ArgumentException( string.Format(CultureInfo.InvariantCulture, "Unknown VHD disk variant '{0}'", variant), nameof(variant)); } }
/// <summary> /// Initializes a new instance of the DiskParameters class with generic parameters. /// </summary> /// <param name="genericParameters">The generic parameters to copy.</param> public DiskParameters(VirtualDiskParameters genericParameters) { Capacity = genericParameters.Capacity; Geometry = genericParameters.Geometry; BiosGeometry = genericParameters.BiosGeometry; string stringCreateType; if (genericParameters.ExtendedParameters.TryGetValue(Disk.ExtendedParameterKeyCreateType, out stringCreateType)) { CreateType = (DiskCreateType)Enum.Parse(typeof(DiskCreateType), stringCreateType); } else { CreateType = DiskCreateType.MonolithicSparse; } if (genericParameters.AdapterType == GenericDiskAdapterType.Ide) { AdapterType = DiskAdapterType.Ide; } else { string stringAdapterType; if (genericParameters.ExtendedParameters.TryGetValue(Disk.ExtendedParameterKeyAdapterType, out stringAdapterType)) { AdapterType = (DiskAdapterType)Enum.Parse(typeof(DiskAdapterType), stringAdapterType); // Don't refining sub-type of SCSI actually select IDE if (AdapterType == DiskAdapterType.Ide) { AdapterType = DiskAdapterType.LsiLogicScsi; } } else { AdapterType = DiskAdapterType.LsiLogicScsi; } } }
/// <summary> /// Initializes a new instance of the DiskParameters class with generic parameters. /// </summary> /// <param name="genericParameters">The generic parameters to copy</param> public DiskParameters(VirtualDiskParameters genericParameters) { Capacity = genericParameters.Capacity; Geometry = genericParameters.Geometry; BiosGeometry = genericParameters.BiosGeometry; string stringCreateType; if (genericParameters.ExtendedParameters.TryGetValue(Disk.ExtendedParameterKeyCreateType, out stringCreateType)) { CreateType = (DiskCreateType)Enum.Parse(typeof(DiskCreateType), stringCreateType); } else { CreateType = DiskCreateType.MonolithicSparse; } if (genericParameters.AdapterType == GenericDiskAdapterType.Ide) { AdapterType = DiskAdapterType.Ide; } else { string stringAdapterType; if (genericParameters.ExtendedParameters.TryGetValue(Disk.ExtendedParameterKeyAdapterType, out stringAdapterType)) { AdapterType = (DiskAdapterType)Enum.Parse(typeof(DiskAdapterType), stringAdapterType); // Don't refining sub-type of SCSI actually select IDE if (AdapterType == DiskAdapterType.Ide) { AdapterType = DiskAdapterType.LsiLogicScsi; } } else { AdapterType = DiskAdapterType.LsiLogicScsi; } } }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { switch (variant) { case "fixed": return (Disk.InitializeFixed(locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity)); case "dynamic": return (Disk.InitializeDynamic( locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity)); default: throw new ArgumentException( string.Format(CultureInfo.InvariantCulture, "Unknown VDI disk variant '{0}'", variant), nameof(variant)); } }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { return Disk.Initialize(locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity, diskParameters.Geometry); }
protected override void DoRun() { using (VirtualDisk inDisk = VirtualDisk.OpenDisk(_inFile.Value, FileAccess.Read, UserName, Password)) { VirtualDiskParameters diskParams = inDisk.Parameters; diskParams.AdapterType = AdapterType; VirtualDiskTypeInfo diskTypeInfo = VirtualDisk.GetDiskType(OutputDiskType, OutputDiskVariant); if (diskTypeInfo.DeterministicGeometry) { diskParams.Geometry = diskTypeInfo.CalcGeometry(diskParams.Capacity); } if (_translation.IsPresent && _translation.EnumValue != GeometryTranslation.None) { diskParams.BiosGeometry = diskParams.Geometry.TranslateToBios(diskParams.Capacity, _translation.EnumValue); } else if (!inDisk.DiskTypeInfo.PreservesBiosGeometry) { // In case the BIOS geometry was just a default, it's better to override based on the physical geometry // of the new disk. diskParams.BiosGeometry = Geometry.MakeBiosSafe(diskParams.Geometry, diskParams.Capacity); } using (VirtualDisk outDisk = VirtualDisk.CreateDisk(OutputDiskType, OutputDiskVariant, _outFile.Value, diskParams, UserName, Password)) { if (outDisk.Capacity < inDisk.Capacity) { Console.WriteLine("ERROR: The output disk is smaller than the input disk, conversion aborted"); } SparseStream contentStream = inDisk.Content; if (_translation.IsPresent && _translation.EnumValue != GeometryTranslation.None) { SnapshotStream ssStream = new SnapshotStream(contentStream, Ownership.None); ssStream.Snapshot(); UpdateBiosGeometry(ssStream, inDisk.BiosGeometry, diskParams.BiosGeometry); contentStream = ssStream; } StreamPump pump = new StreamPump() { InputStream = contentStream, OutputStream = outDisk.Content, SparseCopy = !_wipe.IsPresent }; if (!Quiet) { long totalBytes = contentStream.Length; if (!_wipe.IsPresent) { totalBytes = 0; foreach (var se in contentStream.Extents) { totalBytes += se.Length; } } DateTime now = DateTime.Now; pump.ProgressEvent += (o, e) => { ShowProgress("Progress", totalBytes, now, o, e); }; } pump.Run(); } } }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { throw new NotSupportedException(); }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { return(Disk.Initialize(locator.Open(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None), Ownership.Dispose, diskParameters.Capacity, diskParameters.Geometry)); }
public override VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters) { DiskParameters vmdkParams = new DiskParameters(diskParameters); vmdkParams.CreateType = VariantToCreateType(variant); return Disk.Initialize(locator, path, vmdkParams); }
public abstract VirtualDisk CreateDisk(FileLocator locator, string variant, string path, VirtualDiskParameters diskParameters);