Skip to content

Commit c9f7dec

Browse files
authored
Merge pull request #856 from gbregman/devel
Show actual NQN in CLI when adding a subsystem
2 parents b62fa34 + f7cff15 commit c9f7dec

File tree

4 files changed

+30
-13
lines changed

4 files changed

+30
-13
lines changed

control/cli.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,11 +678,20 @@ def subsystem_add(self, args):
678678
try:
679679
ret = self.stub.create_subsystem(req)
680680
except Exception as ex:
681-
ret = pb2.req_status(status = errno.EINVAL, error_message = f"Failure adding subsystem {args.subsystem}:\n{ex}")
681+
ret = pb2.subsys_status(status = errno.EINVAL, error_message = f"Failure adding subsystem {args.subsystem}:\n{ex}",
682+
nqn = args.subsystem)
683+
684+
new_nqn = ""
685+
try:
686+
new_nqn = ret.nqn
687+
except Exception as ex: # In case of an old gateway the returned value wouldn't have the nqn field
688+
pass
689+
if not new_nqn:
690+
new_nqn = args.subsystem
682691

683692
if args.format == "text" or args.format == "plain":
684693
if ret.status == 0:
685-
out_func(f"Adding subsystem {args.subsystem}: Successful")
694+
out_func(f"Adding subsystem {new_nqn}: Successful")
686695
else:
687696
err_func(f"{ret.error_message}")
688697
elif args.format == "json" or args.format == "yaml":

control/grpc.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -641,30 +641,30 @@ def create_subsystem_safe(self, request, context):
641641
if not request.enable_ha:
642642
errmsg = f"{create_subsystem_error_prefix}: HA must be enabled for subsystems"
643643
self.logger.error(f"{errmsg}")
644-
return pb2.req_status(status = errno.EINVAL, error_message = errmsg)
644+
return pb2.subsys_status(status = errno.EINVAL, error_message = errmsg, nqn = request.subsystem_nqn)
645645

646646
if not request.subsystem_nqn:
647647
errmsg = f"Failure creating subsystem, missing subsystem NQN"
648648
self.logger.error(f"{errmsg}")
649-
return pb2.req_status(status = errno.EINVAL, error_message = errmsg)
649+
return pb2.subsys_status(status = errno.EINVAL, error_message = errmsg, nqn = request.subsystem_nqn)
650650

651651
errmsg = ""
652652
if not GatewayState.is_key_element_valid(request.subsystem_nqn):
653653
errmsg = f"{create_subsystem_error_prefix}: Invalid NQN \"{request.subsystem_nqn}\", contains invalid characters"
654654
self.logger.error(f"{errmsg}")
655-
return pb2.req_status(status = errno.EINVAL, error_message = errmsg)
655+
return pb2.subsys_status(status = errno.EINVAL, error_message = errmsg, nqn = request.subsystem_nqn)
656656

657657
if self.verify_nqns:
658658
rc = GatewayUtils.is_valid_nqn(request.subsystem_nqn)
659659
if rc[0] != 0:
660660
errmsg = f"{create_subsystem_error_prefix}: {rc[1]}"
661661
self.logger.error(f"{errmsg}")
662-
return pb2.req_status(status = rc[0], error_message = errmsg)
662+
return pb2.subsys_status(status = rc[0], error_message = errmsg, nqn = request.subsystem_nqn)
663663

664664
if GatewayUtils.is_discovery_nqn(request.subsystem_nqn):
665665
errmsg = f"{create_subsystem_error_prefix}: Can't create a discovery subsystem"
666666
self.logger.error(f"{errmsg}")
667-
return pb2.req_status(status = errno.EINVAL, error_message = errmsg)
667+
return pb2.subsys_status(status = errno.EINVAL, error_message = errmsg, nqn = request.subsystem_nqn)
668668

