Skip to content

Commit 41a88dc

Browse files
authored
Merge pull request #316 from gbregman/devel
Add RPC locks to new SPDK log CLI commands and add them to CLI test
2 parents 10ab62d + 7cb3cdc commit 41a88dc

File tree

2 files changed

+64
-4
lines changed

2 files changed

+64
-4
lines changed

control/grpc.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ def _grpc_function_with_lock(self, func, request, context):
126126
return func(request, context)
127127

128128
def execute_grpc_function(self, func, request, context):
129+
"""This functions handles both the RPC and OMAP locks. It first takes the OMAP lock and then calls a
130+
help function which takes the RPC lock and call the GRPC function passes as a parameter. So, the GRPC
131+
function runs with both the OMAP and RPC locks taken
132+
"""
129133
return self.omap_lock.execute_omap_locking_function(self._grpc_function_with_lock, func, request, context)
130134

131135
def create_bdev_safe(self, request, context=None):
@@ -781,7 +785,7 @@ def get_subsystems(self, request, context):
781785
with self.rpc_lock:
782786
return self.get_subsystems_safe(request, context)
783787

784-
def get_spdk_nvmf_log_flags_and_level(self, request, context):
788+
def get_spdk_nvmf_log_flags_and_level_safe(self, request, context):
785789
"""Gets spdk nvmf log flags, log level and log print level"""
786790
self.logger.info(f"Received request to get SPDK nvmf log flags and level")
787791
try:
@@ -803,7 +807,11 @@ def get_spdk_nvmf_log_flags_and_level(self, request, context):
803807
return pb2.spdk_nvmf_log_flags_and_level_info(
804808
flags_level=json.dumps(flags_log_level))
805809

806-
def set_spdk_nvmf_logs(self, request, context):
810+
def get_spdk_nvmf_log_flags_and_level(self, request, context):
811+
with self.rpc_lock:
812+
return self.get_spdk_nvmf_log_flags_and_level_safe(request, context)
813+
814+
def set_spdk_nvmf_logs_safe(self, request, context):
807815
"""Enables spdk nvmf logs"""
808816
self.logger.info(f"Received request to set SPDK nvmf logs")
809817
try:
@@ -831,7 +839,11 @@ def set_spdk_nvmf_logs(self, request, context):
831839

832840
return pb2.req_status(status=all(ret))
833841

834-
def disable_spdk_nvmf_logs(self, request, context):
842+
def set_spdk_nvmf_logs(self, request, context):
843+
with self.rpc_lock:
844+
return self.set_spdk_nvmf_logs_safe(request, context)
845+
846+
def disable_spdk_nvmf_logs_safe(self, request, context):
835847
"""Disables spdk nvmf logs"""
836848
self.logger.info(f"Received request to disable SPDK nvmf logs")
837849
try:
@@ -848,4 +860,8 @@ def disable_spdk_nvmf_logs(self, request, context):
848860
context.set_details(f"{ex}")
849861
return pb2.req_status()
850862

851-
return pb2.req_status(status=all(ret))
863+
return pb2.req_status(status=all(ret))
864+
865+
def disable_spdk_nvmf_logs(self, request, context):
866+
with self.rpc_lock:
867+
return self.disable_spdk_nvmf_logs_safe(request, context)

tests/test_cli.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,47 @@ def test_delete_subsystem_ana(self, caplog, gateway):
190190
cli(["delete_subsystem", "-n", subsystem])
191191
assert "Failed to delete" not in caplog.text
192192

193+
class TestSDKLOg:
194+
def test_log_flags(self, caplog, gateway):
195+
caplog.clear()
196+
cli(["get_spdk_nvmf_log_flags_and_level"])
197+
assert '"nvmf": false' in caplog.text
198+
assert '"nvmf_tcp": false' in caplog.text
199+
assert '"log_level": "NOTICE"' in caplog.text
200+
assert '"log_print_level": "INFO"' in caplog.text
201+
caplog.clear()
202+
cli(["set_spdk_nvmf_logs", "-f"])
203+
assert "Set SPDK nvmf logs : True" in caplog.text
204+
caplog.clear()
205+
cli(["get_spdk_nvmf_log_flags_and_level"])
206+
assert '"nvmf": true' in caplog.text
207+
assert '"nvmf_tcp": true' in caplog.text
208+
assert '"log_level": "NOTICE"' in caplog.text
209+
assert '"log_print_level": "INFO"' in caplog.text
210+
caplog.clear()
211+
cli(["set_spdk_nvmf_logs", "-f", "-l", "DEBUG"])
212+
assert "Set SPDK nvmf logs : True" in caplog.text
213+
caplog.clear()
214+
cli(["get_spdk_nvmf_log_flags_and_level"])
215+
assert '"nvmf": true' in caplog.text
216+
assert '"nvmf_tcp": true' in caplog.text
217+
assert '"log_level": "DEBUG"' in caplog.text
218+
assert '"log_print_level": "INFO"' in caplog.text
219+
caplog.clear()
220+
cli(["set_spdk_nvmf_logs", "-f", "-p", "ERROR"])
221+
assert "Set SPDK nvmf logs : True" in caplog.text
222+
caplog.clear()
223+
cli(["get_spdk_nvmf_log_flags_and_level"])
224+
assert '"nvmf": true' in caplog.text
225+
assert '"nvmf_tcp": true' in caplog.text
226+
assert '"log_level": "DEBUG"' in caplog.text
227+
assert '"log_print_level": "ERROR"' in caplog.text
228+
caplog.clear()
229+
cli(["disable_spdk_nvmf_logs"])
230+
assert "Disable SPDK nvmf logs: True" in caplog.text
231+
caplog.clear()
232+
cli(["get_spdk_nvmf_log_flags_and_level"])
233+
assert '"nvmf": false' in caplog.text
234+
assert '"nvmf_tcp": false' in caplog.text
235+
assert '"log_level": "NOTICE"' in caplog.text
236+
assert '"log_print_level": "INFO"' in caplog.text

0 commit comments

Comments
 (0)