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
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'])