From f960b612e6793c87dfb6c784f6ca27c1db22ce49 Mon Sep 17 00:00:00 2001 From: thomas-bc Date: Wed, 10 Jan 2024 11:51:07 -0800 Subject: [PATCH] Fix permission check issues --- src/fprime_gds/common/pipeline/files.py | 9 +++++---- src/fprime_gds/common/pipeline/standard.py | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/fprime_gds/common/pipeline/files.py b/src/fprime_gds/common/pipeline/files.py index f88b475c..ff2ee95e 100644 --- a/src/fprime_gds/common/pipeline/files.py +++ b/src/fprime_gds/common/pipeline/files.py @@ -7,7 +7,7 @@ @author mstarch """ -import os +from pathlib import Path import fprime_gds.common.files.downlinker import fprime_gds.common.files.uplinker @@ -43,10 +43,11 @@ def setup_file_handling( ) file_decoder.register(self.__downlinker) distributor.register("FW_PACKET_HAND", self.__uplinker) - if not os.access(down_store, os.W_OK): + try: + Path(down_store).mkdir(parents=True, exist_ok=True) + except PermissionError: raise PermissionError( - f"{down_store} is not writable. Downlinker not be able to save files. " - "Fix permissions or change storage directory with --file-storage-directory." + f"{down_store} is not writable. Fix permissions or change storage directory with --file-storage-directory." ) @property diff --git a/src/fprime_gds/common/pipeline/standard.py b/src/fprime_gds/common/pipeline/standard.py index 242f12ae..cc745c45 100644 --- a/src/fprime_gds/common/pipeline/standard.py +++ b/src/fprime_gds/common/pipeline/standard.py @@ -72,6 +72,13 @@ def setup( # File storage configuration for uplink and downlink self.up_store = Path(file_store) / "fprime-uplink" self.down_store = Path(file_store) / "fprime-downlink" + try: + self.down_store.mkdir(parents=True, exist_ok=True) + self.up_store.mkdir(parents=True, exist_ok=True) + except PermissionError: + raise PermissionError( + f"{file_store} is not writable. Fix permissions or change storage directory with --file-storage-directory." + ) self.dictionary_path = Path(dictionary) # Loads the distributor and client socket self.distributor = fprime_gds.common.distributor.distributor.Distributor(config)