From c91705c5d1007dec94094f544ed6c8b2701b2707 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Mon, 9 Feb 2015 20:03:34 +0800 Subject: [PATCH] ctlmgr: support hostnames in DDB --- artiq/frontend/artiq_ctlmgr.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/artiq/frontend/artiq_ctlmgr.py b/artiq/frontend/artiq_ctlmgr.py index 348dcd512..3d0a9ed61 100755 --- a/artiq/frontend/artiq_ctlmgr.py +++ b/artiq/frontend/artiq_ctlmgr.py @@ -6,6 +6,7 @@ import os import logging import signal import shlex +import socket from artiq.protocols.sync_struct import Subscriber from artiq.tools import verbosity_args, init_logger @@ -71,6 +72,14 @@ class Controller: process.send_signal(signal.SIGKILL) +def get_ip_addresses(host): + try: + addrinfo = socket.getaddrinfo(host, None) + except: + return set() + return {info[4][0] for info in addrinfo} + + class Controllers: def __init__(self, retry_command): self.retry_command = retry_command @@ -97,7 +106,7 @@ class Controllers: def __setitem__(self, k, v): if (isinstance(v, dict) and v["type"] == "controller" - and v["host"] == self.host_filter): + and self.host_filter in get_ip_addresses(v["host"])): command = v["command"].format(name=k, bind=self.host_filter, port=v["port"])