diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml index c2299ed1..6d472528 100644 --- a/.github/workflows/build-container.yml +++ b/.github/workflows/build-container.yml @@ -293,21 +293,22 @@ jobs: make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_set_options -r -1" echo "ℹ️ bdevperf tcp connect ip: $NVMEOF_IP_ADDRESS port: $NVMEOF_IO_PORT nqn: $NQN" make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_attach_controller -b Nvme0 -t tcp -a $NVMEOF_IP_ADDRESS -s $NVMEOF_IO_PORT -f ipv4 -n $NQN -q ${NQN}host -l -1 -o 10" - echo "ℹ️ verify connection list" - conns=$(cephnvmf --output stdio --format json connection list --subsystem $NQN) - echo $conns | grep -q '"status": 0' - echo $conns | grep -q "\"nqn\": \"${NQN}host\"" - echo $conns | grep -q "\"trsvcid\": ${NVMEOF_IO_PORT}" - echo $conns | grep -q "\"traddr\": \"${NVMEOF_IP_ADDRESS}\"" - echo $conns | grep -q "\"adrfam\": \"ipv4\"" - echo $conns | grep -q "\"trtype\": \"TCP\"" - con_cnt=$(echo $conns | xargs -n 1 | grep traddr | wc -l) - if [ $con_cnt -ne 1 ]; then - echo "Number of connections ${con_cnt}, expected 1 list: ${conns}" - exit 1 - fi - echo $conns | grep -q "\"qpairs_count\": 1" - echo $conns | grep -q "\"connected\": true" + #Disable connections list verification until we re-enable it in the code + #echo "ℹ️ verify connection list" + #conns=$(cephnvmf --output stdio --format json connection list --subsystem $NQN) + #echo $conns | grep -q '"status": 0' + #echo $conns | grep -q "\"nqn\": \"${NQN}host\"" + #echo $conns | grep -q "\"trsvcid\": ${NVMEOF_IO_PORT}" + #echo $conns | grep -q "\"traddr\": \"${NVMEOF_IP_ADDRESS}\"" + #echo $conns | grep -q "\"adrfam\": \"ipv4\"" + #echo $conns | grep -q "\"trtype\": \"TCP\"" + #con_cnt=$(echo $conns | xargs -n 1 | grep traddr | wc -l) + #if [ $con_cnt -ne 1 ]; then + # echo "Number of connections ${con_cnt}, expected 1 list: ${conns}" + # exit 1 + #fi + #echo $conns | grep -q "\"qpairs_count\": 1" + #echo $conns | grep -q "\"connected\": true" echo "ℹ️ bdevperf perform_tests" eval $(make run SVC=bdevperf OPTS="--entrypoint=env" | grep BDEVPERF_TEST_DURATION | tr -d '\n\r' ) timeout=$(expr $BDEVPERF_TEST_DURATION \* 2) diff --git a/ceph-nvmeof.conf b/ceph-nvmeof.conf index f94e91b9..50c01fec 100644 --- a/ceph-nvmeof.conf +++ b/ceph-nvmeof.conf @@ -29,6 +29,7 @@ enable_spdk_discovery_controller = False #allowed_consecutive_spdk_ping_failures = 1 #spdk_ping_interval_in_seconds = 2.0 #ping_spdk_under_lock = False +#disable_list_connections = True [gateway-logs] log_level=debug diff --git a/control/grpc.py b/control/grpc.py index 78f500de..84c50b9e 100644 --- a/control/grpc.py +++ b/control/grpc.py @@ -134,6 +134,7 @@ def __init__(self, config: GatewayConfig, gateway_state: GatewayStateHandler, rp self.verify_nqns = self.config.getboolean_with_default("gateway", "verify_nqns", True) self.gateway_group = self.config.get_with_default("gateway", "group", "") self.gateway_pool = self.config.get_with_default("ceph", "pool", "") + self.disable_list_connections = self.config.getboolean_with_default("gateway", "disable_list_connections", True) self.ana_map = defaultdict(dict) self.cluster_nonce = {} self.bdev_cluster = {} @@ -1959,6 +1960,11 @@ def list_connections_safe(self, request, context): peer_msg = self.get_peer_message(context) log_level = logging.INFO if context else logging.DEBUG self.logger.log(log_level, f"Received request to list connections for {request.subsystem}, context: {context}{peer_msg}") + if self.disable_list_connections: + errmsg = f"List connections is disabled, returning an empty list" + self.logger.log(log_level, errmsg) + return pb2.connections_info(status = errno.EADDRNOTAVAIL, error_message = errmsg, + subsystem_nqn=request.subsystem, connections=[]) try: qpair_ret = rpc_nvmf.nvmf_subsystem_get_qpairs(self.spdk_rpc_client, nqn=request.subsystem) self.logger.debug(f"list_connections get_qpairs: {qpair_ret}") @@ -2296,7 +2302,7 @@ def delete_listener_safe(self, request, context): self.logger.error(errmsg) return pb2.req_status(status=errno.EINVAL, error_message=errmsg) - if not request.force: + if not request.force and not self.disable_list_connections: list_conn_req = pb2.list_connections_req(subsystem=request.nqn) list_conn_ret = self.list_connections_safe(list_conn_req, context) if list_conn_ret.status != 0: