/// <summary>
        /// 根据订阅ID查询eSight
        /// </summary>
        /// <param name="subscribeId">The subscribe identifier.</param>
        /// <returns>Huawei.SCOM.ESightPlugin.Models.HWESightHost.</returns>
        public HWESightHost GetEntityBySubscribeId(string subscribeId)
        {
            IObjectReader <EnterpriseManagementObject> items =
                OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"SubscribeID='{subscribeId}'");

            return(items.Select(ConvertMonitoringObjectToESightHost()).FirstOrDefault());
        }
        /// <summary>
        /// 根据IP查找ESight实体。
        /// </summary>
        /// <param name="hostIp">The host ip.</param>
        /// <returns>The <see cref="HWESightHost" />.</returns>
        public HWESightHost GetEntityByHostIp(string hostIp)
        {
            IObjectReader <EnterpriseManagementObject> items =
                OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'");

            return(items.Select(ConvertMonitoringObjectToESightHost()).FirstOrDefault());
        }
        /// <summary>
        /// Convert OM MonitoringObject to HWESightHost Entity Function
        /// </summary>
        /// <returns></returns>
        private static Func <EnterpriseManagementObject, HWESightHost> ConvertMonitoringObjectToESightHost()
        {
            return(obj =>
            {
                var props = OM12Connection.GetManagementPackProperties(obj);
                HWESightHost appliance = new HWESightHost
                {
                    HostIP = obj[props["Host"]].Value as String,
                    HostPort = Convert.ToInt32(obj[props["Port"]].Value),
                    AliasName = obj[props["AliasName"]].Value as String,
                    SystemID = obj[props["SystemId"]].Value as String,
                    LoginAccount = obj[props["LoginAccount"]].Value as String,
                    LoginPd = obj[props["LoginPassword"]].Value as String,
                    CreateTime = ((DateTime)obj[props["CreatedOn"]].Value).ToLocalTime(),
                    LastModifyTime = ((DateTime)obj[props["LastModifiedOn"]].Value).ToLocalTime(),

                    OpenID = obj[props["OpenID"]].Value as String,
                    SubscribeID = obj[props["SubscribeID"]].Value as String,
                    SubKeepAliveStatus = Convert.ToInt32(obj[props["SubKeepAliveStatus"]].Value),
                    SubscriptionAlarmStatus = Convert.ToInt32(obj[props["SubscriptionAlarmStatus"]].Value),
                    SubscriptionNeDeviceStatus = Convert.ToInt32(obj[props["SubscriptionNeDeviceStatus"]].Value),
                    SubKeepAliveError = obj[props["SubKeepAliveError"]].Value as String,
                    SubscripeAlarmError = obj[props["SubscripeAlarmError"]].Value as String,
                    SubscripeNeDeviceError = obj[props["SubscripeNeDeviceError"]].Value as String,
                    //LatestConnectInfo = obj[props["LatestConnectInfo"]].Value as String,
                    //LatestStatus = obj[props["LatestStatus"]].Value as string,
                };

                return appliance;
            });
        }
        /// <summary>
        /// The get list.
        /// </summary>
        /// <param name="condition">
        /// The condition.
        /// </param>
        /// <returns>
        /// The <see>
        ///         <cref>IList</cref>
        ///     </see>
        ///     .
        /// </returns>
        public IList <HWESightHost> GetList(string condition = "1=1 ")
        {
            IObjectReader <EnterpriseManagementObject> monitoringObjects = OM12Connection.All <EnterpriseManagementObject>(ESightAppliance.EntityClassName);
            IEnumerable <HWESightHost> appliances = monitoringObjects.Select(ConvertMonitoringObjectToESightHost());

            return(appliances.OrderByDescending(x => x.CreateTime).ToList());
        }
        public void InsertAlert()
        {
            var eSightHost            = "192.168.0.2";
            var objects               = OM12Connection.Query <PartialMonitoringObject>(ESightAppliance.EntityClassName, $"Host='{eSightHost}'");
            PartialMonitoringObject p = (PartialMonitoringObject)objects.First();

            //OM12Connection.HuaweiESightMG.GetMonitoringAlert();
        }
