diff options
author | Daniil Baturin <daniil@baturin.org> | 2019-08-26 19:58:04 +0200 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2019-08-26 19:58:04 +0200 |
commit | b812bae9e317f7bcc91371316af28d07345682ba (patch) | |
tree | 0f4608d7dfd96cd522b442d3eba57cd92d868520 | |
parent | 4a8ab14dc3cbe4245b95250c51ee427eb6241372 (diff) | |
download | vyos-1x-b812bae9e317f7bcc91371316af28d07345682ba.tar.gz vyos-1x-b812bae9e317f7bcc91371316af28d07345682ba.zip |
T1598: add a vyos-hostsd operation for retrieving name servers by tag.
-rw-r--r-- | python/vyos/hostsd_client.py | 7 | ||||
-rwxr-xr-x | src/services/vyos-hostsd | 18 |
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: |