A bunch of usability issues with the GUI
Manage nodes -> Detailed Status
- If node ID is 0 or a negative integer, we get this error (should be something more understandable):
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/src/virtmat/middleware/engine/wfengine_jupyter.py:599, in WFEnginejupyter.status_detailed_button_clicked(self, bvar)
597 clear_consoleoutput()
598 with output_status_button:
--> 599 display(JSON(self.wfe.status_detail(firework_id.value)))
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/src/virtmat/middleware/engine/wfengine.py:170, in WFEngine.status_detail(self, *fw_ids)
168 projection = {'_id': False}
169 fw_dict = self.launchpad.fireworks.find_one(fw_query, projection)
--> 170 fw_dict['launches'] = get_launches(fw_dict['launches'])
171 fw_dict['archived_launches'] = get_launches(fw_dict['archived_launches'])
172 fw_list.append(fw_dict)
TypeError: 'NoneType' object is not subscriptable
-
Even when node not in the engine, its status is shown for example "the default" id 1 - there should be no default id and the status should not be shown if the node is not managed in the engine.
-
If the id is invalid a huge error with trace is shown - we need only the message!
-
Status in "Manage workflows" and Status in "Manage nodes" should be different
-
Change the "fw id" input label to "node ID"
"Manage engine" -> "Save engine"
If no file is selected this error occurs:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/src/virtmat/middleware/engine/wfengine_jupyter.py:468, in dump_engine_button_clicked(self, bvar)
466 clear_output()
467 if self.wfe:
--> 468 try:
469 self.wfe.to_file(filename=engine_file.value)
470 except (FileNotFoundError, IsADirectoryError) as error:
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/jupyter-tensorflow-2022-12-05/lib64/python3.8/site-packages/fireworks/utilities/fw_serializers.py:272, in FWSerializable.to_file(self, filename, f_format, **kwargs)
264 """
265 Write a serialization of this object to a file.
266
(...)
269 f_format (str): serialization format, default checks the filename extension
270 """
271 if f_format is None:
--> 272 f_format = filename.split(".")[-1]
273 with open(filename, "w", **ENCODING_PARAMS) as f:
274 f.write(self.to_format(f_format=f_format, **kwargs))
AttributeError: 'NoneType' object has no attribute 'split'
"Manage engine" -> "Load engine"
If no name is set this error occurs:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/src/virtmat/middleware/engine/wfengine_jupyter.py:448, in WFEnginejupyter.resume_engine_button_clicked(self, bvar)
446 eng_class = WFEngineRemote if remote_cluster.value else WFEngine
447 try:
--> 448 self.wfe = eng_class.from_file(filename=engine_file.value)
449 except (FileNotFoundError, IsADirectoryError) as error:
450 print('Specify a valid engine filename or path.')
File /pfs/data5/home/kit/scc/jk7683/vre-middleware/jupyter-tensorflow-2022-12-05/lib64/python3.8/site-packages/fireworks/utilities/fw_serializers.py:289, in FWSerializable.from_file(cls, filename, f_format)
278 """
279 Load a serialization of this object from a file.
280
(...)
286 FWSerializable
287 """
288 if f_format is None:
--> 289 f_format = filename.split(".")[-1]
290 with open(filename, "r", **ENCODING_PARAMS) as f:
291 return cls.from_format(f.read(), f_format=f_format)
AttributeError: 'NoneType' object has no attribute 'split'