Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions src/Compute/Machines.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use Cbws\Sdk\Common\Longrunning\Model\Operation;
use Cbws\Sdk\Compute\Metadata\CreateMachineMetadata;
use Cbws\Sdk\Compute\Metadata\DeleteMachineMetadata;
use Cbws\Sdk\Compute\Metadata\ReinstallMachineMetadata;
use Cbws\Sdk\Compute\Metadata\ResetMachineMetadata;
use Cbws\Sdk\Compute\Metadata\StartMachineMetadata;
use Cbws\Sdk\Compute\Metadata\StopMachineMetadata;
Expand All @@ -20,11 +21,15 @@
use Cbws\Sdk\Compute\Requests\DeleteMachineRequest;
use Cbws\Sdk\Compute\Requests\GetMachineRequest;
use Cbws\Sdk\Compute\Requests\ListMachinesRequest;
use Cbws\Sdk\Compute\Requests\ReinstallMachineRequest;
use Cbws\Sdk\Compute\Requests\RequestMachineConsoleRequest;
use Cbws\Sdk\Compute\Requests\ResetMachineRequest;
use Cbws\Sdk\Compute\Requests\StartMachineRequest;
use Cbws\Sdk\Compute\Requests\StopMachineRequest;
use Cbws\Sdk\Compute\Responses\CreateMachineResponse;
use Cbws\Sdk\Compute\Responses\ListMachinesResponse;
use Cbws\Sdk\Compute\Responses\ReinstallMachineResponse;
use Cbws\Sdk\Compute\Responses\RequestMachineConsoleResponse;
use Cbws\Sdk\Compute\Responses\ResetMachineResponse;
use Cbws\Sdk\Compute\Responses\StartMachineResponse;
use Cbws\Sdk\Compute\Responses\StopMachineResponse;
Expand Down Expand Up @@ -197,6 +202,55 @@
return new Operation($data, ResetMachineMetadata::class, ResetMachineResponse::class, $this->client->operations());
}

/**
* @return Operation<ReinstallMachineMetadata, ReinstallMachineResponse>
*
* @throws StatusException
*/
public function reinstall(string $id, string $image, ReinstallMachineRequest $request = new ReinstallMachineRequest()): Operation
{
$request = $request
->withName("projects/{$this->client->getProject()}/machines/{$id}")
->withImage($image);
$call = $this->client->getClient()->ReinstallMachine($request->toGrpc(), [
'Idempotency-Key' => [$request->getIdempotencyKey()->toString()],
]);

/** @var GrpcOperation $data */
/** @var object{ code: int, details: string } $status */
[$data, $status] = $call->wait();

if ($status->code !== 0) {
throw StatusException::fromStatus($status);
}

/** @phpstan-var Operation<ReinstallMachineMetadata, ReinstallMachineResponse> */
return new Operation($data, ReinstallMachineMetadata::class, ReinstallMachineResponse::class, $this->client->operations());
}

/**
* @return RequestMachineConsoleResponse
*
* @throws StatusException
*/
public function requestConsole(string $id, RequestMachineConsoleRequest $request = new RequestMachineConsoleRequest()): RequestMachineConsoleResponse
{
$request = $request->withName("projects/{$this->client->getProject()}/machines/{$id}");
$call = $this->client->getClient()->RequestMachineConsole($request->toGrpc(), [
'Idempotency-Key' => [$request->getIdempotencyKey()->toString()],
]);

/** @var \Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleRequest $data */
/** @var object{ code: int, details: string } $status */
[$data, $status] = $call->wait();

if ($status->code !== 0) {
throw StatusException::fromStatus($status);
}

return new RequestMachineConsoleResponse($data);

Check failure on line 251 in src/Compute/Machines.php

View workflow job for this annotation

GitHub Actions / build-test

Parameter #1 $object of class Cbws\Sdk\Compute\Responses\RequestMachineConsoleResponse constructor expects Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleResponse, Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleRequest given.
}

/**
* @return Operation<DeleteMachineMetadata, EmptyResponse>
*
Expand Down
30 changes: 30 additions & 0 deletions src/Compute/Metadata/ReinstallMachineMetadata.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace Cbws\Sdk\Compute\Metadata;

use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineMetadata as ReinstallMachineMetadataGrpc;
use Cbws\Sdk\Common\Longrunning\MetadataInterface;
use Google\Protobuf\Internal\Message;

/**
* @implements MetadataInterface<ReinstallMachineMetadataGrpc>
*/
class ReinstallMachineMetadata implements MetadataInterface
{
protected ReinstallMachineMetadataGrpc $object;

/**
* @param ReinstallMachineMetadataGrpc $object
*/
public function __construct(Message $object)
{
$this->object = $object;
}

public function toGrpc(): ReinstallMachineMetadataGrpc
{
return $this->object;
}
}
58 changes: 58 additions & 0 deletions src/Compute/Requests/ReinstallMachineRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

