From 9348c53c7297d6ea94d297ed534bb7e93b2f4a09 Mon Sep 17 00:00:00 2001 From: Nayane Fernandes <143632290+ansnfernand@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:13:44 +0200 Subject: [PATCH 1/2] New API: delete_all_ict_fixtures() --- src/ansys/sherlock/core/errors.py | 12 ++++++ src/ansys/sherlock/core/layer.py | 62 +++++++++++++++++++++++++++++++ tests/test_layer.py | 43 +++++++++++++++++++++ 3 files changed, 117 insertions(+) diff --git a/src/ansys/sherlock/core/errors.py b/src/ansys/sherlock/core/errors.py index 322026f8c..85611932d 100644 --- a/src/ansys/sherlock/core/errors.py +++ b/src/ansys/sherlock/core/errors.py @@ -1049,3 +1049,15 @@ def __init__(self, message): def __str__(self): """Format error message.""" return f"Delete mount points error: {self.message}" + + +class SherlockDeleteAllICTFixturesError(Exception): + """Contains the error raised when the ict fixtures cannot be deleted.""" + + def __init__(self, message): + """Initialize error message.""" + self.message = message + + def __str__(self): + """Format error message.""" + return f"Delete ict fixtures error: {self.message}" diff --git a/src/ansys/sherlock/core/layer.py b/src/ansys/sherlock/core/layer.py index e116d6c49..6f7786c7d 100644 --- a/src/ansys/sherlock/core/layer.py +++ b/src/ansys/sherlock/core/layer.py @@ -19,6 +19,7 @@ from ansys.sherlock.core import LOG from ansys.sherlock.core.errors import ( SherlockAddPottingRegionError, + SherlockDeleteAllICTFixturesError, SherlockDeleteAllMountPointsError, SherlockUpdateMountPointsByFileError, ) @@ -361,3 +362,64 @@ def delete_all_mount_points(self, project, cca_name): raise e return response.value + + def delete_all_ict_fixtures(self, project, cca_name): + """Delete all ict fixtures for a CCA. + + Parameters + ---------- + project : str + Name of the Sherlock project. + cca_name : str + Name of the CCA. + + Returns + ------- + int + Status code of the response. 0 for success. + + Examples + -------- + >>> from ansys.sherlock.core.launcher import launch_sherlock + >>> sherlock = launch_sherlock() + >>> sherlock.project.import_odb_archive( + "ODB++ Tutorial.tgz", + True, + True, + True, + True, + project="Test", + cca_name="Card", + ) + >>> sherlock.layer.update_ict_fixtures_by_file( + "Test", + "Card", + "ICTFixturesImport.csv", + ) + >>> sherlock.layer.delete_all_ict_fixtures("Test", "Card") + """ + try: + if project == "": + raise SherlockDeleteAllICTFixturesError(message="Project name is invalid.") + if cca_name == "": + raise SherlockDeleteAllICTFixturesError(message="CCA name is invalid.") + + if not self._is_connection_up(): + LOG.error("There is no connection to a gRPC service.") + return + + request = SherlockLayerService_pb2.DeleteAllICTFixturesRequest( + project=project, + ccaName=cca_name, + ) + + response = self.stub.deleteAllICTFixtures(request) + + if response.value == -1: + raise SherlockDeleteAllICTFixturesError(message=response.message) + + except SherlockDeleteAllICTFixturesError as e: + LOG.error(str(e)) + raise e + + return response.value diff --git a/tests/test_layer.py b/tests/test_layer.py index fb3dd937b..d5fba74dd 100644 --- a/tests/test_layer.py +++ b/tests/test_layer.py @@ -6,6 +6,7 @@ from ansys.sherlock.core.errors import ( SherlockAddPottingRegionError, + SherlockDeleteAllICTFixturesError, SherlockDeleteAllMountPointsError, SherlockUpdateMountPointsByFileError, ) @@ -20,6 +21,7 @@ def test_all(): layer = Layer(channel) helper_test_update_mount_points_by_file(layer) + helper_test_delete_all_ict_fixtures(layer) helper_test_delete_all_mount_points(layer) helper_test_add_potting_region(layer) @@ -346,5 +348,46 @@ def helper_test_delete_all_mount_points(layer): pytest.fail(e.message) +def helper_test_delete_all_ict_fixtures(layer): + """Test delete_all_ict_fixtures API.""" + try: + layer.delete_all_ict_fixtures( + "", + "CCA", + ) + pytest.fail("No exception thrown when using an invalid parameter") + except SherlockDeleteAllICTFixturesError as e: + assert str(e) == "Delete ict fixtures error: Project name is invalid." + + try: + layer.delete_all_ict_fixtures( + "Tutorial Project", + "", + ) + pytest.fail("No exception thrown when using an invalid parameter") + except SherlockDeleteAllICTFixturesError as e: + assert str(e) == "Delete ict fixtures error: CCA name is invalid." + + if layer._is_connection_up(): + try: + layer.delete_all_ict_fixtures( + "Tutorial Project", + "Invalid CCA", + ) + pytest.fail("No exception thrown when using an invalid parameter") + except Exception as e: + assert type(e) == SherlockDeleteAllICTFixturesError + + try: + result = layer.delete_all_ict_fixtures( + "Tutorial Project", + "Main Board", + ) + assert result == 0 + + except Exception as e: + pytest.fail(e.message) + + if __name__ == "__main__": test_all() From f8cacbe6c5a180657edbb09ba974eec786f5c33b Mon Sep 17 00:00:00 2001 From: Nayane Fernandes <143632290+ansnfernand@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:23:01 +0200 Subject: [PATCH 2/2] Update after feedback --- src/ansys/sherlock/core/layer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/sherlock/core/layer.py b/src/ansys/sherlock/core/layer.py index 6f7786c7d..48cf2f913 100644 --- a/src/ansys/sherlock/core/layer.py +++ b/src/ansys/sherlock/core/layer.py @@ -364,7 +364,7 @@ def delete_all_mount_points(self, project, cca_name): return response.value def delete_all_ict_fixtures(self, project, cca_name): - """Delete all ict fixtures for a CCA. + """Delete all ICT fixtures for a CCA. Parameters ----------