From 1bf8a2dacf0b38c8a12c84390b5b7be9f301eff2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 15 Mar 2021 18:58:15 -0400 Subject: [PATCH] mgr/cephadm: fall back to service spec port if none on DaemonDescription For an RGW instance that is deployed in an older version, we won't have IP or port metadata in the DaemonDescription. In that case, fall back to the port in the ServiceSpec. This should be safe since any such instance will only have 1 daemon per host. Signed-off-by: Sage Weil --- .../mgr/cephadm/services/cephadmservice.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index e646bee6b34..4923db7dca3 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -744,21 +744,29 @@ class RgwService(CephService): keyring = self.get_keyring(rgw_id) + if daemon_spec.ports: + port = daemon_spec.ports[0] + else: + # 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() + # configure frontend args = [] ftype = spec.rgw_frontend_type or "beast" if ftype == 'beast': if spec.ssl: - args.append(f"ssl_port={daemon_spec.ports[0]}") + args.append(f"ssl_port={port}") args.append(f"ssl_certificate=config://rgw/cert/{spec.service_name()}.crt") else: - args.append(f"port={daemon_spec.ports[0]}") + args.append(f"port={port}") elif ftype == 'civetweb': if spec.ssl: - args.append(f"port={daemon_spec.ports[0]}s") # note the 's' suffix on port + args.append(f"port={port}s") # note the 's' suffix on port args.append(f"ssl_certificate=config://rgw/cert/{spec.service_name()}.crt") else: - args.append(f"port={daemon_spec.ports[0]}") + args.append(f"port={port}") frontend = f'{ftype} {" ".join(args)}' ret, out, err = self.mgr.check_mon_command({ -- 2.39.5