47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
package tunnel
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/containers/podman/v5/pkg/bindings/system"
|
|
"github.com/containers/podman/v5/pkg/domain/entities"
|
|
)
|
|
|
|
const (
|
|
remoteFarmImageBuilderDriver = "podman-remote"
|
|
)
|
|
|
|
// FarmNodeName returns the remote engine's name.
|
|
func (ir *ImageEngine) FarmNodeName(ctx context.Context) string {
|
|
return ir.NodeName
|
|
}
|
|
|
|
// FarmNodeDriver returns a description of the image builder driver
|
|
func (ir *ImageEngine) FarmNodeDriver(ctx context.Context) string {
|
|
return remoteFarmImageBuilderDriver
|
|
}
|
|
|
|
func (ir *ImageEngine) fetchInfo(_ context.Context) (os, arch, variant string, nativePlatforms []string, err error) {
|
|
engineInfo, err := system.Info(ir.ClientCtx, &system.InfoOptions{})
|
|
if err != nil {
|
|
return "", "", "", nil, fmt.Errorf("retrieving host info from %q: %w", ir.NodeName, err)
|
|
}
|
|
nativePlatform := engineInfo.Host.OS + "/" + engineInfo.Host.Arch
|
|
if engineInfo.Host.Variant != "" {
|
|
nativePlatform = nativePlatform + "/" + engineInfo.Host.Variant
|
|
}
|
|
return engineInfo.Host.OS, engineInfo.Host.Arch, engineInfo.Host.Variant, []string{nativePlatform}, nil
|
|
}
|
|
|
|
// FarmNodeInspect returns information about the remote engines in the farm
|
|
func (ir *ImageEngine) FarmNodeInspect(ctx context.Context) (*entities.FarmInspectReport, error) {
|
|
ir.platforms.Do(func() {
|
|
ir.os, ir.arch, ir.variant, ir.nativePlatforms, ir.platformsErr = ir.fetchInfo(ctx)
|
|
})
|
|
return &entities.FarmInspectReport{NativePlatforms: ir.nativePlatforms,
|
|
OS: ir.os,
|
|
Arch: ir.arch,
|
|
Variant: ir.variant}, ir.platformsErr
|
|
}
|