mirror of
https://github.com/containers/podman.git
synced 2026-06-01 20:37:26 -04:00
35 lines
919 B
Go
35 lines
919 B
Go
//go:build !remote
|
|
|
|
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/moby/moby/api/types/container"
|
|
"tags.cncf.io/container-device-interface/pkg/parser"
|
|
)
|
|
|
|
// DockerDeviceMappingString maps Moby DeviceMapping to a podman --device string.
|
|
func DockerDeviceMappingString(dev container.DeviceMapping) string {
|
|
// Inverse of docker/cli parseLinuxDevice (https://github.com/docker/cli/blob/master/cli/command/container/opts.go#L1007-L1039),
|
|
// building the podman --device string that pkg/specgen/generate.ParseDevice expects.
|
|
|
|
host := dev.PathOnHost
|
|
ctr := dev.PathInContainer
|
|
perm := dev.CgroupPermissions
|
|
|
|
switch {
|
|
case host != "" && parser.IsQualifiedName(host) && (ctr == "" || ctr == host):
|
|
return host
|
|
case host != "" && host == ctr && perm == "":
|
|
return host
|
|
case ctr == "" && perm == "":
|
|
return host
|
|
default:
|
|
if perm == "" {
|
|
perm = "rwm"
|
|
}
|
|
return fmt.Sprintf("%s:%s:%s", host, ctr, perm)
|
|
}
|
|
}
|