From d01ae714a3f1c72bb18efca9a3c3719e6d1136d8 Mon Sep 17 00:00:00 2001 From: Luca Bigliardi <shammash@google.com> Date: Tue, 22 Sep 2009 15:24:30 +0100 Subject: [PATCH] Confd: add instances IPs query Extend confd to answer queries about instances IPs. Signed-off-by: Luca Bigliardi <shammash@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/confd/querylib.py | 20 ++++++++++++++++++++ lib/confd/server.py | 1 + lib/constants.py | 2 ++ lib/ssconf.py | 5 +++++ 4 files changed, 28 insertions(+) diff --git a/lib/confd/querylib.py b/lib/confd/querylib.py index 11dad046f..5ede415f7 100644 --- a/lib/confd/querylib.py +++ b/lib/confd/querylib.py @@ -208,3 +208,23 @@ class MasterCandidatesPipsQuery(ConfdQuery): return status, answer + +class InstancesIpsQuery(ConfdQuery): + """A query for instances IPs. + + It returns the list of instances IPs. + + """ + def Exec(self, query): + """InstancesIpsQuery main execution. + + """ + if query is None: + status = constants.CONFD_REPL_STATUS_OK + answer = self.reader.GetInstancesIps() + else: + status = constants.CONFD_REPL_STATUS_ERROR + answer = "non-empty instances IPs query" + + return status, answer + diff --git a/lib/confd/server.py b/lib/confd/server.py index 0df006163..1bbf26f7b 100644 --- a/lib/confd/server.py +++ b/lib/confd/server.py @@ -54,6 +54,7 @@ class ConfdProcessor(object): constants.CONFD_REQ_CLUSTER_MASTER: querylib.ClusterMasterQuery, constants.CONFD_REQ_NODE_PIP_LIST: querylib.NodesPipsQuery, constants.CONFD_REQ_MC_PIP_LIST: querylib.MasterCandidatesPipsQuery, + constants.CONFD_REQ_INSTANCES_IPS_LIST: querylib.InstancesIpsQuery, } def __init__(self): diff --git a/lib/constants.py b/lib/constants.py index 1ad446100..b71348a24 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -641,6 +641,7 @@ CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2 CONFD_REQ_CLUSTER_MASTER = 3 CONFD_REQ_NODE_PIP_LIST = 4 CONFD_REQ_MC_PIP_LIST = 5 +CONFD_REQ_INSTANCES_IPS_LIST = 6 CONFD_REQS = frozenset([ CONFD_REQ_PING, @@ -649,6 +650,7 @@ CONFD_REQS = frozenset([ CONFD_REQ_CLUSTER_MASTER, CONFD_REQ_NODE_PIP_LIST, CONFD_REQ_MC_PIP_LIST, + CONFD_REQ_INSTANCES_IPS_LIST, ]) CONFD_REPL_STATUS_OK = 0 diff --git a/lib/ssconf.py b/lib/ssconf.py index b08518a19..a0ba135a4 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -100,10 +100,12 @@ class SimpleConfigReader(object): (self._file_name, err)) self._ip_to_instance = {} + self._instances_ips = [] for iname in self._config_data['instances']: instance = self._config_data['instances'][iname] for nic in instance['nics']: if 'ip' in nic and nic['ip']: + self._instances_ips.append(nic['ip']) self._ip_to_instance[nic['ip']] = iname self._nodes_primary_ips = [] @@ -201,6 +203,9 @@ class SimpleConfigReader(object): def GetMasterCandidatesPrimaryIps(self): return self._mc_primary_ips + def GetInstancesIps(self): + return self._instances_ips + class SimpleStore(object): """Interface to static cluster data. -- GitLab