Skip to content

Commit 479d49e

Browse files
paulus7LKaemmerling
authored andcommitted
Implemented metrics function on Server Model (#10)
1 parent e5dbace commit 479d49e

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

docs/files/Models/Servers/Server.php.txt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -443,16 +443,22 @@ class Server extends Model
443443
/**
444444
* Get Metrics for specified server.
445445
*
446-
* @see https://docs.hetzner.cloud/#resources-servers-get-2
446+
* @see https://docs.hetzner.cloud/#servers-get-metrics-for-a-server
447447
* @param string $type
448448
* @param string $start
449449
* @param string $end
450450
* @param int|null $step
451+
* @return APIResponse
452+
* @throws \LKDev\HetznerCloud\APIException
451453
*/
452454
public function metrics(string $type, string $start, string $end, int $step = null)
453455
{
454-
// ToDo
455-
$this->httpClient->get($this->replaceServerIdInUri('servers/{id}/metrics?') . http_build_query(compact('type', 'start', 'end', 'step')));
456+
$response = $this->httpClient->get($this->replaceServerIdInUri('servers/{id}/metrics?') . http_build_query(compact('type', 'start', 'end', 'step')));
457+
if (!HetznerAPIClient::hasError($response)) {
458+
return APIResponse::create([
459+
'metrics' => json_decode((string)$response->getBody())->metrics
460+
], $response->getHeaders());
461+
}
456462
}
457463

458464
/**

src/Models/Servers/Server.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,16 +481,22 @@ public function changeReverseDNS(string $ip, string $dnsPtr): APIResponse
481481
/**
482482
* Get Metrics for specified server.
483483
*
484-
* @see https://docs.hetzner.cloud/#resources-servers-get-2
484+
* @see https://docs.hetzner.cloud/#servers-get-metrics-for-a-server
485485
* @param string $type
486486
* @param string $start
487487
* @param string $end
488488
* @param int|null $step
489+
* @return APIResponse
490+
* @throws \LKDev\HetznerCloud\APIException
489491
*/
490492
public function metrics(string $type, string $start, string $end, int $step = null)
491493
{
492-
// ToDo
493-
$this->httpClient->get($this->replaceServerIdInUri('servers/{id}/metrics?') . http_build_query(compact('type', 'start', 'end', 'step')));
494+
$response = $this->httpClient->get($this->replaceServerIdInUri('servers/{id}/metrics?') . http_build_query(compact('type', 'start', 'end', 'step')));
495+
if (!HetznerAPIClient::hasError($response)) {
496+
return APIResponse::create([
497+
'metrics' => json_decode((string)$response->getBody())->metrics
498+
], $response->getHeaders());
499+
}
494500
}
495501

496502
/**

tests/Unit/Servers/ServerTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,11 @@ public function testGet()
195195
$this->assertEquals($server->name, 'my-server');
196196
$this->assertEquals($server->status, 'running');
197197
}
198+
199+
public function testMetrics()
200+
{
201+
$apiResponse = $this->server->metrics('cpu,disk,network', date("c"), date("c"), 60);
202+
$metrics = $apiResponse->getResponsePart('metrics');
203+
$this->assertEquals([["1435781470.622", "42"]], $metrics->time_series->name_of_timeseries->values ?? null);
204+
}
198205
}

0 commit comments

Comments
 (0)