]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/nfs: do not depend on cephadm.utils
authorSage Weil <sage@newdream.net>
Mon, 7 Jun 2021 22:24:18 +0000 (18:24 -0400)
committerSage Weil <sage@newdream.net>
Mon, 7 Jun 2021 22:24:18 +0000 (18:24 -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>
src/pybind/mgr/nfs/cluster.py

index 985bced3350351d1dec5630a7eb5eb6269c06f48..6368b8d2c4e0313542a8f7bf6713e3499fe75d94 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'])