declare(strict_types=1);

namespace Cbws\Sdk\Compute\Requests;

use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineRequest as ReinstallMachineRequestGrpc;
use Cbws\Sdk\Common\IdempotencyKeyTrait;

class ReinstallMachineRequest
{
use IdempotencyKeyTrait;

protected ReinstallMachineRequestGrpc $object;

public function __construct(?ReinstallMachineRequestGrpc $object = null)
{
$this->object = $object ?? new ReinstallMachineRequestGrpc();
$this->idempotencyKey = $this->generateIdempotencyKey();
}

public function getName(): string
{
return $this->object->getName();
}

public function withName(?string $name = null): self
{
$this->object->setName($name ?? '');

return $this;
}

public function getImage(): string
{
return $this->object->getImage();
}

public function withImage(?string $image = null): self
{
$this->object->setImage($image ?? '');

return $this;
}

public function toGrpc(): ReinstallMachineRequestGrpc
{
return $this->object;
}

public function __debugInfo()
{
return [
'name' => $this->getName(),
'image' => $this->getImage(),
];
}
}
45 changes: 45 additions & 0 deletions src/Compute/Requests/RequestMachineConsoleRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

declare(strict_types=1);

namespace Cbws\Sdk\Compute\Requests;

use Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleRequest as RequestMachineConsoleRequestGrpc;
use Cbws\Sdk\Common\IdempotencyKeyTrait;

class RequestMachineConsoleRequest
{
use IdempotencyKeyTrait;

protected RequestMachineConsoleRequestGrpc $object;

public function __construct(?RequestMachineConsoleRequestGrpc $object = null)
{
$this->object = $object ?? new RequestMachineConsoleRequestGrpc();
$this->idempotencyKey = $this->generateIdempotencyKey();
}

public function getName(): string
{
return $this->object->getName();
}

public function withName(?string $name = null): self
{
$this->object->setName($name ?? '');

return $this;
}

public function toGrpc(): RequestMachineConsoleRequestGrpc
{
return $this->object;
}

public function __debugInfo()
{
return [
'name' => $this->getName(),
];
}
}
35 changes: 35 additions & 0 deletions src/Compute/Responses/ReinstallMachineResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace Cbws\Sdk\Compute\Responses;

use Cbws\Grpc\Compute\V1alpha1\ReinstallMachineResponse as ReinstallMachineResponseGrpc;
use Cbws\Sdk\Common\Longrunning\ResponseInterface;
use Google\Protobuf\Internal\Message;

/**
* @implements ResponseInterface<ReinstallMachineResponseGrpc>
*/
class ReinstallMachineResponse implements ResponseInterface
{
protected ReinstallMachineResponseGrpc $object;

/**
* @param ReinstallMachineResponseGrpc $object
*/
public function __construct(Message $object)
{
$this->object = $object;
}

public function toGrpc(): Message
{
return $this->object;
}

public function __debugInfo()
{
return [];
}
}
42 changes: 42 additions & 0 deletions src/Compute/Responses/RequestMachineConsoleResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

declare(strict_types=1);

namespace Cbws\Sdk\Compute\Responses;

use Cbws\Grpc\Compute\V1alpha1\RequestMachineConsoleResponse as RequestMachineConsoleResponseGrpc;
use Cbws\Sdk\Common\Longrunning\ResponseInterface;
use Google\Protobuf\Internal\Message;

/**
* @implements ResponseInterface<RequestMachineConsoleResponseGrpc>
*/
class RequestMachineConsoleResponse implements ResponseInterface
{
protected RequestMachineConsoleResponseGrpc $object;

/**
* @param RequestMachineConsoleResponseGrpc $object
*/
public function __construct(Message $object)
{
$this->object = $object;
}

public function getUrl(): string
{
return $this->object->getUrl();
}

public function toGrpc(): Message
{
return $this->object;
}

public function __debugInfo()
{
return [
'url' => $this->getUrl(),
];
}
}
Loading