mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-07 17:02:34 +00:00
Plugins base (#613)
* wip * wip * cleanup * notification channels * phpstan * services * remove server types * refactoring * refactoring
This commit is contained in:
@ -18,9 +18,14 @@ public function handle(): void
|
||||
ServerStatus::READY,
|
||||
ServerStatus::DISCONNECTED,
|
||||
])->chunk(50, function ($servers) {
|
||||
$dispatchTime = now();
|
||||
/** @var Server $server */
|
||||
foreach ($servers as $server) {
|
||||
dispatch(function () use ($server) {
|
||||
dispatch(function () use ($server, $dispatchTime) {
|
||||
// check connection if dispatch time is less than 5 minutes ago
|
||||
if ($dispatchTime->diffInMinutes(now()) > 5) {
|
||||
return;
|
||||
}
|
||||
$server->checkConnection();
|
||||
})->onConnection('ssh');
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Enums\ServerStatus;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
@ -15,17 +16,19 @@ class GetMetricsCommand extends Command
|
||||
public function handle(): void
|
||||
{
|
||||
$checkedMetrics = 0;
|
||||
Server::query()->whereHas('services', function (Builder $query): void {
|
||||
$query->where('type', 'monitoring')
|
||||
->where('name', 'remote-monitor');
|
||||
})->chunk(10, function ($servers) use (&$checkedMetrics): void {
|
||||
/** @var Server $server */
|
||||
foreach ($servers as $server) {
|
||||
$info = $server->os()->resourceInfo();
|
||||
$server->metrics()->create(array_merge($info, ['server_id' => $server->id]));
|
||||
$checkedMetrics++;
|
||||
}
|
||||
});
|
||||
Server::query()
|
||||
->where('status', ServerStatus::READY)
|
||||
->whereHas('services', function (Builder $query): void {
|
||||
$query->where('type', 'monitoring')
|
||||
->where('name', 'remote-monitor');
|
||||
})->chunk(10, function ($servers) use (&$checkedMetrics): void {
|
||||
/** @var Server $server */
|
||||
foreach ($servers as $server) {
|
||||
$info = $server->os()->resourceInfo();
|
||||
$server->metrics()->create(array_merge($info, ['server_id' => $server->id]));
|
||||
$checkedMetrics++;
|
||||
}
|
||||
});
|
||||
$this->info("Checked $checkedMetrics metrics");
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,28 @@
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\Backup;
|
||||
use App\Models\BackupFile;
|
||||
use App\Models\CronJob;
|
||||
use App\Models\Database;
|
||||
use App\Models\DatabaseUser;
|
||||
use App\Models\Deployment;
|
||||
use App\Models\DeploymentScript;
|
||||
use App\Models\FirewallRule;
|
||||
use App\Models\GitHook;
|
||||
use App\Models\NotificationChannel;
|
||||
use App\Models\Project;
|
||||
use App\Models\Server;
|
||||
use App\Models\ServerLog;
|
||||
use App\Models\ServerProvider;
|
||||
use App\Models\Service;
|
||||
use App\Models\Site;
|
||||
use App\Models\SourceControl;
|
||||
use App\Models\SshKey;
|
||||
use App\Models\Ssl;
|
||||
use App\Models\StorageProvider;
|
||||
use App\Models\User;
|
||||
use App\Models\Worker;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\File;
|
||||
@ -26,28 +48,28 @@ public function handle(): void
|
||||
|
||||
$this->call('migrate', ['--force' => true]);
|
||||
|
||||
$this->migrateModel(\App\Models\Backup::class);
|
||||
$this->migrateModel(\App\Models\BackupFile::class);
|
||||
$this->migrateModel(\App\Models\CronJob::class);
|
||||
$this->migrateModel(\App\Models\Database::class);
|
||||
$this->migrateModel(\App\Models\DatabaseUser::class);
|
||||
$this->migrateModel(\App\Models\Deployment::class);
|
||||
$this->migrateModel(\App\Models\DeploymentScript::class);
|
||||
$this->migrateModel(\App\Models\FirewallRule::class);
|
||||
$this->migrateModel(\App\Models\GitHook::class);
|
||||
$this->migrateModel(\App\Models\NotificationChannel::class);
|
||||
$this->migrateModel(\App\Models\Project::class);
|
||||
$this->migrateModel(\App\Models\Worker::class);
|
||||
$this->migrateModel(\App\Models\Server::class);
|
||||
$this->migrateModel(\App\Models\ServerLog::class);
|
||||
$this->migrateModel(\App\Models\ServerProvider::class);
|
||||
$this->migrateModel(\App\Models\Service::class);
|
||||
$this->migrateModel(\App\Models\Site::class);
|
||||
$this->migrateModel(\App\Models\SourceControl::class);
|
||||
$this->migrateModel(\App\Models\SshKey::class);
|
||||
$this->migrateModel(\App\Models\Ssl::class);
|
||||
$this->migrateModel(\App\Models\StorageProvider::class);
|
||||
$this->migrateModel(\App\Models\User::class);
|
||||
$this->migrateModel(Backup::class);
|
||||
$this->migrateModel(BackupFile::class);
|
||||
$this->migrateModel(CronJob::class);
|
||||
$this->migrateModel(Database::class);
|
||||
$this->migrateModel(DatabaseUser::class);
|
||||
$this->migrateModel(Deployment::class);
|
||||
$this->migrateModel(DeploymentScript::class);
|
||||
$this->migrateModel(FirewallRule::class);
|
||||
$this->migrateModel(GitHook::class);
|
||||
$this->migrateModel(NotificationChannel::class);
|
||||
$this->migrateModel(Project::class);
|
||||
$this->migrateModel(Worker::class);
|
||||
$this->migrateModel(Server::class);
|
||||
$this->migrateModel(ServerLog::class);
|
||||
$this->migrateModel(ServerProvider::class);
|
||||
$this->migrateModel(Service::class);
|
||||
$this->migrateModel(Site::class);
|
||||
$this->migrateModel(SourceControl::class);
|
||||
$this->migrateModel(SshKey::class);
|
||||
$this->migrateModel(Ssl::class);
|
||||
$this->migrateModel(StorageProvider::class);
|
||||
$this->migrateModel(User::class);
|
||||
|
||||
$env = File::get(base_path('.env'));
|
||||
$env = str_replace('DB_CONNECTION=mysql', 'DB_CONNECTION=sqlite', $env);
|
||||
|
Reference in New Issue
Block a user