669669
if context:
670670
if request.no_group_append or not self.gateway_group:
@@ -701,7 +701,7 @@ def create_subsystem_safe(self, request, context):
701701
if subsys_already_exists or subsys_using_serial:
702702
errmsg = f"{create_subsystem_error_prefix}: {errmsg}"
703703
self.logger.error(f"{errmsg}")
704-
return pb2.req_status(status=errno.EEXIST, error_message=errmsg)
704+
return pb2.subsys_status(status=errno.EEXIST, error_message=errmsg, nqn = request.subsystem_nqn)
705705
ret = rpc_nvmf.nvmf_create_subsystem(
706706
self.spdk_rpc_client,
707707
nqn=request.subsystem_nqn,
@@ -722,12 +722,12 @@ def create_subsystem_safe(self, request, context):
722722
if resp:
723723
status = resp["code"]
724724
errmsg = f"{create_subsystem_error_prefix}: {resp['message']}"
725-
return pb2.req_status(status=status, error_message=errmsg)
725+
return pb2.subsys_status(status=status, error_message=errmsg, nqn = request.subsystem_nqn)
726726

727727
# Just in case SPDK failed with no exception
728728
if not ret:
729729
self.logger.error(create_subsystem_error_prefix)
730-
return pb2.req_status(status=errno.EINVAL, error_message=create_subsystem_error_prefix)
730+
return pb2.subsys_status(status=errno.EINVAL, error_message=create_subsystem_error_prefix, nqn = request.subsystem_nqn)
731731

732732
if context:
733733
# Update gateway state
@@ -739,9 +739,9 @@ def create_subsystem_safe(self, request, context):
739739
errmsg = f"Error persisting subsystem {request.subsystem_nqn}"
740740
self.logger.exception(errmsg)
741741
errmsg = f"{errmsg}:\n{ex}"
742-
return pb2.req_status(status=errno.EINVAL, error_message=errmsg)
742+
return pb2.subsys_status(status=errno.EINVAL, error_message=errmsg, nqn = request.subsystem_nqn)
743743

744-
return pb2.req_status(status=0, error_message=os.strerror(0))
744+
return pb2.subsys_status(status=0, error_message=os.strerror(0), nqn = request.subsystem_nqn)
745745

746746
def create_subsystem(self, request, context=None):
747747
return self.execute_grpc_function(self.create_subsystem_safe, request, context)

control/proto/gateway.proto

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ service Gateway {
3737
rpc namespace_add(namespace_add_req) returns (nsid_status) {}
3838

3939
// Creates a subsystem
40-
rpc create_subsystem(create_subsystem_req) returns(req_status) {}
40+
rpc create_subsystem(create_subsystem_req) returns(subsys_status) {}
4141

4242
// Deletes a subsystem
4343
rpc delete_subsystem(delete_subsystem_req) returns(req_status) {}
@@ -288,6 +288,12 @@ message req_status {
288288
string error_message = 2;
289289
}
290290

291+
message subsys_status {
292+
int32 status = 1;
293+
string error_message = 2;
294+
string nqn = 3;
295+
}
296+
291297
message nsid_status {
292298
int32 status = 1;
293299
string error_message = 2;

tests/test_cli.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,7 @@ class TestSubsysWithGroupName:
972972
def test_create_subsys_group_name(self, caplog, gateway):
973973
caplog.clear()
974974
cli(["subsystem", "add", "--subsystem", subsystem3])
975+
assert f"Adding subsystem {subsystem3}.{group_name}: Successful" in caplog.text
975976
assert f"Subsystem NQN was changed to {subsystem3}.{group_name}, adding the group name" in caplog.text
976977
assert f"create_subsystem {subsystem3}.{group_name}: True" in caplog.text
977978
assert f"create_subsystem {subsystem3}: True" not in caplog.text
@@ -980,6 +981,7 @@ def test_create_subsys_group_name(self, caplog, gateway):
980981
assert f'"nqn": "{subsystem3}"' not in caplog.text
981982
caplog.clear()
982983
cli(["subsystem", "add", "--subsystem", subsystem4, "--no-group-append"])
984+
assert f"Adding subsystem {subsystem4}: Successful" in caplog.text
983985
assert f"Subsystem NQN will not be changed" in caplog.text
984986
assert f"create_subsystem {subsystem4}.{group_name}: True" not in caplog.text
985987
assert f"create_subsystem {subsystem4}: True" in caplog.text

0 commit comments

Comments
 (0)