Skip to content

Commit e2b941f

Browse files
File system adapters (#204)
* file_system_adapters: update environment * file_system_adapters: new adapters for local storage access * file_system_adapters: use new models and adapters * file_system_adapters: update tests * file_system_adapters: add gitkeep to test directory * Update job_executor/adapter/fs/datastore_files.py Co-authored-by: pawbu <pawbu@users.noreply.github.com> --------- Co-authored-by: pawbu <pawbu@users.noreply.github.com>
1 parent 390fbcd commit e2b941f

31 files changed

+897
-751
lines changed

.test.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
INPUT_DIR=tests/resources/datastores/TEST_DATASTORE_input
2-
WORKING_DIR=tests/resources/datastores/TEST_DATASTORE_working
31
DATASTORE_DIR=tests/resources/datastores/TEST_DATASTORE
4-
RSA_KEYS_DIRECTORY=tests/resources/rsa_keys
52
PSEUDONYM_SERVICE_URL=http://mock.pseudonym.service
63
DATASTORE_API_URL=http://mock.job.service
74
NUMBER_OF_WORKERS=4

job_executor/adapter/datastore_api/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from pydantic import model_validator
55

6-
from job_executor.adapter.local_storage.models.datastore_versions import (
6+
from job_executor.adapter.fs.models.datastore_versions import (
77
DatastoreVersion,
88
)
99
from job_executor.common.models import CamelModel
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import shutil
2+
from pathlib import Path
3+
from typing import Protocol
4+
5+
from job_executor.adapter.fs.datastore_files import DatastoreDirectory
6+
from job_executor.adapter.fs.input_files import InputDirectory
7+
from job_executor.adapter.fs.working_files import WorkingDirectory
8+
9+
10+
class FileSystemAdapter(Protocol):
11+
datastore_dir: DatastoreDirectory
12+
working_dir: WorkingDirectory
13+
input_dir: InputDirectory
14+
15+
def move_working_dir_parquet_to_datastore(
16+
self, dataset_name: str
17+
) -> None: ...
18+
19+
20+
class LocalStorageAdapter:
21+
datastore_dir: DatastoreDirectory
22+
working_dir: WorkingDirectory
23+
input_dir: InputDirectory
24+
25+
def __init__(self, datastore_dir_path: Path) -> None:
26+
self.datastore_dir = DatastoreDirectory(datastore_dir_path)
27+
self.working_dir = WorkingDirectory(
28+
Path(f"{datastore_dir_path}_working")
29+
)
30+
self.input_dir = InputDirectory(Path(f"{datastore_dir_path}_input"))
31+
32+
def move_working_dir_parquet_to_datastore(self, dataset_name: str) -> None:
33+
"""
34+
Moves the given parquet DRAFT file from the working directory to
35+
the appropriate datastore sub directory.
36+
37+
* dataset_name: str - name of dataset
38+
"""
39+
working_dir_parquet_path = self.working_dir._get_draft_parquet_path(
40+
dataset_name
41+
)
42+
shutil.move(
43+
working_dir_parquet_path,
44+
(
45+
self.datastore_dir.data_dir
46+
/ dataset_name
47+
/ working_dir_parquet_path.parts[-1]
48+
),
49+
)

0 commit comments

Comments
 (0)