Install: Validate database before migrating (#12867)

* Validate database during install
Needed to remove usages of legacy functions in the validation

* Fix output, restore real versions
This commit is contained in:
Tony Murray
2021-05-13 07:18:54 -05:00
committed by GitHub
parent 500b0ac6fa
commit df5096e449
15 changed files with 77 additions and 69 deletions

View File

@@ -30,6 +30,8 @@ use Illuminate\Support\Arr;
use LibreNMS\DB\Eloquent;
use LibreNMS\DB\Schema;
use LibreNMS\Interfaces\InstallerStep;
use LibreNMS\ValidationResult;
use LibreNMS\Validator;
use Symfony\Component\HttpFoundation\StreamedResponse;
class DatabaseController extends InstallationController implements InstallerStep
@@ -66,17 +68,30 @@ class DatabaseController extends InstallationController implements InstallerStep
session()->forget('install.database'); // reset db complete status
$ok = false;
$message = '';
$messages = [];
try {
$conn = Eloquent::DB('setup');
$ok = $conn && ! is_null($conn->getPdo());
// validate Database
$validator = new Validator();
$validator->validate(['database']);
$results = $validator->getResults('database');
/** @var \LibreNMS\ValidationResult $result */
foreach ($results as $result) {
if ($result->getStatus() == ValidationResult::FAILURE) {
$ok = false;
$messages[] = $result->getMessage();
}
}
} catch (\Exception $e) {
$message = $e->getMessage();
$messages[] = $e->getMessage();
}
return response()->json([
'result' => $ok ? 'ok' : 'fail',
'message' => $message,
'message' => implode('<br />', $messages),
]);
}