From: Sage Weil Date: Mon, 7 Jun 2021 22:24:18 +0000 (-0400) Subject: mgr/nfs: do not depend on cephadm.utils X-Git-Tag: v17.1.0~1697^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F41740%2Fhead;p=ceph.git mgr/nfs: do not depend on cephadm.utils The cephadm package may not be installed (it is a separate rpm/deb). While we are here, adjust the exception to be an NFS-specific one. Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/nfs/cluster.py b/src/pybind/mgr/nfs/cluster.py index 985bced33503..6368b8d2c4e0 100644 --- a/src/pybind/mgr/nfs/cluster.py +++ b/src/pybind/mgr/nfs/cluster.py @@ -5,7 +5,6 @@ import re from typing import cast, Dict, List, Any, Union, Optional from ceph.deployment.service_spec import NFSServiceSpec, PlacementSpec, IngressSpec -from cephadm.utils import resolve_ip import orchestrator @@ -16,6 +15,19 @@ from .export import NFSRados, exception_handler log = logging.getLogger(__name__) +def resolve_ip(hostname: str) -> str: + try: + r = socket.getaddrinfo(hostname, None, flags=socket.AI_CANONNAME, + type=socket.SOCK_STREAM) + # pick first v4 IP, if present + for a in r: + if a[0] == socket.AF_INET: + return a[4][0] + return r[0][4][0] + except socket.gaierror as e: + raise NFSInvalidOperation(f"Cannot resolve IP for host {hostname}: {e}") + + def cluster_setter(func): def set_pool_ns_clusterid(nfs, *args, **kwargs): nfs._set_pool_namespace(kwargs['cluster_id'])