Skip to content

Commit

Permalink
When we get a request to create a listener with a foreign gateway nam…
Browse files Browse the repository at this point in the history
…e in an update() do not display an error.

Fixes #375

Signed-off-by: Gil Bregman <gbregman@il.ibm.com>
  • Loading branch information
gbregman committed Jan 16, 2024
1 parent 86784d0 commit d274022
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
12 changes: 8 additions & 4 deletions control/grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
7 changes: 7 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -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()
Expand Down
12 changes: 12 additions & 0 deletions tests/test_omap_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down

0 comments on commit d274022

Please sign in to comment.