public static SpacesApiError GetStoragePools(ref List <StoragePool> pools) { SpacesApiError spacesApiError = SpacesApiError.Success; try { ManagementObjectCollection managementObjectCollection = null; spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * From MSFT_StoragePool", ref managementObjectCollection); if (spacesApiError != SpacesApiError.Success) { return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject in managementObjectCollection) { ManagementObject m = (ManagementObject)managementBaseObject; StoragePool storagePool = new StoragePool(); storagePool.FromManagementObject(m); pools.Add(storagePool); } } catch (Exception ex) { spacesApiError = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to get storage pools: {0}", new object[] { ex }); } } return(spacesApiError); }
public override StorApiStatus UpdateDrives() { StorApiStatus result = StorApiStatusEnum.STOR_NO_ERROR; if (this.drives != null) { this.drives.Clear(); } List <PhysicalDisk> list = new List <PhysicalDisk>(); SpacesApiError physicalDisks = SpacesApi.SpacesApi.GetPhysicalDisks(ref list); if (physicalDisks != SpacesApiError.Success) { Logger.Error("GetPhysicalDiskDisks returned error: {0}", new object[] { physicalDisks }); return(SpacesUtil.ToStorApiStatus(physicalDisks)); } foreach (PhysicalDisk pd in list) { SpacesDrive item = this.MakeDrive(pd); this.drives.Add(item); } return(result); }
public static SpacesApiError GetVirtualDisks(ref List <VirtualDisk> disks) { SpacesApiError spacesApiError = SpacesApiError.Success; try { ManagementObjectCollection managementObjectCollection = null; spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * From MSFT_VirtualDisk", ref managementObjectCollection); if (spacesApiError != SpacesApiError.Success) { return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject in managementObjectCollection) { ManagementObject m = (ManagementObject)managementBaseObject; VirtualDisk virtualDisk = new VirtualDisk(); virtualDisk.FromManagementObject(m); disks.Add(virtualDisk); } } catch (Exception ex) { spacesApiError = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to get virtual disks: {0}", new object[] { ex }); } } return(spacesApiError); }
public static SpacesApiError GetPhysicalDiskPool(string pdid, ref StoragePool pool) { SpacesApiError spacesApiError = SpacesApiError.Success; List <StoragePool> list = null; pool = null; spacesApiError = SpacesApi.GetPhysicalDiskPools(pdid, ref list); if (spacesApiError == SpacesApiError.Success) { if (list.Count == 1) { pool = list[0]; } else { foreach (StoragePool storagePool in list) { if (!storagePool.IsPrimordial) { pool = storagePool; break; } } } } return(spacesApiError); }
protected static SpacesApiError ConnectToStorageScope() { SpacesApiError result = SpacesApiError.Success; try { SpacesApi.scope = new ManagementScope(SpacesApi.StorageNamespace); SpacesApi.scope.Connect(); } catch (Exception ex) { result = SpacesApiError.Failed; SpacesApi.scope = null; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to connect to {0}: {1}", new object[] { SpacesApi.StorageNamespace, ex.ToString() }); } throw ex; } return(result); }
public virtual StorApiStatus GetDrivePool(Drive drive, ref SpacesPool pool) { StorApiStatus storApiStatus = StorApiStatusEnum.STOR_NO_ERROR; SpacesApiError spacesApiError = SpacesApiError.Success; if (drive == null) { return(StorApiStatusEnum.STOR_INVALID_PARAM); } StoragePool storagePool = null; spacesApiError = SpacesApi.SpacesApi.GetPhysicalDiskPool(drive.Id, ref storagePool); if (spacesApiError == SpacesApiError.Success && storagePool != null) { foreach (SpacesPool spacesPool in this.pools) { if (string.Equals(spacesPool.Id, storagePool.ObjectId, StringComparison.OrdinalIgnoreCase)) { pool = spacesPool; break; } } } return(SpacesUtil.ToStorApiStatus(spacesApiError)); }
public override StorApiStatus UpdateVolumes() { StorApiStatus result = StorApiStatusEnum.STOR_NO_ERROR; if (this.volumes != null) { this.volumes.Clear(); } List <VirtualDisk> list = new List <VirtualDisk>(); SpacesApiError virtualDisks = SpacesApi.SpacesApi.GetVirtualDisks(ref list); if (virtualDisks != SpacesApiError.Success) { Logger.Error("GetVirtualDisks returned error: {0}", new object[] { virtualDisks }); return(SpacesUtil.ToStorApiStatus(virtualDisks)); } foreach (VirtualDisk d in list) { this.volumes.Add(this.MakeVolume(d)); } return(result); }
protected static SpacesApiError GetWin32ObjectsByQuery(string query, ref ManagementObjectCollection collection) { SpacesApiError result = SpacesApiError.Success; ObjectQuery query2 = new ObjectQuery(query); ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(query2); collection = managementObjectSearcher.Get(); return(result); }
public static SpacesApiError GetStorageEventWatcher(string query, ref ManagementEventWatcher watcher) { SpacesApiError result = SpacesApiError.Success; if (SpacesApi.GetStorageScope() == null) { result = SpacesApiError.Failed; } else { watcher = new ManagementEventWatcher(query); } return(result); }
public static SpacesApiError ConvertError(object status) { SpacesApiError result = SpacesApiError.Unknown; try { result = (SpacesApiError)Enum.ToObject(typeof(SpacesApiError), status); } catch (Exception) { result = SpacesApiError.Unknown; } return(result); }
public static StorApiStatus Initialize() { SpacesApiError spacesApiError = SpacesApiError.Success; if (!SpacesUtil.apiInitialized) { spacesApiError = SpacesApi.SpacesApi.Initialize(); if (spacesApiError == SpacesApiError.Success) { SpacesUtil.apiInitialized = true; } } return(SpacesUtil.ToStorApiStatus(spacesApiError)); }
public StorApiStatus GetSpacesDrive(string serial, ref SpacesDrive drive) { StorApiStatus result = StorApiStatusEnum.STOR_NO_ERROR; PhysicalDisk physicalDisk = null; SpacesApiError physicalDisk2 = SpacesApi.SpacesApi.GetPhysicalDisk(serial, ref physicalDisk); if (physicalDisk2 != SpacesApiError.Success) { return(SpacesUtil.ToStorApiStatus(physicalDisk2)); } if (physicalDisk != null) { drive = this.MakeDrive(physicalDisk); } return(result); }
public static SpacesApiError GetStorageObjectsByQuery(string query, ref ManagementObjectCollection collection) { SpacesApiError result = SpacesApiError.Success; ManagementScope storageScope = SpacesApi.GetStorageScope(); if (storageScope == null) { result = SpacesApiError.Failed; } else { ObjectQuery query2 = new ObjectQuery(query); ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(storageScope, query2); collection = managementObjectSearcher.Get(); } return(result); }
public static StorApiStatus ToStorApiStatus(SpacesApiError apierr) { StorApiStatus storApiStatus = new StorApiStatus(StorApiStatusEnum.STOR_NO_ERROR); storApiStatus.internalIntData = (int)apierr; switch (apierr) { case SpacesApiError.Success: storApiStatus.status = StorApiStatusEnum.STOR_NO_ERROR; return(storApiStatus); case SpacesApiError.NotSupported: storApiStatus.status = StorApiStatusEnum.STOR_NOT_SUPPORTED; return(storApiStatus); case SpacesApiError.Unknown: storApiStatus.status = StorApiStatusEnum.STOR_UNKNOWN_ERROR; return(storApiStatus); case SpacesApiError.Timeout: storApiStatus.status = StorApiStatusEnum.STOR_TIME_OUT; return(storApiStatus); case SpacesApiError.Failed: break; case SpacesApiError.InvalidParameter: storApiStatus.status = StorApiStatusEnum.STOR_INVALID_PARAM; return(storApiStatus); default: if (apierr == SpacesApiError.NotEnoughResources) { storApiStatus.status = StorApiStatusEnum.STOR_OUT_OF_MEMORY; return(storApiStatus); } break; } storApiStatus.status = StorApiStatusEnum.STOR_API_ERROR; return(storApiStatus); }
public virtual StorApiStatus UpdatePools() { StorApiStatus result = StorApiStatusEnum.STOR_NO_ERROR; if (this.pools != null) { this.pools.Clear(); } List <StoragePool> list = new List <StoragePool>(); SpacesApiError storagePools = SpacesApi.SpacesApi.GetStoragePools(ref list); if (storagePools != SpacesApiError.Success) { return(SpacesUtil.ToStorApiStatus(storagePools)); } foreach (StoragePool d in list) { this.pools.Add(this.MakePool(d)); } return(result); }
public static SpacesApiError SetPoolAttributes(string PoolId, StoragePoolAttributes attrs) { SpacesApiError result = SpacesApiError.Success; try { ManagementObject managementObject = new ManagementObject(SpacesApi.GetStorageScope(), new ManagementPath("MSFT_StoragePool.ObjectId='" + PoolId + "'"), null); ManagementBaseObject methodParameters = managementObject.GetMethodParameters("SetAttributes"); if (attrs.IsPowerProtected.IsPropertySet) { methodParameters["IsPowerProtected"] = attrs.IsPowerProtected; } if (attrs.ClearOnDeallocate.IsPropertySet) { methodParameters["ClearOnDeallocate"] = attrs.ClearOnDeallocate; } if (attrs.RetireMissingPhysicalDisks.IsPropertySet) { methodParameters["RetireMissingPhysicalDisks"] = attrs.RetireMissingPhysicalDisks; } if (attrs.ThinProvisioningAlertThresholds.IsPropertySet) { methodParameters["ThinProvisioningAlertThresholds"] = attrs.ThinProvisioningAlertThresholds; } ManagementBaseObject managementBaseObject = managementObject.InvokeMethod("SetAttributes", methodParameters, null); result = SpacesApi.ConvertError(managementBaseObject["returnValue"]); } catch (Exception ex) { result = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to set pool attributes: {0}", new object[] { ex }); } } return(result); }
public static SpacesApiError GetPhysicalDisk(string serial, ref PhysicalDisk disk) { SpacesApiError spacesApiError = SpacesApiError.Success; try { ManagementObjectCollection managementObjectCollection = null; disk = null; string query = string.Format("Select * From MSFT_PhysicalDisk Where SerialNumber like '%{0}'", serial); spacesApiError = SpacesApi.GetStorageObjectsByQuery(query, ref managementObjectCollection); if (spacesApiError != SpacesApiError.Success) { return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject in managementObjectCollection) { ManagementObject m = (ManagementObject)managementBaseObject; string b = SpacesApiUtil.GetManagementObjectValue <string>(m, "SerialNumber").Trim(); if (serial == b) { disk = new PhysicalDisk(); disk.FromManagementObject(m); break; } } } catch (Exception ex) { spacesApiError = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to get physical disk: {0}", new object[] { ex }); } } return(spacesApiError); }
public virtual StorApiStatus GetVolumeDrives(Volume volume, ref List <Drive> voldrives) { StorApiStatus storApiStatus = StorApiStatusEnum.STOR_NO_ERROR; SpacesApiError spacesApiError = SpacesApiError.Success; if (volume == null) { return(StorApiStatusEnum.STOR_INVALID_PARAM); } List <PhysicalDisk> list = new List <PhysicalDisk>(); spacesApiError = SpacesApi.SpacesApi.GetPhysicalDisksForVirtualDisk(volume.Id, ref list); if (spacesApiError == SpacesApiError.Success) { foreach (PhysicalDisk pd in list) { SpacesDrive item = this.MakeDrive(pd); voldrives.Add(item); } } return(SpacesUtil.ToStorApiStatus(spacesApiError)); }
public virtual StorApiStatus IsDriveConfiguredForSpaces(Drive drive, ref bool configured) { StorApiStatus storApiStatus = StorApiStatusEnum.STOR_NO_ERROR; if (drive == null) { return(StorApiStatusEnum.STOR_INVALID_PARAM); } StoragePool storagePool = null; SpacesApiError physicalDiskPool = SpacesApi.SpacesApi.GetPhysicalDiskPool(drive.Id, ref storagePool); if (physicalDiskPool == SpacesApiError.Success) { if (storagePool == null) { configured = false; } else { configured = !storagePool.IsPrimordial; } } return(SpacesUtil.ToStorApiStatus(physicalDiskPool)); }
public static SpacesApiError GetPhysicalDiskPools(string pdid, ref List <StoragePool> pools) { SpacesApiError spacesApiError = SpacesApiError.Success; pools = new List <StoragePool>(); List <StoragePool> list = new List <StoragePool>(); try { spacesApiError = SpacesApi.GetStoragePools(ref list); if (spacesApiError != SpacesApiError.Success) { SpacesApi.Debug("GetPhysicalDiskPools failed to get pools", new object[0]); return(spacesApiError); } if (list.Count == 0 || (list.Count == 1 && list[0].IsPrimordial)) { SpacesApi.Debug("GetPhysicalDiskPools only primordial pool existss", new object[0]); return(spacesApiError); } Regex regex = new Regex("(.+)MSFT_StoragePool.ObjectId=\"(.+)\"$"); Regex regex2 = new Regex("(.+)MSFT_PhysicalDisk.ObjectId=\"(.+)\"$"); ManagementObjectCollection managementObjectCollection = null; spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * from MSFT_StoragePoolToPhysicalDisk", ref managementObjectCollection); if (spacesApiError != SpacesApiError.Success) { SpacesApi.Debug("GetPhysicalDiskPools failed to get MSFT_StoragePoolToPhysicalDisk", new object[0]); return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject in managementObjectCollection) { ManagementObject managementObject = (ManagementObject)managementBaseObject; string text = null; string text2 = null; if (managementObject["PhysicalDisk"] != null) { Match match = regex2.Match((string)managementObject["PhysicalDisk"]); if (match.Success && match.Groups.Count > 2) { text2 = match.Groups[2].Value; text2 = SpacesApi.UnescapeString(text2); if (!string.Equals(text2, pdid, StringComparison.OrdinalIgnoreCase)) { continue; } } } if (text2 != null && managementObject["StoragePool"] != null) { Match match2 = regex.Match((string)managementObject["StoragePool"]); if (match2.Success && match2.Groups.Count > 2) { text = match2.Groups[2].Value; text = SpacesApi.UnescapeString(text); } } if (text != null) { foreach (StoragePool storagePool in list) { if (string.Equals(text, storagePool.ObjectId, StringComparison.OrdinalIgnoreCase)) { pools.Add(storagePool); break; } } } } } catch (Exception ex) { spacesApiError = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to get storage pools for physical disk {1}: {0}", new object[] { ex, pdid }); } } return(spacesApiError); }
public static SpacesApiError GetVirtualDisksForPhysicalDisk(string pdid, ref List <VirtualDisk> disks) { SpacesApiError spacesApiError = SpacesApiError.Success; try { Regex regex = new Regex("(.+)MSFT_VirtualDisk.ObjectId=\"([{}0-9a-zA-Z-]+)\""); Regex regex2 = new Regex("(.+)MSFT_PhysicalDisk.ObjectId=\"([{}0-9a-zA-Z-]+)\""); ManagementObjectCollection managementObjectCollection = null; spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * from MSFT_VirtualDiskToPhysicalDisk", ref managementObjectCollection); if (spacesApiError != SpacesApiError.Success) { return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject in managementObjectCollection) { ManagementObject managementObject = (ManagementObject)managementBaseObject; string text = null; string text2 = null; if (managementObject["PhysicalDisk"] != null) { Match match = regex2.Match((string)managementObject["PhysicalDisk"]); if (match.Success && match.Groups.Count > 2) { text2 = match.Groups[2].Value; if (text2 != pdid) { continue; } } } if (text2 != null && managementObject["VirtualDisk"] != null) { Match match2 = regex.Match((string)managementObject["VirtualDisk"]); if (match2.Success && match2.Groups.Count > 2) { text = match2.Groups[2].Value; } } if (text != null) { ManagementObjectCollection managementObjectCollection2 = null; spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * From MSFT_VirtualDisk where ObjectId = '" + text + "'", ref managementObjectCollection2); if (spacesApiError != SpacesApiError.Success) { return(spacesApiError); } foreach (ManagementBaseObject managementBaseObject2 in managementObjectCollection2) { ManagementObject m = (ManagementObject)managementBaseObject2; VirtualDisk virtualDisk = new VirtualDisk(); virtualDisk.FromManagementObject(m); if (disks == null) { disks = new List <VirtualDisk>(); } disks.Add(virtualDisk); } } } } catch (Exception ex) { spacesApiError = SpacesApiError.Failed; if (SpacesApi.DebugOn) { SpacesApi.Debug("Failed to get virtual disks for physical disk {1}: {0}", new object[] { ex, pdid }); } } return(spacesApiError); }