From 3f09eb9ad441db31a6caefa29471a5f21e001851 Mon Sep 17 00:00:00 2001 From: Patrik Meijer Date: Wed, 23 Jul 2025 10:34:02 -0400 Subject: [PATCH 1/2] Add get_file_metadata on python plugin-base --- python/webgme_bindings/webgme_bindings/pluginbase.py | 12 ++++++++++++ src/corezmq.js | 6 ++++++ src/plugins/PythonFileIO/PythonFileIO/__init__.py | 3 +++ 3 files changed, 21 insertions(+) diff --git a/python/webgme_bindings/webgme_bindings/pluginbase.py b/python/webgme_bindings/webgme_bindings/pluginbase.py index 5212c79..6d6e263 100644 --- a/python/webgme_bindings/webgme_bindings/pluginbase.py +++ b/python/webgme_bindings/webgme_bindings/pluginbase.py @@ -154,6 +154,18 @@ def create_message(self, node, message, severity='info'): """ return self._send({'name': 'createMessage', 'args': [node, message, severity]}) + def get_file_metadata(self, metadata_hash): + """ + Retrieves the metadata of the file from blob storage. + + :param metadata_hash: the "id" of the file to retrieve. + :type metadata_hash: str + :returns: The metadata of the file. + :rtype: dict + :raises JSError: The result of the execution. + """ + return self._send({'name': 'getFileMetadata', 'args': [metadata_hash]}) + def get_artifact(self, metadata_hash): """ Retrieves all the files in the artifact from the blob storage. diff --git a/src/corezmq.js b/src/corezmq.js index 3acb1a4..4e09b44 100644 --- a/src/corezmq.js +++ b/src/corezmq.js @@ -753,6 +753,12 @@ function CoreZMQ(project, core, mainLogger, opts) { .then((node) => { plugin[req.name](node, req.args[1], req.args[2]); }); + case 'getFileMetadata': + try { + return plugin.blobClient.getMetadata(req.args[0]); + } catch (e) { + return Q.reject(e); + } case 'getFile': case 'getArtifact': try { diff --git a/src/plugins/PythonFileIO/PythonFileIO/__init__.py b/src/plugins/PythonFileIO/PythonFileIO/__init__.py index 0361990..3929146 100644 --- a/src/plugins/PythonFileIO/PythonFileIO/__init__.py +++ b/src/plugins/PythonFileIO/PythonFileIO/__init__.py @@ -35,6 +35,9 @@ def main(self): self.result_set_success(False) self.result_set_error('simple binary content mismatch') + file_metadata = self.get_file_metadata(bin_hash) + logger.info(file_metadata) + arti_hash = self.add_artifact('myArti', {'text.txt':'just because', 'heart.png':binary_content}) retrieved_content_from_arti = self.get_bin_file(arti_hash,'heart.png') if binary_content != retrieved_content_from_arti: From 789925b19b0cea50b3aed9598fd636048e263564 Mon Sep 17 00:00:00 2001 From: Patrik Meijer Date: Wed, 23 Jul 2025 10:49:05 -0400 Subject: [PATCH 2/2] Add a check in the test --- src/plugins/PythonFileIO/PythonFileIO/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/PythonFileIO/PythonFileIO/__init__.py b/src/plugins/PythonFileIO/PythonFileIO/__init__.py index 3929146..f4bd0da 100644 --- a/src/plugins/PythonFileIO/PythonFileIO/__init__.py +++ b/src/plugins/PythonFileIO/PythonFileIO/__init__.py @@ -37,6 +37,10 @@ def main(self): file_metadata = self.get_file_metadata(bin_hash) logger.info(file_metadata) + if file_metadata['name'] != 'heart.png': + self.logger.error('issue in file metadata') + self.result_set_success(False) + self.result_set_error('file metadata mismatch') arti_hash = self.add_artifact('myArti', {'text.txt':'just because', 'heart.png':binary_content}) retrieved_content_from_arti = self.get_bin_file(arti_hash,'heart.png') @@ -44,5 +48,3 @@ def main(self): self.logger.error('issue in complex blob') self.result_set_success(False) self.result_set_error('embedded binary content mismatch') - -