podman

Форк
0
/
volumes.go 
73 строки · 1.4 Кб
1
package machine
2

3
import (
4
	"strings"
5

6
	"github.com/containers/podman/v5/pkg/machine/vmconfigs"
7
)
8

9
type Volume interface {
10
	Kind() VolumeKind
11
}
12

13
type VolumeKind string
14

15
var (
16
	VirtIOFsVk VolumeKind = "virtiofs"
17
	NinePVk    VolumeKind = "9p"
18
)
19

20
type VirtIoFs struct {
21
	VolumeKind
22
	ReadOnly bool
23
	Source   string
24
	Tag      string
25
	Target   string
26
}
27

28
func (v VirtIoFs) Kind() string {
29
	return string(VirtIOFsVk)
30
}
31

32
// unitName is the fq path where /'s are replaced with -'s
33
func (v VirtIoFs) unitName() string {
34
	// delete the leading -
35
	unit := strings.ReplaceAll(v.Target, "/", "-")
36
	if strings.HasPrefix(unit, "-") {
37
		return unit[1:]
38
	}
39
	return unit
40
}
41

42
func (v VirtIoFs) ToMount() vmconfigs.Mount {
43
	return vmconfigs.Mount{
44
		ReadOnly: v.ReadOnly,
45
		Source:   v.Source,
46
		Tag:      v.Tag,
47
		Target:   v.Target,
48
		Type:     v.Kind(),
49
	}
50
}
51

52
// NewVirtIoFsMount describes a machine volume mount for virtio-fs.  With virtio-fs
53
// the source/target are described as a "shared dir".  With this style of volume mount
54
// the Tag is used as the descriptor value for the mount (in Linux).
55
func NewVirtIoFsMount(src, target string, readOnly bool) VirtIoFs {
56
	vfs := VirtIoFs{
57
		ReadOnly: readOnly,
58
		Source:   src,
59
		Target:   target,
60
	}
61
	vfs.Tag = vfs.unitName()
62
	return vfs
63
}
64

65
func MountToVirtIOFs(mnt *vmconfigs.Mount) VirtIoFs {
66
	return VirtIoFs{
67
		VolumeKind: VirtIOFsVk,
68
		ReadOnly:   mnt.ReadOnly,
69
		Source:     mnt.Source,
70
		Tag:        mnt.Tag,
71
		Target:     mnt.Target,
72
	}
73
}
74

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.