private void CreateOrCloseServerMpAlarm(bool isHaveOldAlarm, ServerCollection currentState)
 {
     if (currentState.Health != Health.OK)
     {
         if (!isHaveOldAlarm)
         {
             OnLog("Insert Event:Server ManagementPack Missing");
             var alarm = new ApplianceAlarm
             {
                 OptType       = "1",
                 AlarmName     = "Server ManagementPack Missing",
                 AlarmType     = EnumAlarmType.ServerMpMissing,
                 PossibleCause = "The Management Pack of the plug-in is uninstalled.",
                 Suggstion     = "import the Huawei.FusionDirector.Server.Library.mpb",
                 Additional    = currentState.ErrorMsg
             };
             var applianceEvent = new ApplianceEvent(alarm);
             ApplianceConnector.Instance.InsertEvent(applianceEvent);
         }
     }
     else
     {
         if (isHaveOldAlarm)
         {
             OnLog("Close Event:Server ManagementPack Missing");
             var alarm = new ApplianceAlarm
             {
                 OptType   = "2",
                 AlarmType = EnumAlarmType.ServerMpMissing,
             };
             var applianceEvent = new ApplianceEvent(alarm);
             ApplianceConnector.Instance.InsertEvent(applianceEvent);
         }
     }
 }
 private void CreateOrCloseEventServiceAlarm(bool isHaveOldAlarm, EventCollection currentState)
 {
     if (currentState.Health != Health.OK)
     {
         if (!isHaveOldAlarm)
         {
             OnLog("Insert Event:Webserver unavailable");
             var alarm = new ApplianceAlarm
             {
                 OptType       = "1",
                 AlarmName     = "Webserver unavailable ",
                 AlarmType     = EnumAlarmType.WebServerUnavailable,
                 PossibleCause = "IIS express service is stopped or uninstalled.",
                 Suggstion     = "Check the website",
                 Additional    = currentState.ErrorMsg
             };
             var applianceEvent = new ApplianceEvent(alarm);
             ApplianceConnector.Instance.InsertEvent(applianceEvent);
         }
     }
     else
     {
         if (isHaveOldAlarm)
         {
             OnLog("Close Event:Webserver unavailable");
             var alarm = new ApplianceAlarm
             {
                 OptType   = "2",
                 AlarmType = EnumAlarmType.WebServerUnavailable,
             };
             var applianceEvent = new ApplianceEvent(alarm);
             ApplianceConnector.Instance.InsertEvent(applianceEvent);
         }
     }
 }
        private void CreateOrCloseFusionDirectorAlarm(List <MonitoringAlert> existAlarmData, FusionDirectorCollection currentState)
        {
            var fdStatuses = JsonConvert.DeserializeObject <Dictionary <string, string> >(currentState.ErrorMsg);

            foreach (var fdStatus in fdStatuses)
            {
                var  fdIp           = fdStatus.Key;
                var  error          = fdStatus.Value;
                bool isHaveOldAlarm = existAlarmData.Any(x => x.CustomField1 == EnumAlarmType.FdConnectError.ToString() && x.CustomField4.Contains(fdIp));
                if (fdStatus.Value != "OK")//本次有告警,则插入或更新告警
                {
                    OnLog($"[{fdIp}] Insert Or Update Event:FusionDirector connect Error");
                    var alarm = new ApplianceAlarm
                    {
                        OptType       = "1",
                        AlarmName     = "FusionDirector Connect Error",
                        AlarmType     = EnumAlarmType.FdConnectError,
                        PossibleCause = $"{error}",
                        Suggstion     = "check whether the FusionDirector server is shut down or whether the network is abnormal.",
                        Additional    = error
                    };
                    var applianceEvent = new ApplianceEvent(alarm);
                    ApplianceConnector.Instance.InsertEvent(applianceEvent, fdIp);
                }
                else
                {
                    //本次没有告警 且有旧的告警,则关闭
                    if (isHaveOldAlarm)
                    {
                        OnLog($"[{fdIp}] Close Event:FusionDirector Connect Error");
                        var alarm = new ApplianceAlarm
                        {
                            OptType   = "2",
                            AlarmType = EnumAlarmType.FdConnectError,
                        };
                        var applianceEvent = new ApplianceEvent(alarm);
                        ApplianceConnector.Instance.InsertEvent(applianceEvent, fdIp);
                    }
                }
            }
        }