diff options
author | Cosmin Tupangiu <cosmin@redhat.com> | 2022-05-18 10:46:45 +0200 |
---|---|---|
committer | Cosmin Tupangiu <cosmin@redhat.com> | 2022-05-18 10:46:45 +0200 |
commit | f5c8c0911306661f062a8297eac0aee7deeac6f8 (patch) | |
tree | 6496a1c3b612262fe725ee1c4f8af5114afc0d1f /pkg/specgen | |
parent | 0c9b0e2aa7dd57efe780754dafd9bdadc086c51f (diff) | |
download | podman-f5c8c0911306661f062a8297eac0aee7deeac6f8.tar.gz podman-f5c8c0911306661f062a8297eac0aee7deeac6f8.tar.bz2 podman-f5c8c0911306661f062a8297eac0aee7deeac6f8.zip |
add tests and fix bug when char device pass the test as block device
- add test
- fix bug when a character device set in a volume as a block device
is seen as block device in _pkg/specgen/generate/kube/volume.go_.
At this stage the type does not matter much because the devices are
recreated at lower layer but the bug allowed a CharDevice volume to be
passed to lower layer as a BlockDevice.
Signed-off-by: Cosmin Tupangiu <cosmin@redhat.com>
Diffstat (limited to 'pkg/specgen')
-rw-r--r-- | pkg/specgen/generate/kube/kube.go | 4 | ||||
-rw-r--r-- | pkg/specgen/generate/kube/volume.go | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/pkg/specgen/generate/kube/kube.go b/pkg/specgen/generate/kube/kube.go index 795ff876e..f37d79798 100644 --- a/pkg/specgen/generate/kube/kube.go +++ b/pkg/specgen/generate/kube/kube.go @@ -382,7 +382,7 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener } s.Volumes = append(s.Volumes, &cmVolume) case KubeVolumeTypeCharDevice: - // We are setting the path as hostPath:mountPath to comply with DeviceFromPath (https://github.com/containers/podman/blob/eb26fa45f1326191dea27f2afabf82cb8b934140/pkg/specgen/generate/config_linux.go#L72) + // We are setting the path as hostPath:mountPath to comply with pkg/specgen/generate.DeviceFromPath. // The type is here just to improve readability as it is not taken into account when the actual device is created. device := spec.LinuxDevice{ Path: fmt.Sprintf("%s:%s", volumeSource.Source, volume.MountPath), @@ -390,7 +390,7 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener } s.Devices = append(s.Devices, device) case KubeVolumeTypeBlockDevice: - // We are setting the path as hostPath:mountPath to comply with DeviceFromPath (https://github.com/containers/podman/blob/eb26fa45f1326191dea27f2afabf82cb8b934140/pkg/specgen/generate/config_linux.go#L72) + // We are setting the path as hostPath:mountPath to comply with pkg/specgen/generate.DeviceFromPath. // The type is here just to improve readability as it is not taken into account when the actual device is created. device := spec.LinuxDevice{ Path: fmt.Sprintf("%s:%s", volumeSource.Source, volume.MountPath), diff --git a/pkg/specgen/generate/kube/volume.go b/pkg/specgen/generate/kube/volume.go index 2fc63fc7c..1d6d49b9d 100644 --- a/pkg/specgen/generate/kube/volume.go +++ b/pkg/specgen/generate/kube/volume.go @@ -85,8 +85,8 @@ func VolumeFromHostPath(hostPath *v1.HostPathVolumeSource) (*KubeVolume, error) 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) + if dev.Mode()&os.ModeCharDevice == os.ModeCharDevice { + return nil, errors.Errorf("checking HostPathDevice: path %s is not a block device", hostPath.Path) } return &KubeVolume{ Type: KubeVolumeTypeBlockDevice, @@ -98,7 +98,7 @@ func VolumeFromHostPath(hostPath *v1.HostPathVolumeSource) (*KubeVolume, error) 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 nil, errors.Errorf("checking HostPathCharDevice: path %s is not a character device", hostPath.Path) } return &KubeVolume{ Type: KubeVolumeTypeCharDevice, |