44 lines
1.2 KiB
PHP
44 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()->firstOrCreate(
|
|
['external_id' => $targetId],
|
|
['url' => $url, 'status' => 'up'],
|
|
);
|
|
|
|
return StepResult::advance();
|
|
}
|
|
}
|