Skip to content

Commit 5c137aa

Browse files
Marlin CremersMarlinc
authored andcommitted
feat: reinstall and console
1 parent 20de50f commit 5c137aa

6 files changed

Lines changed: 264 additions & 0 deletions

File tree

src/Compute/Machines.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Cbws\Sdk\Common\Longrunning\Model\Operation;
1313
use Cbws\Sdk\Compute\Metadata\CreateMachineMetadata;
1414
use Cbws\Sdk\Compute\Metadata\DeleteMachineMetadata;
15+
use Cbws\Sdk\Compute\Metadata\ReinstallMachineMetadata;
1516
use Cbws\Sdk\Compute\Metadata\ResetMachineMetadata;
1617
use Cbws\Sdk\Compute\Metadata\StartMachineMetadata;
1718
use Cbws\Sdk\Compute\Metadata\StopMachineMetadata;
@@ -20,11 +21,15 @@
2021
use Cbws\Sdk\Compute\Requests\DeleteMachineRequest;
2122
use Cbws\Sdk\Compute\Requests\GetMachineRequest;
2223
use Cbws\Sdk\Compute\Requests\ListMachinesRequest;
24+
use Cbws\Sdk\Compute\Requests\ReinstallMachineRequest;
25+
use Cbws\Sdk\Compute\Requests\RequestMachineConsoleRequest;
2326
use Cbws\Sdk\Compute\Requests\ResetMachineRequest;
2427
use Cbws\Sdk\Compute\Requests\StartMachineRequest;
2528
use Cbws\Sdk\Compute\Requests\StopMachineRequest;
2629
use Cbws\Sdk\Compute\Responses\CreateMachineResponse;
2730
use Cbws\Sdk\Compute\Responses\ListMachinesResponse;
31+
use Cbws\Sdk\Compute\Responses\ReinstallMachineResponse;
32+
use Cbws\Sdk\Compute\Responses\RequestMachineConsoleResponse;
2833
use Cbws\Sdk\Compute\Responses\ResetMachineResponse;
2934
use Cbws\Sdk\Compute\Responses\StartMachineResponse;
3035
use Cbws\Sdk\Compute\Responses\StopMachineResponse;
@@ -197,6 +202,55 @@ public function reset(string $id, ResetMachineRequest $request = new ResetMachin
197202
return new Operation($data, ResetMachineMetadata::class, ResetMachineResponse::class, $this->client->operations());
198203
}
199204

