/// <summary>
        /// Queries the highdensity detial.
        /// </summary>
        /// <param name="x">The x.</param>
        public void QueryHighdensityDetial(HighdensityServer x)
        {
            var task = Task.Run(() =>
            {
                try
                {
                    var device = this.Session.GetServerDetails(x.DN);
                    x.MakeDetail(device);
                    x.ChildHighdensitys.ForEach(
                        m =>
                    {
                        var deviceDatail = this.Session.GetServerDetails(m.DN);
                        m.MakeChildBladeDetail(deviceDatail);
                    });

                    // 插入數據
                    HighdensityConnector.Instance.InsertDetials(x);
                }
                catch (Exception ex)
                {
                    this.OnError($"QueryHighdensityDetial Error:DN:{x.DN}", ex);
                }
            });

            this.taskList.Add(task);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Queries the highdensity detial.
        /// </summary>
        /// <param name="x">The x.</param>
        /// <param name="isPolling">是否轮询</param>
        private void QueryHighdensityDetial(HighdensityServer x)
        {
            var task = taskFactory.StartNew(() =>
            {
                try
                {
                    var device = this.Session.GetServerDetails(x.DN);
                    x.MakeDetail(device, this.ESightIp);
                    x.ChildHighdensitys.ForEach(
                        m =>
                    {
                        var deviceDatail = this.Session.GetServerDetails(m.DN);
                        m.MakeChildBladeDetail(deviceDatail);
                    });

                    // 插入數據
                    HighdensityConnector.Instance.SyncServer(x);
                }
                catch (Exception ex)
                {
                    OnPollingError($"QueryHighdensityDetial Error:DN:{x.DN}", ex);
                }
            }, cts.Token);

            this.taskList.Add(task);
        }
Exemplo n.º 3
0
        /// <summary>
        /// The create highdensity server.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <returns>
        /// The <see cref="MPObject"/>.
        /// </returns>
        private MPObject CreateHighdensityServer(HighdensityServer model)
        {
            var propertys = this.HighdensityClass.PropertyCollection;             // 获取到class的属性
            var obj       = new MPObject(MGroup.Instance, this.HighdensityClass); // 实例化一个class

            obj[this.ComputerKey].Value          = model.DN;
            obj[propertys["eSight"]].Value       = model.ESight;
            obj[propertys["Status"]].Value       = model.Status;
            obj[propertys["UUID"]].Value         = model.UUID;
            obj[propertys["Vendor"]].Value       = "HUAWEI";
            obj[propertys["Manufacturer"]].Value = model.Manufacturer;
            obj[propertys["IPAddress"]].Value    = model.IpAddress;
            obj[propertys["iBMCVersion"]].Value  = model.Version;
            obj[propertys["ProductSn"]].Value    = model.ProductSN;
            obj[propertys["ServerName"]].Value   = model.ServerName;

            var entityClass = MGroup.Instance.GetManagementPackClass("System.Entity");

            obj[entityClass.PropertyCollection["DisplayName"]].Value = model.ServerName;
            return(obj);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 查询高密列表
        /// </summary>
        /// <param name="startPage">The start page.</param>
        /// <returns>高密列表</returns>
        public ApiServerList <HighdensityServer> QueryHighDesentyServer(int startPage)
        {
            var result           = new ApiServerList <HighdensityServer>();
            var queryDeviceParam = new DeviceParam()
            {
                PageSize = 100, StartPage = startPage, ServerType = "highdensity"
            };
            var reqResult = this.GetServerList(queryDeviceParam);

            reqResult.Data.ForEach(x =>
            {
                var highDesentyServer = new HighdensityServer(x);
                x.ChildBlades.ForEach(m =>
                {
                    var childHighdensity = new ChildHighdensity(m, this.ESight.HostIP);
                    highDesentyServer.ChildHighdensitys.Add(childHighdensity);
                });
                result.Data.Add(highDesentyServer);
            });
            result.TotalSize = reqResult.TotalSize;
            result.TotalPage = reqResult.TotalPage;
            return(result);
        }
 /// <summary>
 /// 更新高密管理板
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="alarmSn">The alarm sn.</param>
 private void UpdateHighdensityServer(HWDeviceDetail model, int alarmSn)
 {
     try
     {
         logger.NotifyProcess.Info($"Start Update HighdensityServer:{model.DN} .[alarmSn:{alarmSn}]");
         var server = new HighdensityServer
         {
             DN           = model.DN,
             ServerName   = model.Name,
             Manufacturer = string.Empty,
             ServerModel  = model.Mode,
             IpAddress    = model.IpAddress,
             Location     = string.Empty,
             Status       = model.Status
         };
         server.MakeDetail(model, this.ESightIp);
         HighdensityConnector.Instance.UpdateMain(server, false);
     }
     catch (Exception ex)
     {
         logger.NotifyProcess.Error(ex, $"UpdateHighdensityServer Error.Dn:{model.DN} .[alarmSn:{alarmSn}] ");
     }
 }
 /// <summary>
 /// 更新高密管理板
 /// </summary>
 /// <param name="model">The model.</param>
 public void UpdateHighdensityServer(HWDeviceDetail model)
 {
     try
     {
         var server = new HighdensityServer
         {
             DN           = model.DN,
             ServerName   = model.Name,
             Manufacturer = string.Empty,
             ServerModel  = model.Mode,
             IpAddress    = model.IpAddress,
             Location     = string.Empty,
             Status       = model.Status,
             ESight       = this.ESightIp
         };
         server.MakeDetail(model);
         HighdensityConnector.Instance.UpdateMainWithOutChildBlade(server);
     }
     catch (Exception ex)
     {
         this.OnNotifyError($"UpdateHighdensityServer Error.eSight:{this.ESightIp} Dn:{model.DN}. ", ex);
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// 更新高密管理板
 /// </summary>
 /// <param name="parentDn">The parent dn.</param>
 public void UpdateHighdensityServer(string parentDn)
 {
     try
     {
         var model  = this.Session.GetServerDetails(parentDn);
         var server = new HighdensityServer
         {
             DN           = parentDn,//查询高密服务器详情返回的是第一个子刀片的dn.因此此处需要以管理板dn为准
             ServerName   = model.Name,
             Manufacturer = string.Empty,
             ServerModel  = model.Mode,
             IpAddress    = model.IpAddress,
             Location     = string.Empty,
             Status       = model.Status
         };
         server.MakeDetail(model, this.ESightIp);
         this.QueryHighdensityDetial(server);
     }
     catch (Exception ex)
     {
         this.OnNotifyError($"UpdateHighdensityServer Error.eSight:{this.ESightIp} Dn:{parentDn}. ", ex);
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Updates the main with out related.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        public void UpdateMainWithOutChildBlade(HighdensityServer model)
        {
            HWLogger.NOTIFICATION_PROCESS.Debug("Start UpdateHighdensity WithOut ChildBoard");
            var oldBlade = this.GetHighdensityServer(model.DN);

            if (oldBlade == null)
            {
                throw new Exception($"Can not find the server:{model.DN}");
            }
            var propertys     = this.HighdensityClass.PropertyCollection; // 获取到class的属性
            var discoveryData = new IncrementalDiscoveryData();

            oldBlade[propertys["eSight"]].Value       = model.ESight;
            oldBlade[propertys["Status"]].Value       = model.Status;
            oldBlade[propertys["UUID"]].Value         = model.UUID;
            oldBlade[propertys["Vendor"]].Value       = "HUAWEI";
            oldBlade[propertys["Manufacturer"]].Value = model.Manufacturer;
            oldBlade[propertys["IPAddress"]].Value    = model.IpAddress;
            oldBlade[propertys["ProductSn"]].Value    = model.ProductSN;

            // oldBlade[propertys["ServerName"]].Value = model.ServerName;
            // oldBlade[propertys["iBMCVersion"]].Value = model.Version;
            oldBlade[this.DisplayNameField].Value = model.ServerName;
            discoveryData.Add(oldBlade);

            var fanGroup = oldBlade.GetRelatedMonitoringObjects(this.FanGroupClass).First();

            discoveryData.Add(fanGroup);

            var relatedFanObjects = fanGroup.GetRelatedMonitoringObjects(this.FanClass);
            var deleteFan         = relatedFanObjects.Where(
                x => model.FanList.All(y => y.UUID != x[this.FanClass.PropertyCollection["UUID"]].Value.ToString()))
                                    .ToList();

            deleteFan.ForEach(x => { discoveryData.Remove(x); });
            model.FanList.ForEach(
                x =>
            {
                var fan = this.UpdateFan(x);
                if (fan == null)
                {
                    var newFan = this.CreateFan(x);
                    newFan[this.PartGroupKey].Value    = fanGroup[this.PartGroupKey].Value;
                    newFan[this.ComputerKey].Value     = model.DN;
                    newFan[this.HuaweiServerKey].Value = model.DN;
                    discoveryData.Add(newFan);
                }
                else
                {
                    discoveryData.Add(fan);
                }
            });

            #region PSU

            var psuGroup = oldBlade.GetRelatedMonitoringObjects(this.PowerSupplyGroupClass).First();
            discoveryData.Add(psuGroup);

            var relatedPsuObjects = psuGroup.GetRelatedMonitoringObjects(this.PowerSupplyClass);
            var deletePsu         = relatedPsuObjects.Where(
                x => model.PowerSupplyList.All(
                    y => y.UUID != x[this.PowerSupplyClass.PropertyCollection["UUID"]].Value.ToString())).ToList();
            deletePsu.ForEach(x => { discoveryData.Remove(x); });

            model.PowerSupplyList.ForEach(
                x =>
            {
                var psu = this.UpdatePowerSupply(x);
                if (psu == null)
                {
                    var newpsu = this.CreatePowerSupply(x);
                    newpsu[this.PartGroupKey].Value    = psuGroup[this.PartGroupKey].Value;
                    newpsu[this.ComputerKey].Value     = model.DN;
                    newpsu[this.HuaweiServerKey].Value = model.DN;
                    discoveryData.Add(newpsu);
                }
                else
                {
                    discoveryData.Add(psu);
                }
            });

            #endregion

            // var relatedObjects = oldBlade.GetRelatedMonitoringObjects(ChildHighdensityClass);
            // relatedObjects.ToList().ForEach(x => discoveryData.Add(x));
            discoveryData.Overwrite(this.MontioringConnector);
            HWLogger.NOTIFICATION_PROCESS.Debug("End UpdateHighdensity WithOut ChildBoard");
        }
Exemplo n.º 9
0
        /// <summary>
        /// The insert detials.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        public void InsertDetials(HighdensityServer model)
        {
            var discoveryData = new IncrementalDiscoveryData();

            var baseComputer = this.GetComputerByDn(model.DN);

            if (baseComputer == null)
            {
                var newBaseComputer = this.CreateComputer(model.DN);
                discoveryData.Add(newBaseComputer);
            }
            else
            {
                discoveryData.Add(baseComputer);
            }
            #region HighdensityServer

            var highdensityServer = this.CreateHighdensityServer(model);
            highdensityServer[this.HuaweiServerKey].Value = model.DN;

            discoveryData.Add(highdensityServer);

            #endregion

            #region Fan

            var fanGroup = this.CreateLogicalGroup(this.FanGroupClass, model.DN);
            discoveryData.Add(fanGroup);
            model.FanList.ForEach(
                x =>
            {
                var fan = this.CreateFan(x);
                fan[this.PartGroupKey].Value    = fanGroup[this.PartGroupKey].Value;
                fan[this.ComputerKey].Value     = model.DN;
                fan[this.HuaweiServerKey].Value = model.DN;
                discoveryData.Add(fan);
            });

            #endregion

            #region PSU

            var psuGroup = this.CreateLogicalGroup(this.PowerSupplyGroupClass, model.DN);
            discoveryData.Add(psuGroup);
            model.PowerSupplyList.ForEach(
                x =>
            {
                var powerSupply = this.CreatePowerSupply(x);
                powerSupply[this.PartGroupKey].Value    = psuGroup[this.PartGroupKey].Value;
                powerSupply[this.ComputerKey].Value     = model.DN;
                powerSupply[this.HuaweiServerKey].Value = model.DN;
                discoveryData.Add(powerSupply);
            });

            #endregion

            #region Child Highdensity

            var childHighdensityGroup    = this.CreateLogicalGroup(this.ChildHighdensityGroupClass, model.DN);
            var childHighdensityGroupKey = childHighdensityGroup[this.PartGroupKey].Value.ToString();
            discoveryData.Add(childHighdensityGroup);
            model.ChildHighdensitys.ForEach(
                x =>
            {
                var childHighdensity = this.CreateChildHighdensity(x);
                childHighdensity[this.PartGroupKey].Value    = childHighdensityGroupKey;
                childHighdensity[this.ComputerKey].Value     = model.DN;
                childHighdensity[this.HuaweiServerKey].Value = model.DN;
                discoveryData.Add(childHighdensity);
                var childHighdensityKey = this.ChildHighdensityClass.PropertyCollection["DN"];

                #region CPU

                var cpuGroup = this.CreateLogicalChildGroup(this.CpuGroupClass, model.DN, x.DN);

                cpuGroup[childHighdensityKey].Value = x.DN;
                cpuGroup[this.PartGroupKey].Value   = childHighdensityGroupKey;
                discoveryData.Add(cpuGroup);
                x.CPUList.ForEach(
                    y =>
                {
                    var cpu = this.CreateCpu(y);
                    cpu[this.PartChildGroupKey].Value = cpuGroup[this.PartChildGroupKey].Value;
                    cpu[childHighdensityKey].Value    = x.DN;
                    cpu[this.PartGroupKey].Value      = childHighdensityGroupKey;
                    cpu[this.ComputerKey].Value       = model.DN;
                    cpu[this.HuaweiServerKey].Value   = model.DN;
                    discoveryData.Add(cpu);
                });

                #endregion

                #region Memory

                var memoryGroup = this.CreateLogicalChildGroup(this.MemoryGroupClass, model.DN, x.DN);
                memoryGroup[childHighdensityKey].Value = x.DN;
                memoryGroup[this.PartGroupKey].Value   = childHighdensityGroupKey;
                discoveryData.Add(memoryGroup);
                x.MemoryList.ForEach(
                    y =>
                {
                    var memory = this.CreateMemory(y);
                    memory[this.PartChildGroupKey].Value =
                        memoryGroup[this.PartChildGroupKey].Value;
                    memory[childHighdensityKey].Value  = x.DN;
                    memory[this.PartGroupKey].Value    = childHighdensityGroupKey;
                    memory[this.ComputerKey].Value     = model.DN;
                    memory[this.HuaweiServerKey].Value = model.DN;
                    discoveryData.Add(memory);
                });

                #endregion

                #region Disk

                var diskGroup = this.CreateLogicalChildGroup(this.DiskGroupClass, model.DN, x.DN);
                diskGroup[this.PartGroupKey].Value   = childHighdensityGroupKey;
                diskGroup[childHighdensityKey].Value = x.DN;
                discoveryData.Add(diskGroup);
                x.DiskList.ForEach(
                    y =>
                {
                    var disk = this.CreateDisk(y);
                    disk[this.PartChildGroupKey].Value = diskGroup[this.PartChildGroupKey].Value;
                    disk[childHighdensityKey].Value    = x.DN;
                    disk[this.PartGroupKey].Value      = childHighdensityGroupKey;
                    disk[this.ComputerKey].Value       = model.DN;
                    disk[this.HuaweiServerKey].Value   = model.DN;
                    discoveryData.Add(disk);
                });

                #endregion

                #region Raid

                var raidGroup = this.CreateLogicalChildGroup(this.RaidGroupClass, model.DN, x.DN);
                raidGroup[this.PartGroupKey].Value   = childHighdensityGroupKey;
                raidGroup[childHighdensityKey].Value = x.DN;
                discoveryData.Add(raidGroup);
                x.RaidList.ForEach(
                    y =>
                {
                    var raid = this.CreateRaidControl(y);
                    raid[this.PartChildGroupKey].Value = raidGroup[this.PartChildGroupKey].Value;
                    raid[childHighdensityKey].Value    = x.DN;
                    raid[this.PartGroupKey].Value      = childHighdensityGroupKey;
                    raid[this.HuaweiServerKey].Value   = model.DN;
                    raid[this.ComputerKey].Value       = model.DN;
                    discoveryData.Add(raid);
                });

                #endregion
            });

            #endregion

            if (!this.ExsitsHighdensityServer(model.DN))
            {
                discoveryData.Commit(this.MontioringConnector);
            }
            else
            {
                discoveryData.Overwrite(this.MontioringConnector);
            }
        }