diff options
author | Cosmin Tupangiu <cosmin@redhat.com> | 2022-05-17 10:47:45 +0200 |
---|---|---|
committer | Cosmin Tupangiu <cosmin@redhat.com> | 2022-05-17 11:15:43 +0200 |
commit | 0c9b0e2aa7dd57efe780754dafd9bdadc086c51f (patch) | |
tree | 91dd276ac3c34491de0dd0cba863871bdc1e4b94 /pkg/specgen/generate/kube/volume.go | |
parent | eb26fa45f1326191dea27f2afabf82cb8b934140 (diff) | |
download | podman-0c9b0e2aa7dd57efe780754dafd9bdadc086c51f.tar.gz podman-0c9b0e2aa7dd57efe780754dafd9bdadc086c51f.tar.bz2 podman-0c9b0e2aa7dd57efe780754dafd9bdadc086c51f.zip |
expose block and char devices with play kube
[NO NEW TESTS NEEDED]
Signed-off-by: Cosmin Tupangiu <cosmin@redhat.com>
Diffstat (limited to 'pkg/specgen/generate/kube/volume.go')
-rw-r--r-- | pkg/specgen/generate/kube/volume.go | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/pkg/specgen/generate/kube/volume.go b/pkg/specgen/generate/kube/volume.go index 27881e77a..2fc63fc7c 100644 --- a/pkg/specgen/generate/kube/volume.go +++ b/pkg/specgen/generate/kube/volume.go @@ -22,8 +22,10 @@ type KubeVolumeType int const ( KubeVolumeTypeBindMount KubeVolumeType = iota - KubeVolumeTypeNamed KubeVolumeType = iota - KubeVolumeTypeConfigMap KubeVolumeType = iota + KubeVolumeTypeNamed + KubeVolumeTypeConfigMap + KubeVolumeTypeBlockDevice + KubeVolumeTypeCharDevice ) //nolint:revive @@ -78,7 +80,30 @@ func VolumeFromHostPath(hostPath *v1.HostPathVolumeSource) (*KubeVolume, error) if st.Mode()&os.ModeSocket != os.ModeSocket { return nil, errors.Errorf("checking HostPathSocket: path %s is not a socket", hostPath.Path) } - + case v1.HostPathBlockDev: + dev, err := os.Stat(hostPath.Path) + if err != nil { + return nil, errors.Wrap(err, "error checking HostPathBlockDevice") + } + if dev.Mode()&os.ModeDevice != os.ModeDevice { + return nil, errors.Errorf("checking HosPathDevice: path %s is not a block device", hostPath.Path) + } + return &KubeVolume{ + Type: KubeVolumeTypeBlockDevice, + Source: hostPath.Path, + }, nil + case v1.HostPathCharDev: + dev, err := os.Stat(hostPath.Path) + if err != nil { + return nil, errors.Wrap(err, "error checking HostPathCharDevice") + } + if dev.Mode()&os.ModeCharDevice != os.ModeCharDevice { + return nil, errors.Errorf("checking HosPathCharDevice: path %s is not a character device", hostPath.Path) + } + return &KubeVolume{ + Type: KubeVolumeTypeCharDevice, + Source: hostPath.Path, + }, nil case v1.HostPathDirectory: case v1.HostPathFile: case v1.HostPathUnset: |