]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/nfs: do not depend on cephadm.utils 41842/head
authorSage Weil <sage@newdream.net>
Mon, 7 Jun 2021 22:24:18 +0000 (18:24 -0400)
committerDaniel Pivonka <dpivonka@redhat.com>
Mon, 14 Jun 2021 16:28:06 +0000 (12:28 -0400)
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 <sage@newdream.net>
(cherry picked from commit f58ffbe3bd586230a4a3edc5e0a51ce4d3e288df)

src/pybind/mgr/nfs/cluster.py

index bdba9ce8da038f2d6ed633ed700441c1b46d252b..556bdd8c7b853017ee35a2298927e52f15bb5695 100644 (file)
@@ -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'])