/// <summary>
        /// The create kun lun server.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <returns>
        /// The <see cref="MPObject"/>.
        /// </returns>
        private MPObject CreateKunLunServer(KunLunServer model)
        {
            var propertys = this.KunLunClass.PropertyCollection;             // 获取到class的属性
            var obj       = new MPObject(MGroup.Instance, this.KunLunClass); // 实例化一个class

            obj[this.HuaweiServerKey].Value        = model.DN;
            obj[propertys["Status"]].Value         = model.Status;
            obj[propertys["Vendor"]].Value         = "HUAWEI";
            obj[propertys["Manufacturer"]].Value   = model.Manufacturer;
            obj[propertys["UUID"]].Value           = model.UUID;
            obj[propertys["IPAddress"]].Value      = model.IpAddress;
            obj[propertys["iBMCVersion"]].Value    = model.Version;
            obj[propertys["CPLDVersion"]].Value    = string.Empty;
            obj[propertys["UbootVersion"]].Value   = string.Empty;
            obj[propertys["ProductSn"]].Value      = model.ProductSN;
            obj[propertys["MemoryCapacity"]].Value = model.MemoryCapacity;
            obj[propertys["CPUNums"]].Value        = model.CPUNums;
            obj[propertys["CPUCores"]].Value       = model.CPUCores;
            obj[propertys["ServerName"]].Value     = model.ServerName;
            obj[propertys["BMCMacAddr"]].Value     = model.BmcMacAddr;

            obj[propertys["eSight"]].Value   = model.ESight;
            obj[this.DisplayNameField].Value = model.Name;
            return(obj);
        }
 /// <summary>
 /// Synchronizes the server.
 /// </summary>
 /// <param name="model">The model.</param>
 public void SyncServer(KunLunServer model)
 {
     // 存在则更新
     if (ExsitsKunLunServer(model.DeviceId))
     {
         this.UpdateKunLun(model, true);
     }
     else
     {
         this.InsertDetials(model);
     }
 }
Beispiel #3
0
 /// <summary>
 /// 更新昆仑
 /// </summary>
 /// <param name="model">The model.</param>
 public void UpdateKunLunServer(HWDeviceDetail model)
 {
     try
     {
         var server = new KunLunServer();
         server.MakeDetail(model, this.ESightIp);
         KunLunConnector.Instance.UpdateKunLun(server);
     }
     catch (Exception ex)
     {
         this.OnNotifyError($"UpdateKunLunServer Error.eSight:{this.ESightIp} Dn:{model.DN}. ", ex);
     }
 }
 /// <summary>
 /// 更新昆仑
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="alarmSn">The alarm sn.</param>
 private void UpdateKunLunServer(HWDeviceDetail model, int alarmSn)
 {
     try
     {
         logger.NotifyProcess.Info($"Start Update KunLunServer:{model.DN}.[alarmSn:{alarmSn}]");
         var server = new KunLunServer();
         server.MakeDetail(model, this.ESightIp);
         KunLunConnector.Instance.UpdateKunLun(server, false);
     }
     catch (Exception ex)
     {
         logger.NotifyProcess.Error(ex, $"UpdateKunLunServer Error. Dn:{model.DN}.[alarmSn:{alarmSn}] ");
     }
 }