Esempio n. 6
0
        public void TestMethod1()
        {
            // ISAvailable && AvailableLastModified && LastModified
            var objects = OM12Connection.All <PartialMonitoringObject>(EntityTypeConst.ESight.HuaweiServer).ToList();

            objects.ForEach(obj =>
            {
                var stateLastModified   = obj.StateLastModified.HasValue ? obj.StateLastModified.Value : obj.TimeAdded;
                TimeSpan addedTimeLong  = DateTime.UtcNow - stateLastModified.ToUniversalTime();
                TimeSpan expectTimeLong = TimeSpan.FromMinutes(5) + TimeSpan.FromSeconds(20);
                // the interval of monitor for our object is 5 minutes. So we will wait (5m + 20s).
                if (addedTimeLong <= expectTimeLong)
                {
                    Console.WriteLine($"{expectTimeLong - addedTimeLong}");
                }

                //Console.WriteLine(obj.TimeAdded);
                //PartialMonitoringObject po = (PartialMonitoringObject)obj;
                //Console.WriteLine($"{po.FullName}, {po.HealthState}");
                //po.RecalculateMonitoringState();
                //// obj.ResetMonitoringState();
                //Console.WriteLine($"{po.FullName}, {po.HealthState}");
            });

            //Console.WriteLine(objects.Count);
            //PartialMonitoringObject value = (PartialMonitoringObject) objects.First();
            //var result = value.ResetMonitoringState();

            //var monitors = OM12Connection.HuaweiESightMG.Monitoring.GetMonitorHierarchy(value);
            //ManagementPackMonitor monitor = monitors.Item;

            // var monitor = monitors.ChildNodes.ElementAt(3);


            //var filters = OM12Connection.HuaweiESightMG.Monitoring.GetMonitors(new ManagementPackMonitorCriteria("id = 'ESight.BladeServer.MainMonitor'"));


            //var health = value.HealthState;
            //Console.WriteLine(value.GetMostDerivedClasses());
            //Console.WriteLine(value.GetLeastDerivedNonAbstractClass());
            //Console.WriteLine(value.GetType());
            //Console.WriteLine(value.GetProperties());

            //            4
            //System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass]
            //ESight.HighdensityServer
            //Microsoft.EnterpriseManagement.Common.EnterpriseManagementObject
            //System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.EnterpriseManagement.Configuration.ManagementPackProperty]
            //Rackserver

            //string deviceId = "192.168.0.2-Rack123456c";
            //IObjectReader<EnterpriseManagementObject> objectReader = OM12Connection.Query(EntityTypeConst.ESight.HuaweiServer, $"DN = '{deviceId}'",
            //    new ObjectQueryOptions(ObjectPropertyRetrievalBehavior.None));

            //EnterpriseManagementObject enterpriseManagementObject = objectReader.First();
            //Console.WriteLine(enterpriseManagementObject);
        }
Esempio n. 7
0
        public void GetAllAlert()
        {
            OM12Connection.HuaweiESightConnector.GetMonitoringAlerts();
            // OM12Connection.HuaweiESightMG.GetMonitoringAlert();
            var             objects = OM12Connection.All <EnterpriseManagementObject>(EntityTypeConst.ESight.HuaweiServer).ToList();
            MonitoringClass mpClass = (MonitoringClass)OM12Connection.GetManagementPackClass(EntityTypeConst.ESight.HuaweiServer);

            OM12Connection.HuaweiESightMG.GetMonitoringAlertReader(mpClass);
            Console.WriteLine(objects.Count);
        }
