12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/osctld/commands/container/mount_dataset.rb', line 12
def execute(ct)
manipulate(ct) do
ds = OsCtl::Lib::Zfs::Dataset.new(
File.join(ct.dataset.name, opts[:name]),
base: ct.dataset.name
)
error!("dataset #{ds.name} does not exist") unless ds.exist?
m_opts = %w[bind create=dir]
m_opts << opts[:mode]
mnt = Mount::Entry.new(
nil,
opts[:mountpoint],
'bind',
m_opts.join(','),
opts[:automount],
dataset: ds,
map_ids: true
)
if ct.mounts.find_at(mnt.mountpoint)
next error("mountpoint '#{mnt.mountpoint}' is already mounted")
end
ct.mounts.add(mnt)
ok
end
end
|