private void GetSensorValue(DataAccess.Entity.Component component) { String substringXML; try { if (component.Options.ContainsKey("SensorName")) { if (SensorsWebResponse.ContainsKey(component.Device.IPAddress)) { substringXML = SensorsWebResponse[component.Device.IPAddress]; } else { WebClient wc = new WebClient(); if (component.Options.ContainsKey("User")) { if (!String.IsNullOrEmpty(component.Options["User"])) { wc.Credentials = new NetworkCredential(component.Options["User"], component.Options["Password"]);//TODO - Encrypt Password } } String str = wc.DownloadString(new Uri("https://" + component.Device.IPAddress + "/mob/?moid=ha-host&doPath=runtime.healthSystemRuntime.systemHealthInfo.numericSensorInfo")); substringXML = str.Substring(str.IndexOf("<xml"), str.IndexOf("</xml>") - str.IndexOf("<xml") + 6); SensorsWebResponse.Add(component.Device.IPAddress, substringXML); } XDocument xdoc = XDocument.Parse(substringXML); var SensorsInfos = from lv1 in xdoc.Root.Descendants("{urn:vim25}HostNumericSensorInfo") select new Helpers.HostNumericSensorInfo() { Name = lv1.Descendants("{urn:vim25}name").FirstOrDefault().Value, //UnitModifier = Convert.ToInt32(lv1.Descendants("{urn:vim25}unitModifier").FirstOrDefault().Value), //BaseUnits = lv1.Descendants("{urn:vim25}baseUnits").FirstOrDefault().Value, //SensorType = lv1.Descendants("{urn:vim25}sensorType").FirstOrDefault().Value, CurrentReading = Convert.ToInt32(lv1.Descendants("{urn:vim25}currentReading").FirstOrDefault().Value) }; var SensorInfo = SensorsInfos.Where(u => u.Name.Contains(component.Options["SensorName"])).FirstOrDefault(); if (SensorInfo != null) { component.SetNewValue(Math.Abs(SensorInfo.CurrentReading / 100)); component.LastContact = DateTime.Now; CompressionManager.Instance.CompressStandard(component); DataAccess.DatabaseFacade.DatabaseManager.Components.Save(component); } } } catch (Exception ex) { var logFile = new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "error.log", true); logFile.WriteLine(ex.ToString()); logFile.WriteLine("Adress: '" + "https://" + component.Device.IPAddress + "/mob/?moid=ha-host&doPath=runtime.healthSystemRuntime.systemHealthInfo.numericSensorInfo" + "'"); logFile.Close(); } }
private void PingDelay(DataAccess.Entity.Component component) { var systemPing = new Ping(); var reply = systemPing.Send(component.Device.IPAddress); var oldValue = component.CurrentValue; if (reply.Status == IPStatus.Success) { component.SetNewValue(reply.RoundtripTime); component.LastContact = DateTime.Now; } else { component.SetNewValue(-1); //component.LastContact = DateTime.Now; } CompressionManager.Instance.CompressPingDelay(component); DataAccess.DatabaseFacade.DatabaseManager.Components.Save(component); }
private void GetPercentageLeft(DataAccess.Entity.Component component) { if (component.Options.ContainsKey("Disk")) { var DiskToSearch = component.Options["Disk"]; var oldValue = component.CurrentValue; ConnectionOptions options = null; if (component.Options.ContainsKey("User")) { if (!String.IsNullOrEmpty(component.Options["User"])) { options = new ConnectionOptions(); options.Username = component.Options["User"]; options.Password = component.Options["Password"]; //TODO Encrypt Password } } ManagementScope scope; if (options != null) { scope = new ManagementScope(@"\\" + component.Device.IPAddress + @"\root\cimv2", options); } else { scope = new ManagementScope(@"\\" + component.Device.IPAddress + @"\root\cimv2"); } SelectQuery query = new SelectQuery(); query.QueryString = "SELECT * FROM Win32_LogicalDisk"; ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get(); foreach (ManagementObject m in queryCollection) { if ((string)m.Properties["DeviceID"].Value == DiskToSearch) { component.SetNewValue(Convert.ToDouble(m.Properties["FreeSpace"].Value) / Convert.ToDouble(m.Properties["Size"].Value) * 100); component.LastContact = DateTime.Now; break; } } CompressionManager.Instance.CompressStandard(component); DataAccess.DatabaseFacade.DatabaseManager.Components.Save(component); } }
private void GetMemSpaceLeft(DataAccess.Entity.Component component) { var oldValue = component.CurrentValue; ConnectionOptions options = null; if (component.Options.ContainsKey("User")) { if (!String.IsNullOrEmpty(component.Options["User"])) { options = new ConnectionOptions(); options.Username = component.Options["User"]; options.Password = component.Options["Password"]; //TODO Encrypt Password } } ManagementScope scope; if (options != null) { scope = new ManagementScope(@"\\" + component.Device.IPAddress + @"\root\cimv2", options); } else { scope = new ManagementScope(@"\\" + component.Device.IPAddress + @"\root\cimv2"); } SelectQuery query = new SelectQuery(); query.QueryString = "SELECT * FROM Win32_OperatingSystem"; ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get(); foreach (ManagementObject m in queryCollection) { var value = Convert.ToDouble(m.Properties["FreePhysicalMemory"].Value); if (component.Options.ContainsKey("Unit")) { switch (component.Options["Unit"]) { case "KB": break; case "MB": value = value / 1024; break; case "GB": value = value / 1024 / 1024; break; case "TB": value = value / 1024 / 1024 / 1024; break; default: break; } } component.SetNewValue(value); component.LastContact = DateTime.Now; break; } CompressionManager.Instance.CompressStandard(component); DataAccess.DatabaseFacade.DatabaseManager.Components.Save(component); }