205+
/**
206+
* @return Operation<ReinstallMachineMetadata, ReinstallMachineResponse>
207+
*
208+
* @throws StatusException
209+
*/
210+
public function reinstall(string $id, string $image, ReinstallMachineRequest $request = new ReinstallMachineRequest()): Operation
211+
{
212+
$request = $request
213+
->withName("projects/{$this->client->getProject()}/machines/{$id}")
214+
->withImage($image);
215+
$call = $this->client->getClient()->ReinstallMachine($request->toGrpc(), [
216+
'Idempotency-Key' => [$request->getIdempotencyKey()->toString()],
217+
]);
218+
219+
/** @var GrpcOperation $data */
220+
/** @var object{ code: int, details: string } $status */
221+
[$data, $status] = $call->wait();
222+
223+
if ($status->code !== 0) {
224+
throw StatusException::fromStatus($status);
225+
}
226+
227+
/** @phpstan-var Operation<ReinstallMachineMetadata, ReinstallMachineResponse> */
228+
return new Operation($data, ReinstallMachineMetadata::class, ReinstallMachineResponse::class, $this->client->operations());
229+
}
230+
231+
/**
232+
* @return RequestMachineConsoleResponse
233+
*
234+
* @throws StatusException
235+
*/
236+
public function requestConsole(string $id, RequestMachineConsoleRequest $request = new RequestMachineConsoleRequest()): RequestMachineConsoleResponse
237+
{
238+
$request = $request->withName("projects/{$this->client->getProject()}/machines/{$id}");
239+
$call = $this->client->getClient()->RequestMachineConsole($request->toGrpc(), [
240+
'Idempotency-Key' => [$request->getIdempotencyKey()->toString()],
241+
]);
242+
243+
/** @var \Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleRequest $data */
244+
/** @var object{ code: int, details: string } $status */
245+
[$data, $status] = $call->wait();
246+
247+
if ($status->code !== 0) {
248+
throw StatusException::fromStatus($status);
249+
}
250+
251+
return new RequestMachineConsoleResponse($data);
252+
}
253+
200254
/**
201255
* @return Operation<DeleteMachineMetadata, EmptyResponse>
202256
*
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Cbws\Sdk\Compute\Metadata;
6+
7+
use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineMetadata as ReinstallMachineMetadataGrpc;
8+
use Cbws\Sdk\Common\Longrunning\MetadataInterface;
9+
use Google\Protobuf\Internal\Message;
10+
11+
/**
12+
* @implements MetadataInterface<ReinstallMachineMetadataGrpc>
13+
*/
14+
class ReinstallMachineMetadata implements MetadataInterface
15+
{
16+
protected ReinstallMachineMetadataGrpc $object;
17+
18+
/**
19+
* @param ReinstallMachineMetadataGrpc $object
20+
*/
21+
public function __construct(Message $object)
22+
{
23+
$this->object = $object;
24+
}
25+
26+
public function toGrpc(): ReinstallMachineMetadataGrpc
27+
{
28+
return $this->object;
29+
}
30+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Cbws\Sdk\Compute\Requests;
6+
7+
use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineRequest as ReinstallMachineRequestGrpc;
8+
use Cbws\Sdk\Common\IdempotencyKeyTrait;
9+
10+
class ReinstallMachineRequest
11+
{
12+
use IdempotencyKeyTrait;
13+
14+
protected ReinstallMachineRequestGrpc $object;
15+
16+
public function __construct(?ReinstallMachineRequestGrpc $object = null)
17+
{
18+
$this->object = $object ?? new ReinstallMachineRequestGrpc();
19+
$this->idempotencyKey = $this->generateIdempotencyKey();
20+
}
21+
22+
public function getName(): string
23+
{
24+
return $this->object->getName();
25+
}
26+
27+
public function withName(?string $name = null): self
28+
{
29+
$this->object->setName($name ?? '');
30+
31+
return $this;
32+
}
33+
34+
public function getImage(): string
35+
{
36+
return $this->object->getImage();
37+
}
38+
39+
public function withImage(?string $image = null): self
40+
{
41+
$this->object->setImage($image ?? '');
42+
43+
return $this;
44+
}
45+
46+
public function toGrpc(): ReinstallMachineRequestGrpc
47+
{
48+
return $this->object;
49+
}
50+
51+
public function __debugInfo()
52+
{
53+
return [
54+
'name' => $this->getName(),
55+
'image' => $this->getImage(),
56+
];
57+
}
58+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Cbws\Sdk\Compute\Requests;
6+
7+
use Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleRequest as RequestMachineConsoleRequestGrpc;
8+
use Cbws\Sdk\Common\IdempotencyKeyTrait;
9+
10+
class RequestMachineConsoleRequest
11+
{
12+
use IdempotencyKeyTrait;
13+
14+
protected RequestMachineConsoleRequestGrpc $object;
15+
16+
public function __construct(?RequestMachineConsoleRequestGrpc $object = null)
17+
{
18+
$this->object = $object ?? new RequestMachineConsoleRequestGrpc();
19+
$this->idempotencyKey = $this->generateIdempotencyKey();
20+
}
21+
22+
public function getName(): string
23+
{
24+
return $this->object->getName();
25+
}
26+
27+
public function withName(?string $name = null): self
28+
{
29+
$this->object->setName($name ?? '');
30+
31+
return $this;
32+
}
33+
34+
public function toGrpc(): RequestMachineConsoleRequestGrpc
35+
{
36+
return $this->object;
37+
}
38+
39+
public function __debugInfo()
40+
{
41+
return [
42+
'name' => $this->getName(),
43+
];
44+
}
45+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Cbws\Sdk\Compute\Responses;
6+
7+
use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineResponse as ReinstallMachineResponseGrpc;
8+
use Cbws\Sdk\Common\Longrunning\ResponseInterface;
9+
use Google\Protobuf\Internal\Message;
10+
11+
/**
12+
* @implements ResponseInterface<ReinstallMachineResponseGrpc>
13+
*/
14+
class ReinstallMachineResponse implements ResponseInterface
15+
{
16+
protected ReinstallMachineResponseGrpc $object;
17+
18+
/**
19+
* @param ReinstallMachineResponseGrpc $object
20+
*/
21+
public function __construct(Message $object)
22+
{
23+
$this->object = $object;
24+
}
25+
26+
public function toGrpc(): Message
27+
{
28+
return $this->object;
29+
}
30+
31+
public function __debugInfo()
32+
{
33+
return [];
34+
}
35+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Cbws\Sdk\Compute\Responses;
6+
7+
use Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleResponse as RequestMachineConsoleResponseGrpc;
8+
use Cbws\Sdk\Common\Longrunning\ResponseInterface;
9+
use Google\Protobuf\Internal\Message;
10+
11+
/**
12+
* @implements ResponseInterface<RequestMachineConsoleResponseGrpc>
13+
*/
14+
class RequestMachineConsoleResponse implements ResponseInterface
15+
{
16+
protected RequestMachineConsoleResponseGrpc $object;
17+
18+
/**
19+
* @param RequestMachineConsoleResponseGrpc $object
20+
*/
21+
public function __construct(Message $object)
22+
{
23+
$this->object = $object;
24+
}
25+
26+
public function getUrl(): string
27+
{
28+
return $this->object->getUrl();
29+
}
30+
31+
public function toGrpc(): Message
32+
{
33+
return $this->object;
34+
}
35+
36+
public function __debugInfo()
37+
{
38+
return [
39+
'url' => $this->getUrl(),
40+
];
41+
}
42+
}

0 commit comments

Comments
 (0)