mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-30 07:33:59 +08:00
* feat(api)!: use sandbox names as canonical references Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(cli): update forward color fixture for workspace scope Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): use sandbox names for settings lookup Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(e2e): use canonical sandbox request fields Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(e2e): use canonical sandbox receipt field Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(server): harden sandbox mutation handling Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(ci): update rebased sandbox references Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(api)!: standardize canonical entity references Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(api): codify protobuf API conventions Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(api): preserve workspace selector semantics Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(api): restore workspace selector parity Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(api): preserve descriptive name fields Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(api): update e2e request fixtures Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(core): omit workspace selector during bootstrap Signed-off-by: Drew Newberry <anewberry@nvidia.com> * chore(api): remove proto convention checker Signed-off-by: Drew Newberry <anewberry@nvidia.com> * chore(api): refresh schema fingerprints after rebase Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(cli): use canonical provider receipt field Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Drew Newberry <anewberry@nvidia.com>
69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package v1
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/NVIDIA/OpenShell/sdk/go/openshell/v1/internal/converter"
|
|
pb "github.com/NVIDIA/OpenShell/sdk/go/proto/openshellv1"
|
|
sbv1 "github.com/NVIDIA/OpenShell/sdk/go/proto/sandboxv1"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type configClient struct {
|
|
client pb.OpenShellClient
|
|
sandboxes SandboxInterface
|
|
}
|
|
|
|
func newConfigClient(conn grpc.ClientConnInterface, sandboxes SandboxInterface) *configClient {
|
|
return &configClient{client: pb.NewOpenShellClient(conn), sandboxes: sandboxes}
|
|
}
|
|
|
|
func (c *configClient) GetSandbox(ctx context.Context, workspace, sandboxName string) (*SandboxConfig, error) {
|
|
if sandboxName == "" {
|
|
return nil, &StatusError{Code: ErrorInvalidArgument, Message: "sandbox name must not be empty"}
|
|
}
|
|
if _, err := c.sandboxes.Get(ctx, workspace, sandboxName); err != nil {
|
|
return nil, err
|
|
}
|
|
resp, err := c.client.GetSandboxConfig(ctx, &sbv1.GetSandboxConfigRequest{
|
|
Name: sandboxName,
|
|
WorkspaceScope: namedWorkspaceScope(workspace),
|
|
})
|
|
if err != nil {
|
|
return nil, converter.FromGRPCError(err)
|
|
}
|
|
return converter.SandboxConfigFromProto(resp), nil
|
|
}
|
|
|
|
func (c *configClient) GetGateway(ctx context.Context) (*GatewayConfig, error) {
|
|
resp, err := c.client.GetGatewayConfig(ctx, &sbv1.GetGatewayConfigRequest{})
|
|
if err != nil {
|
|
return nil, converter.FromGRPCError(err)
|
|
}
|
|
return converter.GatewayConfigFromProto(resp), nil
|
|
}
|
|
|
|
func (c *configClient) Update(ctx context.Context, workspace string, update *ConfigUpdate) (*ConfigUpdateResult, error) {
|
|
if update == nil {
|
|
return nil, &StatusError{
|
|
Code: ErrorInvalidArgument,
|
|
Message: "update must not be nil",
|
|
}
|
|
}
|
|
req, convErr := converter.ConfigUpdateToProto(update)
|
|
if convErr != nil {
|
|
return nil, &StatusError{Code: ErrorInvalidArgument, Message: convErr.Error()}
|
|
}
|
|
if !req.GetGlobal() {
|
|
req.WorkspaceScope = namedWorkspaceScope(workspace)
|
|
}
|
|
resp, err := c.client.UpdateConfig(ctx, req)
|
|
if err != nil {
|
|
return nil, converter.FromGRPCError(err)
|
|
}
|
|
return converter.ConfigUpdateResultFromProto(resp), nil
|
|
}
|