CluPilotCloud/app/Provisioning/Steps/Customer/RegisterMonitoring.php

45 lines
1.2 KiB
PHP

<?php
namespace App\Provisioning\Steps\Customer;
use App\Models\ProvisioningRun;
use App\Provisioning\StepResult;
use App\Services\Monitoring\MonitoringClient;
class RegisterMonitoring extends CustomerStep
{
public function __construct(private MonitoringClient $monitoring) {}
public function key(): string
{
return 'register_monitoring';
}
public function maxDuration(): int
{
return 120;
}
public function execute(ProvisioningRun $run): StepResult
{
if ($this->hasResource($run, 'monitoring_target_id')) {
return StepResult::advance();
}
$instance = $this->instance($run);
$url = 'https://'.$instance->subdomain.'.'.config('provisioning.dns.zone').'/status.php';
// Register with the monitoring service [E] before recording it.
$targetId = $this->monitoring->registerTarget($instance->subdomain, $url);
$this->recordResource($run, $instance->host, 'monitoring_target_id', $targetId);
$instance->monitoringTargets()->create([
'external_id' => $targetId,
'url' => $url,
'status' => 'up',
]);
return StepResult::advance();
}
}