rawfile-localpv/remote.py

76 lines
1.9 KiB
Python
Raw Normal View History

2020-04-24 11:48:09 +00:00
from util import remote_fn
def scrub(volume_id):
2020-04-24 15:38:18 +00:00
import time
import rawfile_util
img_dir = rawfile_util.img_dir(volume_id)
if not img_dir.exists():
return
now = time.time()
deleted_at = now
gc_at = now # TODO: GC sensitive PVCs later
rawfile_util.patch_metadata(volume_id, {"deleted_at": deleted_at, "gc_at": gc_at})
rawfile_util.gc_if_needed(volume_id, dry_run=False)
2020-04-24 11:48:09 +00:00
def init_rawfile(volume_id, size):
2020-04-24 15:38:18 +00:00
import time
2021-10-02 12:45:17 +00:00
from subprocess import CalledProcessError
2020-06-13 23:47:32 +00:00
from pathlib import Path
2021-10-02 12:45:17 +00:00
import rawfile_util
from volume_schema import LATEST_SCHEMA_VERSION
2020-04-24 11:48:09 +00:00
from util import run
from consts import RESOURCE_EXHAUSTED_EXIT_CODE
if rawfile_util.get_capacity() < size:
2021-10-02 12:45:17 +00:00
raise CalledProcessError(returncode=RESOURCE_EXHAUSTED_EXIT_CODE, cmd="")
2020-04-24 11:48:09 +00:00
2020-04-24 15:38:18 +00:00
img_dir = rawfile_util.img_dir(volume_id)
2020-06-13 23:47:32 +00:00
img_dir.mkdir(exist_ok=True)
img_file = Path(f"{img_dir}/disk.img")
if img_file.exists():
return
2020-04-24 15:38:18 +00:00
rawfile_util.patch_metadata(
volume_id,
{
"schema_version": LATEST_SCHEMA_VERSION,
2020-04-24 15:38:18 +00:00
"volume_id": volume_id,
"created_at": time.time(),
2020-06-13 23:47:32 +00:00
"img_file": img_file.as_posix(),
2020-04-24 15:38:18 +00:00
"size": size,
},
)
2020-04-24 11:48:09 +00:00
run(f"truncate -s {size} {img_file}")
2021-10-02 12:45:17 +00:00
def get_capacity():
import rawfile_util
cap = rawfile_util.get_capacity()
return max(0, cap)
2021-10-02 12:45:17 +00:00
@remote_fn
def expand_rawfile(volume_id, size):
import rawfile_util
from util import run
from consts import RESOURCE_EXHAUSTED_EXIT_CODE
img_file = rawfile_util.img_file(volume_id)
size_inc = size - rawfile_util.metadata(volume_id)["size"]
if size_inc <= 0:
2020-06-13 23:47:32 +00:00
return
if rawfile_util.get_capacity() < size_inc:
exit(RESOURCE_EXHAUSTED_EXIT_CODE)
rawfile_util.patch_metadata(
2021-07-02 14:20:45 +00:00
volume_id,
{"size": size},
)
run(f"truncate -s {size} {img_file}")