From: John Mulligan Date: Thu, 20 Jan 2022 19:48:28 +0000 (-0500) Subject: cephadm: validate that the constructed YumDnf baseurl is usable X-Git-Tag: v16.2.8~163^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0e96f744b2fc9e0796a8913cd092ca24b9090f07;p=ceph.git cephadm: validate that the constructed YumDnf baseurl is usable If the inputs to the `cephadm add-repo` command would result in an invalid URL for repo metadata fail the command early with a (somewhat) helpful error. Fixes: https://tracker.ceph.com/issues/46773 Signed-off-by: John Mulligan --- diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 5a83d3900418..8694fcd41101 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -6486,6 +6486,18 @@ class YumDnf(Packager): if self.version and self.version.split('.')[0] >= '16': raise Error('Ceph does not support 16.y.z or later for this version of this linux distro and therefore cannot add a repo for it') + if self.stable or self.version: + # we know that yum & dnf require there to be a + # $base_url/$arch/repodata/repomd.xml so we can test if this URL + # is gettable in order to validate the inputs + test_url = self.repo_baseurl() + '/noarch/repodata/repomd.xml' + try: + urlopen(test_url) + except HTTPError as err: + logger.error('unable to fetch repo metadata: %r', err) + raise Error('failed to fetch repository metadata. please check' + ' the provided parameters are correct and try again') + def add_repo(self) -> None: if self.stable or self.version: content = ''