From f58ffbe3bd586230a4a3edc5e0a51ce4d3e288df Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 7 Jun 2021 18:24:18 -0400 Subject: [PATCH] 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 --- src/pybind/mgr/nfs/cluster.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/nfs/cluster.py b/src/pybind/mgr/nfs/cluster.py index 985bced3350..6368b8d2c4e 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']) -- 2.39.5