Validate: use "database version" instead of "mysql version" (#14158)

* Validate: use "database version" instead of "mysql version"

* wip

* wip
This commit is contained in:
Jellyfrog
2022-07-29 18:36:18 +02:00
committed by GitHub
parent 8508710e62
commit 670f964e98
11 changed files with 44 additions and 28 deletions

View File

@@ -43,7 +43,6 @@ use LibreNMS\Util\Debug;
use LibreNMS\Util\Dns;
use LibreNMS\Util\Git;
use LibreNMS\Util\StringHelpers;
use LibreNMS\Util\Version;
use Psr\Log\LoggerInterface;
use Throwable;
@@ -371,7 +370,7 @@ Commit SHA: %s
Commit Date: %s
DB Schema: %s
PHP: %s
MySQL: %s
Database: %s
RRDTool: %s
SNMP: %s
==================================
@@ -380,7 +379,7 @@ EOH,
Git::localDate(),
vsprintf('%s (%s)', $version->database()),
phpversion(),
Version::get()->databaseServer(),
$version->databaseServer(),
$version->rrdtool(),
$version->netSnmp()
));

View File

@@ -140,7 +140,7 @@ class Stats
'vminfo' => $this->selectTotal('vminfo', ['vm_type']),
'vmware' => $this->selectTotal('vminfo'),
'vrfs' => $this->selectTotal('vrfs'),
'mysql_version' => $this->selectStatic($version->databaseServer()),
'database_version' => $this->selectStatic($version->databaseServer()),
'php_version' => $this->selectStatic(phpversion()),
'python_version' => $this->selectStatic($version->python()),
'rrdtool_version' => $this->selectStatic($version->rrdtool()),

View File

@@ -122,7 +122,20 @@ class Version
public function databaseServer(): string
{
return Eloquent::isConnected() ? Arr::first(DB::selectOne('select version()')) : 'Not Connected';
if (! Eloquent::isConnected()) {
return 'Not Connected';
}
switch (Eloquent::getDriver()) {
case 'mysql':
$ret = Arr::first(DB::selectOne('select version()'));
return (str_contains($ret, 'MariaDB') ? 'MariaDB ' : 'MySQL ') . $ret;
case 'sqlite':
return 'SQLite ' . Arr::first(DB::selectOne('select sqlite_version()'));
default:
return 'Unsupported: ' . Eloquent::getDriver();
}
}
public function database(): array

View File

@@ -39,22 +39,26 @@ class CheckDatabaseServerVersion implements Validation
public function validate(): ValidationResult
{
$version = Version::get()->databaseServer();
$version = explode('-', $version);
[$name, $version] = explode(' ', $version, 2);
[$version] = explode('-', $version, 2);
if (isset($version[1]) && $version[1] == 'MariaDB') {
if (version_compare($version[0], Database::MARIADB_MIN_VERSION, '<=')) {
return ValidationResult::fail(
trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MariaDB', 'min' => Database::MARIADB_MIN_VERSION, 'date' => Database::MARIADB_MIN_VERSION_DATE]),
trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MariaDB', 'suggested' => Database::MARIADB_RECOMMENDED_VERSION]),
);
}
} else {
if (version_compare($version[0], Database::MYSQL_MIN_VERSION, '<=')) {
return ValidationResult::fail(
trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MySQL', 'min' => Database::MYSQL_MIN_VERSION, 'date' => Database::MYSQL_MIN_VERSION_DATE]),
trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MySQL', 'suggested' => Database::MYSQL_RECOMMENDED_VERSION]),
);
}
switch ($name) {
case 'MariaDB':
if (version_compare($version, Database::MARIADB_MIN_VERSION, '<=')) {
return ValidationResult::fail(
trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MariaDB', 'min' => Database::MARIADB_MIN_VERSION, 'date' => Database::MARIADB_MIN_VERSION_DATE]),
trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MariaDB', 'suggested' => Database::MARIADB_RECOMMENDED_VERSION]),
);
}
break;
case 'MySQL':
if (version_compare($version, Database::MYSQL_MIN_VERSION, '<=')) {
return ValidationResult::fail(
trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MySQL', 'min' => Database::MYSQL_MIN_VERSION, 'date' => Database::MYSQL_MIN_VERSION_DATE]),
trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MySQL', 'suggested' => Database::MYSQL_RECOMMENDED_VERSION]),
);
}
break;
}
return ValidationResult::ok(trans('validation.validations.database.CheckDatabaseServerVersion.ok'));

View File

@@ -72,7 +72,7 @@ class AboutController extends Controller
'project_name' => Config::get('project_name'),
'version_local' => $version->local(),
'version_mysql' => $version->databaseServer(),
'version_database' => $version->databaseServer(),
'version_php' => phpversion(),
'version_laravel' => App::VERSION(),
'version_python' => $version->python(),

View File

@@ -72,7 +72,7 @@ Commit SHA: {$versions['local_sha']}
Commit Date: {$versions['local_date']}
DB Schema: {$versions['db_schema']}
PHP: {$versions['php_ver']}
MySQL: {$versions['mysql_ver']}
Database: {$versions['database_ver']}
RRDTool: {$versions['rrdtool_ver']}
SNMP: {$versions['netsnmp_ver']}
==================================

View File

@@ -27,7 +27,7 @@ Output:
"local_branch": "master",
"db_schema": 249,
"php_ver": "7.2.2",
"mysql_ver": "5.5.56-MariaDB",
"database_ver": "MariaDB 5.5.56-MariaDB",
"rrdtool_ver": "1.4.8",
"netsnmp_ver": "NET-SNMP 5.7.2"
}

View File

@@ -551,7 +551,7 @@ function version_info($remote = false)
'db_schema' => vsprintf('%s (%s)', $version->database()),
'php_ver' => phpversion(),
'python_ver' => $version->python(),
'mysql_ver' => $version->databaseServer(),
'database_ver' => $version->databaseServer(),
'rrdtool_ver' => $version->rrdtool(),
'netsnmp_ver' => $version->netSnmp(),
];

View File

@@ -107,7 +107,7 @@ Commit SHA: {$versions['local_sha']}
Commit Date: {$versions['local_date']}
DB Schema: {$versions['db_schema']}
PHP: {$versions['php_ver']}
MySQL: {$versions['mysql_ver']}
Database: {$versions['database_ver']}
RRDTool: {$versions['rrdtool_ver']}
SNMP: {$versions['netsnmp_ver']}
==================================

View File

@@ -47,8 +47,8 @@
<td>{{ $version_python }}</td>
</tr>
<tr>
<td><b>{{ __('MySQL') }}</b></td>
<td>{{ $version_mysql }}</td>
<td><b>{{ __('Database') }}</b></td>
<td>{{ $version_database }}</td>
</tr>
<tr>
<td><a href="https://laravel.com/"><b>{{ __('Laravel') }}</b></a></td>

View File

@@ -160,7 +160,7 @@ LibreNMS | ${versions['local_ver']}
DB Schema | ${versions['db_schema']}
PHP | ${versions['php_ver']}
Python | ${versions['python_ver']}
MySQL | ${versions['mysql_ver']}
Database | ${versions['database_ver']}
RRDTool | ${versions['rrdtool_ver']}
SNMP | ${versions['netsnmp_ver']}
====================================