- Consolidate DialRemote/DialTunnel common logic into buildResources + dialEnv interface - Remove strict capability check that prevented ConnResources creation for host-exec-only nodes - Merge gRPC-discovered capabilities with registration-declared capabilities in DialTunnel - Replace requireKubeConfig hard-fail with graceful skip when kubeconfig is absent - Introduce tai/types package for shared Ports/Capabilities/SystemInfo/AuthInfo/NodeMeta - Add tai/conn.go (ConnResources) and tai/dial.go (DialRemote/DialTunnel/DialLocal) - Rename tai/sandbox → tai/runtime for clarity - Update sandbox/v2, workspace, agent/sandbox/v2 test utilities for build-tag isolation Made-with: Cursor
20 lines
623 B
Go
20 lines
623 B
Go
package runtime
|
|
|
|
import "github.com/docker/docker/client"
|
|
|
|
// dockerCliAccessor is implemented by runtime types that hold a Docker client.
|
|
type dockerCliAccessor interface {
|
|
dockerClient() *client.Client
|
|
}
|
|
|
|
func (l *local) dockerClient() *client.Client { return l.core.cli }
|
|
func (d *dockerSandbox) dockerClient() *client.Client { return d.core.cli }
|
|
|
|
// DockerCli extracts the underlying Docker SDK client from a Runtime.
|
|
// Returns nil if the Runtime is not Docker-based (e.g. K8s).
|
|
func DockerCli(rt Runtime) *client.Client {
|
|
if a, ok := rt.(dockerCliAccessor); ok {
|
|
return a.dockerClient()
|
|
}
|
|
return nil
|
|
}
|