summaryrefslogtreecommitdiff
path: root/pkg/specgen/generate/kube/volume.go
diff options
context:
space:
mode:
authorCosmin Tupangiu <cosmin@redhat.com>2022-05-17 10:47:45 +0200
committerCosmin Tupangiu <cosmin@redhat.com>2022-05-17 11:15:43 +0200
commit0c9b0e2aa7dd57efe780754dafd9bdadc086c51f (patch)
tree91dd276ac3c34491de0dd0cba863871bdc1e4b94 /pkg/specgen/generate/kube/volume.go
parenteb26fa45f1326191dea27f2afabf82cb8b934140 (diff)
downloadpodman-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.go31
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: