Sonarr/src/NzbDrone.Core/HealthCheck/Checks/MonoVersionCheck.cs

61 lines
1.7 KiB
C#
Raw Normal View History

2014-03-14 10:15:30 +00:00
using System;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Core.HealthCheck.Checks
{
public class MonoVersionCheck : HealthCheckBase
2014-03-14 10:15:30 +00:00
{
private readonly IRuntimeInfo _runtimeInfo;
2014-03-14 10:15:30 +00:00
private readonly Logger _logger;
2014-07-25 06:57:54 +00:00
private static readonly Regex VersionRegex = new Regex(@"(?<=\W|^)(?<version>\d+\.\d+\.\d+(\.\d+)?)(?=\W)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
2014-03-14 10:15:30 +00:00
public MonoVersionCheck(IRuntimeInfo runtimeInfo, Logger logger)
2014-03-14 10:15:30 +00:00
{
_runtimeInfo = runtimeInfo;
2014-03-14 10:15:30 +00:00
_logger = logger;
}
public override HealthCheck Check()
2014-03-14 10:15:30 +00:00
{
if (!OsInfo.IsMono)
{
return new HealthCheck(GetType());
2014-03-14 10:15:30 +00:00
}
var versionString = _runtimeInfo.RuntimeVersion;
2014-07-25 06:57:54 +00:00
var versionMatch = VersionRegex.Match(versionString);
2014-03-14 10:15:30 +00:00
if (versionMatch.Success)
2014-03-14 10:15:30 +00:00
{
var version = new Version(versionMatch.Groups["version"].Value);
2014-03-14 10:15:30 +00:00
if (version >= new Version(3, 2))
2014-03-14 10:15:30 +00:00
{
_logger.Debug("mono version is 3.2 or better: {0}", version.ToString());
return new HealthCheck(GetType());
2014-03-14 10:15:30 +00:00
}
}
return new HealthCheck(GetType(), HealthCheckResult.Warning, "mono version is less than 3.2, upgrade for improved stability");
}
public override bool CheckOnConfigChange
{
get
{
return false;
}
}
public override bool CheckOnSchedule
{
get
{
return false;
}
2014-03-14 10:15:30 +00:00
}
}
}