From d274022cc15bfee882810d7c33b7875971a5067c Mon Sep 17 00:00:00 2001 From: Gil Bregman Date: Tue, 16 Jan 2024 16:45:05 +0200 Subject: [PATCH] When we get a request to create a listener with a foreign gateway name in an update() do not display an error. Fixes #375 Signed-off-by: Gil Bregman --- control/grpc.py | 12 ++++++++---- tests/test_cli.py | 7 +++++++ tests/test_omap_lock.py | 12 ++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/control/grpc.py b/control/grpc.py index 0e7279c34..ed6e9968d 100644 --- a/control/grpc.py +++ b/control/grpc.py @@ -1643,10 +1643,14 @@ def create_listener_safe(self, request, context): ) self.logger.info(f"create_listener: {ret}") else: - errmsg=f"{create_listener_error_prefix}: Gateway name must match current gateway ({self.gateway_name})" - self.logger.error(f"{errmsg}") - return pb2.req_status(status=errno.ENOENT, - error_message=errmsg) + if context: + errmsg=f"{create_listener_error_prefix}: Gateway name must match current gateway ({self.gateway_name})" + self.logger.error(f"{errmsg}") + return pb2.req_status(status=errno.ENODEV, error_message=errmsg) + else: + errmsg=f"Listener not created as gateway {self.gateway_name} differs from requested gateway {request.gateway_name}" + self.logger.info(f"{errmsg}") + return pb2.req_status(status=0, error_message=errmsg) except Exception as ex: errmsg = f"{create_listener_error_prefix}:\n{ex}" self.logger.error(errmsg) diff --git a/tests/test_cli.py b/tests/test_cli.py index ee66a5aa5..b16c2b392 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -34,6 +34,7 @@ listener_list_ipv6 = [["-g", gateway_name, "-a", addr_ipv6, "-s", "5003", "--adrfam", "ipv6"], ["-g", gateway_name, "-a", addr_ipv6, "-s", "5004", "--adrfam", "IPV6"]] listener_list_discovery = [["-n", discovery_nqn, "-g", gateway_name, "-a", addr, "-s", "5012"]] listener_list_negative_port = [["-g", gateway_name, "-a", addr, "-s", "-2000"]] +listener_list_wrong_gw = [["-g", "WRONG", "-a", addr, "-s", "5015", "-t", "tcp", "-f", "ipv4"]] config = "ceph-nvmeof.conf" @pytest.fixture(scope="module") @@ -445,6 +446,12 @@ def test_create_listener_negative_port(self, caplog, listener, gateway): assert "error: trsvcid value must be positive" in caplog.text assert rc == 2 + @pytest.mark.parametrize("listener", listener_list_wrong_gw) + def test_create_listener_wrong_gateway(self, caplog, listener, gateway): + caplog.clear() + cli(["listener", "add", "--subsystem", subsystem] + listener) + assert f"Gateway name must match current gateway ({gateway_name})" in caplog.text + def test_create_listener_wrong_ha_state(self, caplog, gateway): gw, stub = gateway caplog.clear() diff --git a/tests/test_omap_lock.py b/tests/test_omap_lock.py index 80d49400e..1d2af0781 100644 --- a/tests/test_omap_lock.py +++ b/tests/test_omap_lock.py @@ -266,9 +266,21 @@ def test_multi_gateway_concurrent_changes(config, image, conn_concurrent, caplog else: create_resource_by_index(stubB, i, caplog) assert "failed" not in caplog.text.lower() + listener_req = pb2.create_listener_req(nqn=f"{subsystem_prefix}0", + gateway_name="GatewayAAA", + trtype="TCP", + adrfam="ipv4", + traddr="127.0.0.1", + trsvcid=5001, + auto_ha_state="AUTO_HA_UNSET") + listener_ret = stubA.create_listener(listener_req) + assert listener_ret.status == 0 + assert f"Adding {subsystem} listener at 127.0.0.1:5001: Successful" in caplog.text + caplog.clear() # Let the update some time to bring both gateways to the same page time.sleep(15) + assert f"differs from requested gateway" in caplog.text caplog.clear() subsystem_list_req = pb2.list_subsystems_req() subListA = json.loads(json_format.MessageToJson(