Ejemplo n.º 1
0
        public static SpacesApiError GetPhysicalDisks(ref List <PhysicalDisk> disks)
        {
            SpacesApiError spacesApiError = SpacesApiError.Success;

            try
            {
                ManagementObjectCollection managementObjectCollection = null;
                spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * From MSFT_PhysicalDisk", ref managementObjectCollection);
                if (spacesApiError != SpacesApiError.Success)
                {
                    return(spacesApiError);
                }
                foreach (ManagementBaseObject managementBaseObject in managementObjectCollection)
                {
                    ManagementObject m            = (ManagementObject)managementBaseObject;
                    PhysicalDisk     physicalDisk = new PhysicalDisk();
                    physicalDisk.FromManagementObject(m);
                    disks.Add(physicalDisk);
                }
            }
            catch (Exception ex)
            {
                spacesApiError = SpacesApiError.Failed;
                if (SpacesApi.DebugOn)
                {
                    SpacesApi.Debug("Failed to get physical disks: {0}", new object[]
                    {
                        ex
                    });
                }
            }
            return(spacesApiError);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public static SpacesApiError GetPhysicalDisksForVirtualDisk(string vdid, ref List <PhysicalDisk> 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["VirtualDisk"] != null)
                    {
                        Match match = regex.Match((string)managementObject["VirtualDisk"]);
                        if (match.Success && match.Groups.Count > 2)
                        {
                            text = match.Groups[2].Value;
                            if (text != vdid)
                            {
                                continue;
                            }
                        }
                    }
                    if (text != null && managementObject["PhysicalDisk"] != null)
                    {
                        Match match2 = regex2.Match((string)managementObject["PhysicalDisk"]);
                        if (match2.Success && match2.Groups.Count > 2)
                        {
                            text2 = match2.Groups[2].Value;
                        }
                    }
                    if (text2 != null)
                    {
                        ManagementObjectCollection managementObjectCollection2 = null;
                        spacesApiError = SpacesApi.GetStorageObjectsByQuery("Select * From MSFT_PhysicalDisk where ObjectId = '" + text2 + "'", ref managementObjectCollection2);
                        if (spacesApiError != SpacesApiError.Success)
                        {
                            return(spacesApiError);
                        }
                        foreach (ManagementBaseObject managementBaseObject2 in managementObjectCollection2)
                        {
                            ManagementObject m            = (ManagementObject)managementBaseObject2;
                            PhysicalDisk     physicalDisk = new PhysicalDisk();
                            physicalDisk.FromManagementObject(m);
                            if (disks == null)
                            {
                                disks = new List <PhysicalDisk>();
                            }
                            disks.Add(physicalDisk);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                spacesApiError = SpacesApiError.Failed;
                if (SpacesApi.DebugOn)
                {
                    SpacesApi.Debug("Failed to get physical disks for virtual disk {1}: {0}", new object[]
                    {
                        ex,
                        vdid
                    });
                }
            }
            return(spacesApiError);
        }