35 lines
1.4 KiB
Go
35 lines
1.4 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
)
|
|
|
|
//go:generate go run go.uber.org/mock/mockgen -destination=../adapters/mocks/mock_rtmclient.go -package=mocks galaxy/gamemaster/internal/ports RTMClient
|
|
|
|
// RTMClient executes synchronous calls to Runtime Manager over the
|
|
// trusted internal REST surface documented in
|
|
// `galaxy/rtmanager/api/internal-openapi.yaml`. GM uses RTM only for
|
|
// stop and patch lifecycle actions in v1.
|
|
//
|
|
// `Restart` is reserved per `gamemaster/PLAN.md` Stage 10 («reserved;
|
|
// not in v1 feature scope») and is intentionally absent from the v1
|
|
// surface. It will be added in a later iteration if a use case
|
|
// emerges.
|
|
type RTMClient interface {
|
|
// Stop calls POST /api/v1/internal/runtimes/{game_id}/stop with
|
|
// body `{reason}`. Implementations wrap any non-success outcome
|
|
// with ErrRTMUnavailable so callers can branch with errors.Is.
|
|
Stop(ctx context.Context, gameID, reason string) error
|
|
|
|
// Patch calls POST /api/v1/internal/runtimes/{game_id}/patch with
|
|
// body `{image_ref}`. Implementations wrap any non-success outcome
|
|
// with ErrRTMUnavailable so callers can branch with errors.Is.
|
|
Patch(ctx context.Context, gameID, imageRef string) error
|
|
}
|
|
|
|
// ErrRTMUnavailable signals that a Runtime Manager call could not be
|
|
// completed because the upstream service was unreachable, returned an
|
|
// error response, or timed out.
|
|
var ErrRTMUnavailable = errors.New("runtime manager unavailable")
|