77862b85e2
Test Plan: - Deploy using `feature-fstype` image tag - Create the following storage class: ``` apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: btrfs-sc parameters: fsType: btrfs provisioner: rawfile.hamravesh.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true ``` - Create and use a pvc backed by the new storage class - Exec into the pod and verify that the mounted volume is a `btrfs` filesystem indeed Reviewers: h.marvi, sina_rad, mhyousefi, bghadiri Reviewed By: h.marvi, mhyousefi, bghadiri Differential Revision: https://phab.hamravesh.ir/D833
58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
from util import remote_fn
|
|
|
|
|
|
@remote_fn
|
|
def scrub(volume_id):
|
|
import time
|
|
import rawfile_util
|
|
|
|
rawfile_util.patch_metadata(volume_id, {"deleted_at": time.time()})
|
|
|
|
|
|
@remote_fn
|
|
def init_rawfile(volume_id, size, fs_type):
|
|
import time
|
|
import rawfile_util
|
|
from volume_schema import LATEST_SCHEMA_VERSION
|
|
from pathlib import Path
|
|
|
|
from util import run
|
|
|
|
img_dir = rawfile_util.img_dir(volume_id)
|
|
img_dir.mkdir(exist_ok=True)
|
|
img_file = Path(f"{img_dir}/disk.img")
|
|
if img_file.exists():
|
|
return
|
|
rawfile_util.patch_metadata(
|
|
volume_id,
|
|
{
|
|
"schema_version": LATEST_SCHEMA_VERSION,
|
|
"volume_id": volume_id,
|
|
"created_at": time.time(),
|
|
"img_file": img_file.as_posix(),
|
|
"size": size,
|
|
"fs_type": fs_type,
|
|
},
|
|
)
|
|
run(f"truncate -s {size} {img_file}")
|
|
if fs_type == "ext4":
|
|
run(f"mkfs.ext4 {img_file}")
|
|
elif fs_type == "btrfs":
|
|
run(f"mkfs.btrfs {img_file}")
|
|
else:
|
|
raise Exception(f"Unsupported fsType: {fs_type}")
|
|
|
|
|
|
@remote_fn
|
|
def expand_rawfile(volume_id, size):
|
|
import rawfile_util
|
|
from util import run
|
|
|
|
img_file = rawfile_util.img_file(volume_id)
|
|
if rawfile_util.metadata(volume_id)["size"] >= size:
|
|
return
|
|
rawfile_util.patch_metadata(
|
|
volume_id, {"size": size},
|
|
)
|
|
run(f"truncate -s {size} {img_file}")
|