From: Kushal Deb Date: Wed, 29 Jan 2025 11:13:31 +0000 (+0530) Subject: Display comma separated ports for RGW services X-Git-Tag: v20.0.0~115^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=011b174ea090c016bf6bb5fba1b133252c0d931d;p=ceph.git Display comma separated ports for RGW services Signed-off-by: Kushal Deb --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index e42b9fe3b56..eef13c75193 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -2375,6 +2375,7 @@ Then run the following: virtual_ip=spec.get_virtual_ip(), ports=spec.get_port_start(), ) + if spec.service_type == 'ingress': # ingress has 2 daemons running per host # but only if it's the full ingress service, not for keepalive-only diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index 607e1bd9019..bc1de8c064e 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -1067,7 +1067,11 @@ class RgwService(CephService): # this is a redeploy of older instance that doesn't have an explicitly # assigned port, in which case we can assume there is only 1 per host # and it matches the spec. - port = spec.get_port() + ports = spec.get_port() + if spec.ssl: + port = ports[1] if len(ports) > 1 else ports[0] + else: + port = ports[0] if spec.generate_cert: cert, key = self.mgr.cert_mgr.generate_cert( diff --git a/src/pybind/mgr/rook/rook_cluster.py b/src/pybind/mgr/rook/rook_cluster.py index be1b637a309..54d595d3a22 100644 --- a/src/pybind/mgr/rook/rook_cluster.py +++ b/src/pybind/mgr/rook/rook_cluster.py @@ -749,9 +749,13 @@ class RookCluster(object): port = None secure_port = None if spec.ssl: - secure_port = spec.get_port() + _secure_port = spec.get_port() + if len(_secure_port) > 1: + secure_port = _secure_port[1] + else: + secure_port = _secure_port[0] else: - port = spec.get_port() + port = spec.get_port()[0] object_store = cos.CephObjectStore( apiVersion=self.rook_env.api_name, metadata=dict( diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 61eddbed5c2..9a9217c50ca 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -1288,15 +1288,29 @@ class RGWSpec(ServiceSpec): self.disable_multisite_sync_traffic = disable_multisite_sync_traffic def get_port_start(self) -> List[int]: - return [self.get_port()] + ports = self.get_port() + return ports - def get_port(self) -> int: + def get_port(self) -> List[int]: + ports = [] if self.rgw_frontend_port: - return self.rgw_frontend_port - if self.ssl: - return 443 - else: - return 80 + ports.append(self.rgw_frontend_port) + + ssl_port = next( + ( + int(arg.split('=')[1]) + for arg in (self.rgw_frontend_extra_args or []) + if arg.startswith("ssl_port=") + ), + None, + ) + + if self.ssl and ssl_port: + ports.append(ssl_port) + if not ports: + ports.append(443 if self.ssl else 80) + + return ports def validate(self) -> None: super(RGWSpec, self).validate()