]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: Handle daemon colocation port for cluster qos port 61826/head
authorShweta Bhosale <Shweta.Bhosale1@ibm.com>
Mon, 27 Apr 2026 11:43:10 +0000 (17:13 +0530)
committerShweta Bhosale <Shweta.Bhosale1@ibm.com>
Mon, 27 Apr 2026 14:09:54 +0000 (19:39 +0530)
Fixes: https://tracker.ceph.com/issues/69861
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
src/pybind/mgr/cephadm/services/nfs.py
src/pybind/mgr/cephadm/tests/services/test_nfs.py
src/python-common/ceph/deployment/service_spec.py
src/python-common/ceph/tests/test_service_spec.py

index 0307be5e189a9427d52da26ad5fff5a2c2351e2e..aef299ef6d2a96ad89330bbeab5899151b43be55 100644 (file)
@@ -231,8 +231,8 @@ class NFSService(CephService):
 
         # generate the ganesha config
         rdma_port = None
-        if spec.enable_rdma and daemon_spec.ports and len(daemon_spec.ports) > 2:
-            rdma_port = daemon_spec.ports[2]
+        if spec.enable_rdma and daemon_spec.ports and len(daemon_spec.ports) > 3:
+            rdma_port = daemon_spec.ports[3]
         elif spec.enable_rdma:
             rdma_port = spec.rdma_port
 
index ee65c87464e13efd8e74472817f304c4910b1a6f..376fdea25e30cc834b600cec94fe7d796c19be73 100644 (file)
@@ -598,8 +598,8 @@ def test_nfs_colocation_ports_validation():
         port=2049,
         monitoring_port=9587,
         colocation_ports=[
-            {'data_port': 3049, 'monitoring_port': 9588},
-            {'data_port': 4049, 'monitoring_port': 9589}
+            {'data_port': 3049, 'monitoring_port': 9588, 'cluster_qos_port': 31312},
+            {'data_port': 4049, 'monitoring_port': 9589, 'cluster_qos_port': 31313}
         ]
     )
     spec.validate()  # Should not raise
@@ -611,7 +611,7 @@ def test_nfs_colocation_ports_validation():
             placement=PlacementSpec(count=4),
             port=2049,
             monitoring_port=9587,
-            colocation_ports=[{'data_port': 3049, 'monitoring_port': 9588}]
+            colocation_ports=[{'data_port': 3049, 'monitoring_port': 9588, 'cluster_qos_port': 31312}]
         )
         spec.validate()
     assert "colocation_ports requires 3 entries for count=4 (got 1)" in str(e.value)
@@ -625,7 +625,7 @@ def test_nfs_colocation_ports_validation():
             monitoring_port=9587,
             colocation_ports=[
                 {'data_port': 3049},  # Missing monitoring_port
-                {'data_port': 4049, 'monitoring_port': 9589}
+                {'data_port': 4049, 'monitoring_port': 9589, 'cluster_qos_port': 31312}
             ]
         )
         spec.validate()
@@ -643,8 +643,8 @@ def test_nfs_colocation_ports_validation_with_rdma():
         enable_rdma=True,
         rdma_port=20049,
         colocation_ports=[
-            {'data_port': 3049, 'monitoring_port': 9588, 'rdma_port': 20050},
-            {'data_port': 4049, 'monitoring_port': 9589, 'rdma_port': 20051},
+            {'data_port': 3049, 'monitoring_port': 9588, 'cluster_qos_port': 31312, 'rdma_port': 20050},
+            {'data_port': 4049, 'monitoring_port': 9589, 'cluster_qos_port': 31313, 'rdma_port': 20051},
         ]
     )
     spec.validate()
@@ -658,8 +658,8 @@ def test_nfs_colocation_ports_validation_with_rdma():
             monitoring_port=9587,
             enable_rdma=True,
             colocation_ports=[
-                {'data_port': 3049, 'monitoring_port': 9588},  # missing rdma_port
-                {'data_port': 4049, 'monitoring_port': 9589, 'rdma_port': 20051},
+                {'data_port': 3049, 'monitoring_port': 9588, 'cluster_qos_port': 31312},  # missing rdma_port
+                {'data_port': 4049, 'monitoring_port': 9589, 'cluster_qos_port': 31313, 'rdma_port': 20051},
             ]
         )
         spec.validate()
index 2a9de94636ffa6b22343e498bf76128ad7ae724a..f96cd03f1d0bc9d2169a982ba8624bb7ebc9ea32 100644 (file)
@@ -1350,8 +1350,13 @@ yaml.add_representer(ServiceSpec, ServiceSpec.yaml_representer)
 
 
 class NFSServiceSpec(ServiceSpec):
-    COLOCATION_PORT_FIELDS = ['data_port', 'monitoring_port']
-    COLOCATION_PORT_FIELDS_WITH_RDMA = ['data_port', 'monitoring_port', 'rdma_port']
+    COLOCATION_PORT_FIELDS = ['data_port', 'monitoring_port', 'cluster_qos_port']
+    COLOCATION_PORT_FIELDS_WITH_RDMA = [
+        'data_port',
+        'monitoring_port',
+        'cluster_qos_port',
+        'rdma_port'
+    ]
 
     def __init__(self,
                  service_type: str = 'nfs',
index c9ec801eab974dca500b607cca30c4240a5f9183..1a8c011e1e12fe34a5f023c0437f22589a1e13f4 100644 (file)
@@ -558,8 +558,8 @@ def test_nfs_spec_rdma_default():
     spec = NFSServiceSpec(service_id='mynfs', placement=PlacementSpec(count=1))
     assert spec.enable_rdma is False
     assert spec.rdma_port is None
-    assert spec.get_port_start() == [2049, 9587]
-    assert spec.get_colocation_port_fields() == ['data_port', 'monitoring_port']
+    assert spec.get_port_start() == [2049, 9587, 31311]
+    assert spec.get_colocation_port_fields() == ['data_port', 'monitoring_port', 'cluster_qos_port']
 
 
 def test_nfs_spec_rdma_enabled():
@@ -571,8 +571,8 @@ def test_nfs_spec_rdma_enabled():
     )
     assert spec.enable_rdma is True
     assert spec.rdma_port is None
-    assert spec.get_port_start() == [2049, 9587, 20049]
-    assert spec.get_colocation_port_fields() == ['data_port', 'monitoring_port', 'rdma_port']
+    assert spec.get_port_start() == [2049, 9587, 31311, 20049]
+    assert spec.get_colocation_port_fields() == ['data_port', 'monitoring_port', 'cluster_qos_port', 'rdma_port']
 
 
 def test_nfs_spec_rdma_custom_port():
@@ -587,7 +587,7 @@ def test_nfs_spec_rdma_custom_port():
     )
     assert spec.enable_rdma is True
     assert spec.rdma_port == 20050
-    assert spec.get_port_start() == [3049, 9588, 20050]
+    assert spec.get_port_start() == [3049, 9588, 31311, 20050]
 
 
 def test_nfs_spec_from_json_rdma():