Esempio n. 8
0
        public void TestGetAllESightApplicanceAsync()
        {
            string clazzName          = EntityTypeConst.BladeServer.Fan;
            ManagementPackClass clazz = OM12Connection.GetManagementPackClass(clazzName);
            var clazzProps            = clazz.GetProperties();
            var list  = OM12Connection.All <PartialMonitoringObject>(clazzName);
            var first = list.FirstOrDefault();

            var props     = OM12Connection.GetManagementPackProperties(first);
            var baseProps = OM12Connection.GetManagementPackProperties(EntityTypeConst.ESight.HuaweiServer);

            var Status = first[props["Status"]].Value;
            var DN     = first[baseProps["DN"]].Value;

            Console.WriteLine(clazz);
        }
        public void TestQueryAlert()
        {
            var objects = OM12Connection.All <PartialMonitoringObject>(EntityTypeConst.BladeServer.MainName).ToList();

            objects.ForEach(monitoringObject =>
            {
                var criteria = $"ResolutionState != '255' and CustomField5 = '16777219' " +
                               $"and CustomField8 = 'Event Subject=CPUMemoryCPU1Memory'";
                ReadOnlyCollection <MonitoringAlert> alerts = monitoringObject.GetMonitoringAlerts(new MonitoringAlertCriteria(criteria));
                Console.WriteLine(alerts.Count);
            });


            //OM12Connection.HuaweiESightMG.GetMonitoringAlert();

            //p.InsertCustomMonitoringEvent
            // We will identify the alert using suppression rule.
        }
        /// <summary>
        /// Updates  esight connect status.
        /// </summary>
        /// <param name="hostIp">The host ip.</param>
        /// <param name="latestStatus">The latest status.</param>
        /// <param name="latestConnectInfo">The latest connect information.</param>
        public void UpdateESightConnectStatus(string hostIp, string latestStatus, string latestConnectInfo)
        {
            IObjectReader <EnterpriseManagementObject> items =
                OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'");
            EnterpriseManagementObject managementObject = items.FirstOrDefault();

            if (managementObject == null)
            {
                throw new Exception($"Can not find the eSight:{hostIp}");
            }

            var props = OM12Connection.GetManagementPackProperties(managementObject);

            managementObject[props["LastModifiedOn"]].Value    = DateTime.UtcNow;
            managementObject[props["LatestStatus"]].Value      = latestStatus;
            managementObject[props["LatestConnectInfo"]].Value = latestConnectInfo;

            managementObject.Overwrite();
        }
        /// <summary>
        /// Updates the esight alarm.
        /// </summary>
        /// <param name="hostIp">The host ip.</param>
        /// <param name="alarmStatus">The alarm status.</param>
        /// <param name="error">The error.</param>
        public void UpdateESightNeDevice(string hostIp, int alarmStatus, string error)
        {
            IObjectReader <EnterpriseManagementObject> items =
                OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'");
            EnterpriseManagementObject managementObject = items.FirstOrDefault();

            if (managementObject == null)
            {
                throw new Exception($"Can not find the eSight:{hostIp}");
            }

            var props = OM12Connection.GetManagementPackProperties(managementObject);

            managementObject[props["LastModifiedOn"]].Value             = DateTime.UtcNow;
            managementObject[props["SubscripeNeDeviceError"]].Value     = error;
            managementObject[props["SubscriptionNeDeviceStatus"]].Value = alarmStatus;

            managementObject.Overwrite();
        }
        private ESightAppliance GetModelFromMpObject(EnterpriseManagementObject obj)
        {
            var props = OM12Connection.GetManagementPackProperties(obj);
            var model = new ESightAppliance()
            {
                Host                       = obj[props["Host"]].Value as String,
                Port                       = obj[props["Port"]].Value.ToString(),
                AliasName                  = obj[props["AliasName"]].Value as String,
                SystemId                   = obj[props["SystemId"]].Value as String,
                LoginAccount               = obj[props["LoginAccount"]].Value as String,
                LoginPassword              = obj[props["LoginPassword"]].Value as String,
                CreatedOn                  = ((DateTime)obj[props["CreatedOn"]].Value).ToLocalTime(),
                LastModifiedOn             = ((DateTime)obj[props["LastModifiedOn"]].Value).ToLocalTime(),
                SubscriptionAlarmStatus    = Convert.ToInt32(obj[props["SubscriptionAlarmStatus"]].Value),
                SubscriptionNeDeviceStatus = Convert.ToInt32(obj[props["SubscriptionNeDeviceStatus"]].Value),
                //LatestStatus = obj[props["LatestStatus"]].Value as string,
                SubscribeID = obj[props["SubscribeID"]].Value as string,
            };

            LogHelper.Info($"Host[{model.Host}]  Port[{model.Port}] LoginAccount[{model.LoginAccount}] SubscribeID[{model.SubscribeID}] ");
            return(model);
        }