in community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/setup_network_storage.py [0:0]
def setup_network_storage():
"""prepare network fs mounts and add them to fstab"""
log.info("Set up network storage")
# filter mounts into two dicts, cluster-internal and external mounts
all_mounts = resolve_network_storage()
ext_mounts, int_mounts = separate_external_internal_mounts(all_mounts)
if lookup().is_controller:
mounts = ext_mounts
else:
mounts = ext_mounts + int_mounts
# Determine fstab entries and write them out
fstab_entries = []
for mount in mounts:
local_mount = Path(mount.local_mount)
remote_mount = mount.remote_mount
fs_type = mount.fs_type
server_ip = mount.server_ip or ""
util.mkdirp(local_mount)
log.info(
"Setting up mount ({}) {}{} to {}".format(
fs_type,
server_ip + ":" if fs_type != "gcsfuse" else "",
remote_mount,
local_mount,
)
)
mount_options = mount.mount_options.split(",") if mount.mount_options else []
if not mount_options or "_netdev" not in mount_options:
mount_options += ["_netdev"]
if fs_type == "gcsfuse":
fstab_entries.append(
"{0} {1} {2} {3} 0 0".format(
remote_mount, local_mount, fs_type, ",".join(mount_options)
)
)
else:
fstab_entries.append(
"{0}:{1} {2} {3} {4} 0 0".format(
server_ip,
remote_mount,
local_mount,
fs_type,
",".join(mount_options),
)
)
fstab = Path("/etc/fstab")
if not Path(fstab.with_suffix(".bak")).is_file():
shutil.copy2(fstab, fstab.with_suffix(".bak"))
shutil.copy2(fstab.with_suffix(".bak"), fstab)
with open(fstab, "a") as f:
f.write("\n")
for entry in fstab_entries:
f.write(entry)
f.write("\n")
mount_fstab(mounts_by_local(mounts), log)
munge_mount_handler()