Beispiel #5
0
        /// <summary>
        /// 查询昆仑列表
        /// </summary>
        /// <param name="startPage">The start page.</param>
        /// <returns>机架列表</returns>
        public ApiServerList <KunLunServer> QueryKunLunServer(int startPage)
        {
            var result           = new ApiServerList <KunLunServer>();
            var queryDeviceParam = new DeviceParam()
            {
                PageSize = 100, StartPage = startPage, ServerType = "kunlun"
            };
            var reqResult = this.GetServerList(queryDeviceParam);

            reqResult.Data.ForEach(x =>
            {
                KunLunServer kunlunServer = new KunLunServer(x);
                result.Data.Add(kunlunServer);
            });
            result.TotalSize = reqResult.TotalSize;
            result.TotalPage = reqResult.TotalPage;
            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// Queries the kunLun detial.
        /// </summary>
        /// <param name="kunLun">The kun lun.</param>
        public void QueryKunLunDetial(KunLunServer kunLun)
        {
            var task = Task.Run(() =>
            {
                try
                {
                    var device = this.Session.GetServerDetails(kunLun.DN);
                    kunLun.MakeDetail(device, this.ESightIp);
                    KunLunConnector.Instance.InsertDetials(kunLun);
                }
                catch (Exception ex)
                {
                    this.OnError($"QueryKunLunDetial Error:{kunLun.DN}", ex);
                }
            });

            this.taskList.Add(task);
        }
Beispiel #7
0
        /// <summary>
        /// Queries the kunLun detial.
        /// </summary>
        /// <param name="kunLun">The kun lun.</param>
        private void QueryKunLunDetial(KunLunServer kunLun)
        {
            var task = taskFactory.StartNew(() =>
            {
                try
                {
                    var device = this.Session.GetServerDetails(kunLun.DN);
                    kunLun.MakeDetail(device, this.ESightIp);
                    KunLunConnector.Instance.SyncServer(kunLun);
                }
                catch (Exception ex)
                {
                    OnPollingError($"QueryKunLunDetial Error:{kunLun.DN}", ex);
                }
            }, cts.Token);

            this.taskList.Add(task);
        }
        /// <summary>
        /// The update kun lun.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <exception cref="Exception">Can not find the server</exception>
        public void UpdateKunLun(KunLunServer model)
        {
            HWLogger.NOTIFICATION_PROCESS.Debug("Start UpdateKunLun");
            var oldServer = this.GetKunLunServer(model.DN);

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

            oldServer[this.DisplayNameField].Value     = model.Name;
            oldServer[propertys["Status"]].Value       = model.Status;
            oldServer[propertys["Vendor"]].Value       = "HUAWEI";
            oldServer[propertys["Manufacturer"]].Value = model.Manufacturer;
            oldServer[propertys["UUID"]].Value         = model.UUID;
            oldServer[propertys["IPAddress"]].Value    = model.IpAddress;

            // oldBlade[propertys["iBMCVersion"]].Value = model.Version;
            oldServer[propertys["CPLDVersion"]].Value    = string.Empty;
            oldServer[propertys["UbootVersion"]].Value   = string.Empty;
            oldServer[propertys["ProductSn"]].Value      = model.ProductSN;
            oldServer[propertys["MemoryCapacity"]].Value = model.MemoryCapacity;
            oldServer[propertys["CPUNums"]].Value        = model.CPUNums;
            oldServer[propertys["CPUCores"]].Value       = model.CPUCores;

            // oldBlade[propertys["ServerName"]].Value = model.ServerName;
            oldServer[propertys["BMCMacAddr"]].Value = model.BmcMacAddr;
            oldServer[propertys["eSight"]].Value     = model.ESight;
            discoveryData.Add(oldServer);

            var fanGroup = oldServer.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.ComputerKey].Value     = model.DN;
                    newFan[this.HuaweiServerKey].Value = model.DN;
                    newFan[this.PartGroupKey].Value    = fanGroup[this.PartGroupKey].Value;
                    discoveryData.Add(newFan);
                }
                else
                {
                    discoveryData.Add(fan);
                }
            });

            #region PSU

            var psuGroup = oldServer.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.ComputerKey].Value     = model.DN;
                    newpsu[this.HuaweiServerKey].Value = model.DN;
                    newpsu[this.PartGroupKey].Value    = psuGroup[this.PartGroupKey].Value;
                    discoveryData.Add(newpsu);
                }
                else
                {
                    discoveryData.Add(psu);
                }
            });

            #endregion

            #region Disk

            var diskGroup = oldServer.GetRelatedMonitoringObjects(this.PhysicalDiskGroupClass).First();
            discoveryData.Add(diskGroup);

            var relatedDiskObjects = diskGroup.GetRelatedMonitoringObjects(this.PhysicalDiskClass);
            var deleteDisk         = relatedDiskObjects.Where(
                x => model.DiskList.All(
                    y => y.UUID != x[this.PhysicalDiskClass.PropertyCollection["UUID"]].Value.ToString())).ToList();
            deleteDisk.ForEach(x => { discoveryData.Remove(x); });
            model.DiskList.ForEach(
                y =>
            {
                var disk = this.UpdateDisk(y);
                if (disk == null)
                {
                    var newDisk = this.CreateDisk(y);
                    newDisk[this.ComputerKey].Value     = model.DN;
                    newDisk[this.HuaweiServerKey].Value = model.DN;
                    newDisk[this.PartGroupKey].Value    = diskGroup[this.PartGroupKey].Value;
                    discoveryData.Add(newDisk);
                }
                else
                {
                    discoveryData.Add(disk);
                }
            });

            #endregion

            #region Raid

            var raidGroup = oldServer.GetRelatedMonitoringObjects(this.RaidGroupClass).First();
            discoveryData.Add(raidGroup);

            var relatedRaidObjects = raidGroup.GetRelatedMonitoringObjects(this.RaidClass);
            var deleteRaid         = relatedRaidObjects.Where(
                x => model.RaidList.All(
                    y => y.UUID != x[this.RaidClass.PropertyCollection["UUID"]].Value.ToString()))
                                     .ToList();
            deleteRaid.ForEach(x => { discoveryData.Remove(x); });
            model.RaidList.ForEach(
                y =>
            {
                var raid = this.UpdateRaidControl(y);
                if (raid == null)
                {
                    var newRaid = this.CreateRaidControl(y);
                    newRaid[this.ComputerKey].Value     = model.DN;
                    newRaid[this.HuaweiServerKey].Value = model.DN;
                    newRaid[this.PartGroupKey].Value    = raidGroup[this.PartGroupKey].Value;
                    discoveryData.Add(newRaid);
                }
                else
                {
                    discoveryData.Add(raid);
                }
            });

            #endregion

            discoveryData.Overwrite(this.MontioringConnector);
            HWLogger.NOTIFICATION_PROCESS.Debug("Start UpdateKunLun");
        }
        /// <summary>
        /// The insert detials.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        public void InsertDetials(KunLunServer 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 KunLunServer

            var kunLunServer = this.CreateKunLunServer(model);
            kunLunServer[this.ComputerKey].Value = model.DN;
            discoveryData.Add(kunLunServer);

            #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.HuaweiServerKey].Value = model.DN;
                fan[this.ComputerKey].Value     = model.DN;
                discoveryData.Add(fan);
            });

            #endregion

            #region PSU

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

            #endregion

            #region Raid

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

            #endregion

            #region Disk

            var diskGroup = this.CreateLogicalGroup(this.PhysicalDiskGroupClass, model.DN);
            discoveryData.Add(diskGroup);
            model.DiskList.ForEach(
                x =>
            {
                var disk = this.CreateDisk(x);
                disk[this.PartGroupKey].Value    = diskGroup[this.PartGroupKey].Value;
                disk[this.HuaweiServerKey].Value = model.DN;
                disk[this.ComputerKey].Value     = model.DN;
                discoveryData.Add(disk);
            });

            #endregion

            if (!this.ExsitsKunLunServer(model.DN))
            {
                discoveryData.Commit(this.MontioringConnector);
            }
            else
            {
                discoveryData.Overwrite(this.MontioringConnector);
            }
        }
        /// <summary>
        /// The insert detials.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        private void InsertDetials(KunLunServer model)
        {
            try
            {
                HWLogger.GetESightSdkLogger(model.ESight).Debug($"Insert KunLun:{model.DN}");
                var discoveryData = new IncrementalDiscoveryData();

                #region KunLunServer

                var kunLunServer = this.CreateKunLunServer(model);
                discoveryData.Add(kunLunServer);

                #endregion

                #region Fan

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

                    fan[this.HuaweiServerKey].Value = model.DeviceId;

                    discoveryData.Add(fan);
                });

                #endregion

                #region PSU

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

                    discoveryData.Add(powerSupply);
                });

                #endregion

                #region Raid

                var raidGroup = this.CreateLogicalGroup(this.RaidGroupClass, model.DeviceId);
                discoveryData.Add(raidGroup);
                model.RaidList.ForEach(
                    y =>
                {
                    var raid = this.CreateRaidControl(y);
                    raid[this.PartGroupKey].Value    = raidGroup[this.PartGroupKey].Value;
                    raid[this.HuaweiServerKey].Value = model.DeviceId;

                    discoveryData.Add(raid);
                });

                #endregion

                #region Disk

                var diskGroup = this.CreateLogicalGroup(this.PhysicalDiskGroupClass, model.DeviceId);
                discoveryData.Add(diskGroup);
                model.DiskList.ForEach(
                    x =>
                {
                    var disk = this.CreateDisk(x);
                    disk[this.PartGroupKey].Value    = diskGroup[this.PartGroupKey].Value;
                    disk[this.HuaweiServerKey].Value = model.DeviceId;

                    discoveryData.Add(disk);
                });

                #endregion

                discoveryData.Commit(this.MontioringConnector);
            }
            catch (Exception e)
            {
                HWLogger.GetESightSdkLogger(model.ESight).Error($"Insert KunLun Error:{model.DN}", e);
            }
        }