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: v18.0.0~1484^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ee71ff79a3b1ab11d42aa1f3860943367ece2081;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 01796b6df2a2..c3ec5919c1ca 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -6967,6 +6967,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 = ''