Beispiel #1
0
 void IOracleModelVisitor.VisitPartition(PartitionModel item)
 {
     if (this._filter(item))
     {
         _items.Add(item);
     }
 }
        public long Add(PartitionDTO pPartitionDTO)
        {
            long PartitionID = 0;

            using (var Context = new BaseContext())
            {
                var Partition = new PartitionModel
                {
                    Title         = pPartitionDTO.Title,
                    PartitionSize = pPartitionDTO.PartitionSize,
                };
                Context.Partitions.Add(Partition);
                Context.SaveChanges();
                PartitionID = Partition.ID;
            }
            return(PartitionID);
        }
Beispiel #3
0
        public List <DriveInformation> GetDriveInformation()
        {
            var q          = new WqlObjectQuery("SELECT * FROM Win32_DiskDrive");
            var res        = new ManagementObjectSearcher(q);
            var driveNames = (from ManagementBaseObject o in res.Get() select o["Model"]?.ToString()).ToList();
            var driveList  = new List <DriveInformation>();
            var drives     = DriveInfo.GetDrives();

            for (var index = 0; index < drives.Length; index++)
            {
                try
                {
                    var drive     = drives[index];
                    var driveInfo = new DriveInformation();
                    if (!drive.IsReady)
                    {
                        continue;
                    }
                    driveInfo.Model         = driveNames.ElementAtOrDefault(index) != null ? driveNames[index] : "Unknown Model";
                    driveInfo.Name          = drive.Name;
                    driveInfo.FreeSpace     = drive.TotalFreeSpace;
                    driveInfo.TotalSize     = drive.TotalSize;
                    driveInfo.DriveType     = drive.DriveType.ToString();
                    driveInfo.DriveFormat   = drive.DriveFormat;
                    driveInfo.VolumeLabel   = drive.VolumeLabel;
                    driveInfo.RootDirectory = drive.RootDirectory.ToString();
                    driveInfo.IsReady       = drive.IsReady;
                    //just set it for now
                    driveInfo.SmartData  = new List <SmartModel>();
                    driveInfo.Partitions = new List <PartitionModel>();
                    driveList.Add(driveInfo);
                    try
                    {
                        var mosDisks =
                            new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" +
                                                         driveInfo.Model + "'").Get().GetEnumerator();
                        if (!mosDisks.MoveNext())
                        {
                            continue;
                        }
                        driveInfo.MediaType = mosDisks.Current.GetPropertyValue("MediaType")?.ToString() ?? "Unknown";
                        driveInfo.Serial    = mosDisks.Current.GetPropertyValue("SerialNumber")?.ToString()?.Trim() ??
                                              "Unknown";
                        driveInfo.Interface = mosDisks.Current.GetPropertyValue("InterfaceType")?.ToString() ??
                                              "Unknown";
                        driveInfo.TotalPartitions = mosDisks.Current.GetPropertyValue("Partitions")?.ToString() ??
                                                    "Unknown";
                        driveInfo.Signature = mosDisks.Current.GetPropertyValue("Signature")?.ToString() ?? "Unknown";
                        driveInfo.Firmware  = mosDisks.Current.GetPropertyValue("FirmwareRevision")?.ToString() ??
                                              "Unknown";
                        driveInfo.Cylinders = mosDisks.Current.GetPropertyValue("TotalCylinders")?.ToString() ??
                                              "Unknown";
                        driveInfo.Sectors        = mosDisks.Current.GetPropertyValue("TotalSectors")?.ToString() ?? "Unknown";
                        driveInfo.Heads          = mosDisks.Current.GetPropertyValue("TotalHeads")?.ToString() ?? "Unknown";
                        driveInfo.Tracks         = mosDisks.Current.GetPropertyValue("TotalTracks")?.ToString() ?? "Unknown";
                        driveInfo.BytesPerSecond = mosDisks.Current.GetPropertyValue("BytesPerSector")?.ToString() ??
                                                   "Unknown";
                        driveInfo.SectorsPerTrack = mosDisks.Current.GetPropertyValue("SectorsPerTrack")?.ToString() ??
                                                    "Unknown";
                        driveInfo.TracksPerCylinder =
                            mosDisks.Current.GetPropertyValue("TracksPerCylinder")?.ToString() ?? "Unknown";
                    }
                    catch (Exception ex)
                    {
                        // Console.WriteLine(ex.Message);
                        //Console.WriteLine(ex.StackTrace);
                    }

                    try
                    {
                        var mosPartition =
                            new ManagementObjectSearcher("SELECT * FROM Win32_DiskPartition WHERE DiskIndex = '" +
                                                         index + "'").Get().GetEnumerator();
                        while (mosPartition.MoveNext())
                        {
                            var partion = new PartitionModel
                            {
                                Name           = mosPartition.Current.GetPropertyValue("Name")?.ToString() ?? "Unknown",
                                Size           = mosPartition.Current.GetPropertyValue("Size")?.ToString() ?? "Unknown",
                                BlockSize      = mosPartition.Current.GetPropertyValue("BlockSize")?.ToString() ?? "Unknown",
                                StartingOffset =
                                    mosPartition.Current.GetPropertyValue("StartingOffset")?.ToString() ?? "Unknown",
                                Index         = mosPartition.Current.GetPropertyValue("Index")?.ToString() ?? "Unknown",
                                DiskIndex     = mosPartition.Current.GetPropertyValue("DiskIndex")?.ToString() ?? "Unknown",
                                BootPartition =
                                    mosPartition.Current.GetPropertyValue("BootPartition")?.ToString() ?? "Unknown",
                                PrimaryPartition =
                                    mosPartition.Current.GetPropertyValue("PrimaryPartition")?.ToString() ?? "Unknown",
                                Bootable = mosPartition.Current.GetPropertyValue("Bootable")?.ToString() ?? "Unknown"
                            };
                            driveInfo.Partitions.Add(partion);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Console.WriteLine(ex.Message);
                        //Console.WriteLine(ex.StackTrace);
                    }
                }
                catch (Exception ex)
                {
                    // Console.WriteLine(ex.Message);
                    // Console.WriteLine(ex.StackTrace);
                }
            }

            using (
                var searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData")
                )
                using (
                    var thresSearcher = new ManagementObjectSearcher("root\\WMI",
                                                                     "SELECT * FROM MSStorageDriver_FailurePredictThresholds"))
                    using (
                        var failureSearch = new ManagementObjectSearcher("root\\WMI",
                                                                         "SELECT * FROM MSStorageDriver_FailurePredictStatus"))
                    {
                        try
                        {
                            var searcherEnumerator      = searcher.Get().GetEnumerator();
                            var thresSearcherEnumerator = thresSearcher.Get().GetEnumerator();
                            var failureSearchEnumerator = failureSearch.Get().GetEnumerator();

                            var index = 0;
                            while (searcherEnumerator.MoveNext() && thresSearcherEnumerator.MoveNext())
                            {
                                var arrVendorSpecific = (byte[])searcherEnumerator.Current.GetPropertyValue("VendorSpecific");
                                var arrThreshold      = (byte[])thresSearcherEnumerator.Current.GetPropertyValue("VendorSpecific");

                                /* Create SMART data from 'vendor specific' array */
                                var d         = new SmartData(arrVendorSpecific, arrThreshold);
                                var smartRows = (from b in d.Attributes
                                                 where !Regex.IsMatch(b.AttributeType.ToString(), @"^\d+$")
                                                 let rawData =
                                                     BitConverter.ToString(b.VendorData.Reverse().ToArray()).Replace("-", string.Empty)
                                                     select
                                                     new SmartModel(b.AttributeType.ToString(),
                                                                    b.Value.ToString(CultureInfo.InvariantCulture),
                                                                    b.Threshold.ToString(CultureInfo.InvariantCulture), rawData,
                                                                    long.Parse(rawData, NumberStyles.HexNumber).ToString(CultureInfo.InvariantCulture)))
                                                .ToList();
                                driveList.ElementAt(index).SmartData = smartRows;
                                if (failureSearchEnumerator.MoveNext())
                                {
                                    driveList.ElementAt(index).DriveHealth =
                                        (bool)failureSearchEnumerator.Current.GetPropertyValue("PredictFailure")
                                    ? "WARNING"
                                    : "OK";
                                }
                                index++;
                            }
                        }
                        catch (Exception ex)
                        {
                            //  Console.WriteLine(ex.Message);
                            //  Console.WriteLine(ex.StackTrace);
                        }
                    }
            return(driveList);
        }
        public override List <PartitionsDto_11> Resolve(DbContextOracle context, Action <PartitionsDto_11> action)
        {
            List <PartitionsDto_11> List = new List <PartitionsDto_11>();
            var db = context.Database;

            this.OracleContext = context;

            if (action == null)
            {
                action =
                    t =>
                {
                    if (!db.Partitions.Contains(t.PartitionName))
                    {
                        var partition = new PartitionModel()
                        {
                            Name              = t.PartitionName,
                            Composite         = t.Composite.ToBoolean(),
                            HighValue         = t.HighValue,
                            HighValueLength   = t.HighValueLength,
                            PartitionPosition = t.PartitionPosition,
                            MaxSize           = t.MaxSize,
                            Compression       = t.Compression,
                            CompressFor       = t.CompressFor,
                            NumRows           = t.NumRows,
                            Blocks            = t.Blocks,
                            EmptyBlocks       = t.EmptyBlocks,
                            //AvgSpace = t.AvgSpace,
                            ChainCnt = t.ChainCnt,
                            //AvgRowLen = t.AvgRowLen,
                            //SampleSize = t.SampleSize,
                            //LastAnalyzed = t.LastAnalyzed,
                            CellFlashCache       = t.CellFlashCache,
                            GlobalStats          = t.GlobalStats.ToBoolean(),
                            UserStats            = t.UserStats.ToBoolean(),
                            IsNested             = t.IsNested.ToBoolean(),
                            ParentTablePartition = t.ParentTablePartition,
                            Interval             = t.Interval.ToBoolean(),
                            SegmentCreated       = t.SegmentCreated.ToBoolean(),
                        };

                        partition.PhysicalAttributes.Logging       = t.Logging;
                        partition.PhysicalAttributes.PctFree       = t.PctFree;
                        partition.PhysicalAttributes.PctUsed       = t.PctUsed;
                        partition.PhysicalAttributes.IniTrans      = t.IniTrans;
                        partition.PhysicalAttributes.MaxTrans      = t.MaxTrans;
                        partition.PhysicalAttributes.InitialExtent = t.InitialExtent;
                        partition.PhysicalAttributes.NextExtent    = t.NextExtent;
                        partition.PhysicalAttributes.MinExtent     = t.MinExtent;
                        partition.PhysicalAttributes.MaxExtent     = t.MaxExtent;

                        partition.PhysicalAttributes.BufferPool      = t.BufferPool;
                        partition.PhysicalAttributes.FlashCache      = t.FlashCache;
                        partition.PhysicalAttributes.Tablespace.Name = t.TablespaceName;
                        partition.PhysicalAttributes.PctIncrease     = t.PctIncrease;
                        partition.PhysicalAttributes.Freelists       = t.Freelists;
                        partition.PhysicalAttributes.FreelistGroups  = t.FreelistGroups;

                        db.Partitions.Add(partition);
                    }

                    TableModel ta;

                    string key = t.TableOwner + "." + t.TableName;
                    if (db.Tables.TryGet(key, out ta))
                    {
                        var partionRef = new PartitionRefModel()
                        {
                            PartitionName = t.PartitionName
                        };
                        ta.Partitions.Add(partionRef);
                    }
                }
            }
            ;

            PartitionsQueryDescriptor_11 Partitions = new PartitionsQueryDescriptor_11(context.Manager.ConnectionString);

            sql = string.Format(sql, TableQueryWhereCondition("l", "TABLE_OWNER"));

            using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql, QueryBase.DbParams.ToArray()))
            {
                List = Partitions.ReadAll(reader, action).ToList();
            }

            return(List);
        }
    }
Beispiel #5
0
 public void VisitPartition(PartitionModel item)
 {
     if (InFile(item))
     {
     }
 }