public bool Invoke(OculiVolumePersistedState volumeInfo) { this._Logger.Verbose("Locking down job for disk removal for job " + this._Context.JobInfoWrapper.Name); try { lock (Win32Utils.HelperOSLock) { VmdkProperties local_2 = this._FindDriveVmdkProperties(volumeInfo); if (local_2 != null) { string local_3 = volumeInfo.PNPDeviceID; if (local_3 != null) { this._RemoveSCSIDevice(local_3); } this._RemoveVirtualDisk(volumeInfo, local_2); this._Logger.Verbose("Removed Drive for " + local_3); } else { this._Logger.Warning("Could not find hard disk: " + volumeInfo.VirtualDiskFilename); } return(true); } } finally { this._Logger.Verbose("Releasing lock for disk removal for job " + this._Context.JobInfoWrapper.Name); } }
private void _RemoveVirtualDisk(OculiVolumePersistedState volumeInfo, VmdkProperties driveProperties) { VmdkProperties[] vmdkProps = new VmdkProperties[1] { driveProperties }; try { CUtils.Retry(this._RemoveVirtualDisk_Retry, this._RemoveVirtualDisk_Delay, (CUtils.Workload)(() => { this._HelperVm_RemoveVirtualDisk(vmdkProps); if (!this._CheckDriveGone(volumeInfo)) { throw new OculiServiceException(0, string.Format("Failed to detach a volume from the Helper VM ({0:d})", (object)volumeInfo.DriveName)); } })); } catch (Exception ex) { this._Logger.FormatWarningWithException(ex, "Failed to detach volume {0} from helper VM due to exception: ", (object)volumeInfo.VolumeName); throw; } }
public VmdkProperties Clone() { VmdkProperties vmdkProperties = new VmdkProperties(); vmdkProperties.FileName = this.FileName; vmdkProperties.Label = this.Label; vmdkProperties.Capacity = this.Capacity; vmdkProperties.DatastoreName = this.DatastoreName; vmdkProperties.DatastoreUrl = this.DatastoreUrl; vmdkProperties.DiskMode = this.DiskMode; vmdkProperties.Key = this.Key; vmdkProperties.UnitNumber = this.UnitNumber; vmdkProperties.ControllerKey = this.ControllerKey; vmdkProperties.BusNumber = this.BusNumber; vmdkProperties.Datastore = this.Datastore; int num = this.ThinProvisioned ? 1 : 0; vmdkProperties.ThinProvisioned = num != 0; Guid guid = this.Guid; vmdkProperties.Guid = guid; return(vmdkProperties); }