public void LoadDefaults() { Host = Host ?? Environment.GetEnvironmentVariable("IPMI_HOST") ?? "127.0.0.1"; Username = Username ?? Environment.GetEnvironmentVariable("IPMI_USERNAME"); Password = Password ?? Environment.GetEnvironmentVariable("IPMI_PASSWORD"); if (UpdateInterval == null) { UpdateInterval = int.TryParse(Environment.GetEnvironmentVariable("UPDATE_INTERVAL"), out var interval) ? interval : 5; } if (MaximumTemperature == null) { MaximumTemperature = int.TryParse(Environment.GetEnvironmentVariable("MAXIMUM_TEMPERATURE"), out var max) ? max : 70; } if (MaximumAllowableOverheatTime == null) { MaximumAllowableOverheatTime = int.TryParse(Environment.GetEnvironmentVariable("OVERHEAT_TIME"), out var overheatTime) ? overheatTime : 900; } if (IdleCurve == null || !IdleCurve.Any()) { var env = Environment.GetEnvironmentVariable("FAN_CURVE"); if (string.IsNullOrEmpty(env)) { throw new Exception("No idle fan curve specified."); } IdleCurve = env.Split(';'); } if (OverheatTemperature == null) { if (int.TryParse(Environment.GetEnvironmentVariable("OVERHEAT_TEMPERATURE"), out var overheat)) { OverheatTemperature = overheat; } else { var curveMax = IdleCurve.Select(Program.Parse).Max(x => x.temp); OverheatTemperature = Math.Min(MaximumTemperature.Value, curveMax); } } if (SustainedLoadCurve == null || !SustainedLoadCurve.Any()) { var env = Environment.GetEnvironmentVariable("SUSTAINED_FAN_CURVE"); if (string.IsNullOrEmpty(env)) { SustainedLoadCurve = env.Split(';'); } else { SustainedLoadCurve = IdleCurve; } } }
public override string ToString() { return($"{nameof(Host)}: {Host}, {nameof(UpdateInterval)}: {UpdateInterval}, {nameof(OverheatTemperature)}: {OverheatTemperature}, {nameof(MaximumTemperature)}: {MaximumTemperature}, {nameof(MaximumAllowableOverheatTime)}: {MaximumAllowableOverheatTime}, {nameof(IdleCurve)}: {IdleCurve.Aggregate((a,b) => $"{a};{b}")}, {nameof(SustainedLoadCurve)}: {SustainedLoadCurve.Aggregate((a, b) => $"{a};{b}")}"); }