From: Sage Weil Date: Mon, 15 Mar 2021 22:58:15 +0000 (-0400) Subject: mgr/cephadm: fall back to service spec port if none on DaemonDescription X-Git-Tag: v17.1.0~2601^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1bf8a2dacf0b38c8a12c84390b5b7be9f301eff2;p=ceph.git 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 --- diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index e646bee6b341..4923db7dca31 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({