summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2019-08-26 19:58:04 +0200
committerDaniil Baturin <daniil@baturin.org>2019-08-27 08:16:28 +0200
commit3a6ce1c83b5615bd8eee153a74c5eab9f919ad55 (patch)
tree49e607c296c721fe081d4392ae282be1c0c29771
parent43b0bbbc9b5b00b3e91dde7e7cffe8dc8497b8ce (diff)
downloadvyos-1x-3a6ce1c83b5615bd8eee153a74c5eab9f919ad55.tar.gz
vyos-1x-3a6ce1c83b5615bd8eee153a74c5eab9f919ad55.zip
T1598: add a vyos-hostsd operation for retrieving name servers by tag.
-rw-r--r--python/vyos/hostsd_client.py7
-rwxr-xr-xsrc/services/vyos-hostsd18
2 files changed, 24 insertions, 1 deletions
diff --git a/python/vyos/hostsd_client.py b/python/vyos/hostsd_client.py
index e2f05071b..f009aba98 100644
--- a/python/vyos/hostsd_client.py
+++ b/python/vyos/hostsd_client.py
@@ -30,6 +30,8 @@ class Client(object):
reply = json.loads(reply_msg)
if 'error' in reply:
raise VyOSHostsdError(reply['error'])
+ else:
+ return reply["data"]
except zmq.error.Again:
raise VyOSHostsdError("Could not connect to vyos-hostsd")
@@ -60,3 +62,8 @@ class Client(object):
def delete_name_servers(self, tag):
msg = {'type': 'name_servers', 'op': 'delete', 'tag': tag}
self._communicate(msg)
+
+ def get_name_servers(self, tag):
+ msg = {'type': 'name_servers', 'op': 'get', 'tag': tag}
+ return self._communicate(msg)
+
diff --git a/src/services/vyos-hostsd b/src/services/vyos-hostsd
index 1bcb2e1f5..8f70eb4e9 100755
--- a/src/services/vyos-hostsd
+++ b/src/services/vyos-hostsd
@@ -171,6 +171,14 @@ def set_host_name(state, data):
if data['search_domains']:
state['search_domains'] = data['search_domains']
+def get_name_servers(state, tag):
+ ns = []
+ data = state['name_servers']
+ for n in data:
+ if data[n]['tag'] == tag:
+ ns.append(n)
+ return ns
+
def get_option(msg, key):
if key in msg:
return msg[key]
@@ -209,6 +217,13 @@ def handle_message(msg_json):
set_host_name(STATE, data)
else:
raise ValueError("Unknown message type {0}".format(_type))
+ elif op == 'get':
+ tag = get_option(msg, 'tag')
+ if _type == 'name_servers':
+ result = get_name_servers(STATE, tag)
+ else:
+ raise ValueError("Unimplemented")
+ return result
else:
raise ValueError("Unknown operation {0}".format(op))
@@ -254,7 +269,8 @@ if __name__ == '__main__':
resp = {}
try:
- handle_message(message)
+ result = handle_message(message)
+ resp['data'] = result
except ValueError as e:
resp['error'] = str(e)
except: