From f9780ccdcf875aed979adcc88f84b53433c7e636 Mon Sep 17 00:00:00 2001 From: Luca Bigliardi <shammash@google.com> Date: Wed, 5 Aug 2009 14:44:49 +0100 Subject: [PATCH] Add nodes IPs informations to ssconf Having a list of primary/secondary IPs of all the nodes in ssconf can be useful for scripts/hooks which need to automatically configure network properties for the whole cluster (e.g.: ipsec/netfilter rules) without relying on a working DNS. Signed-off-by: Luca Bigliardi <shammash@google.com> Signed-off-by: Guido Trotter <ultrotter@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- lib/config.py | 6 ++++++ lib/constants.py | 2 ++ lib/ssconf.py | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/lib/config.py b/lib/config.py index ba4bbdf61..20bf6917c 100644 --- a/lib/config.py +++ b/lib/config.py @@ -1148,12 +1148,16 @@ class ConfigWriter: instance_names = utils.NiceSort(self._UnlockedGetInstanceList()) node_names = utils.NiceSort(self._UnlockedGetNodeList()) node_info = [self._UnlockedGetNodeInfo(name) for name in node_names] + node_pri_ips = [ninfo.primary_ip for ninfo in node_info] + node_snd_ips = [ninfo.secondary_ip for ninfo in node_info] instance_data = fn(instance_names) off_data = fn(node.name for node in node_info if node.offline) on_data = fn(node.name for node in node_info if not node.offline) mc_data = fn(node.name for node in node_info if node.master_candidate) node_data = fn(node_names) + node_pri_ips_data = fn(node_pri_ips) + node_snd_ips_data = fn(node_snd_ips) cluster = self._config_data.cluster cluster_tags = fn(cluster.GetTags()) @@ -1166,6 +1170,8 @@ class ConfigWriter: constants.SS_MASTER_NETDEV: cluster.master_netdev, constants.SS_MASTER_NODE: cluster.master_node, constants.SS_NODE_LIST: node_data, + constants.SS_NODE_PRIMARY_IPS: node_pri_ips_data, + constants.SS_NODE_SECONDARY_IPS: node_snd_ips_data, constants.SS_OFFLINE_NODES: off_data, constants.SS_ONLINE_NODES: on_data, constants.SS_INSTANCE_LIST: instance_data, diff --git a/lib/constants.py b/lib/constants.py index 09f79171e..95c389819 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -545,6 +545,8 @@ SS_MASTER_IP = "master_ip" SS_MASTER_NETDEV = "master_netdev" SS_MASTER_NODE = "master_node" SS_NODE_LIST = "node_list" +SS_NODE_PRIMARY_IPS = "node_primary_ips" +SS_NODE_SECONDARY_IPS = "node_secondary_ips" SS_OFFLINE_NODES = "offline_nodes" SS_ONLINE_NODES = "online_nodes" SS_INSTANCE_LIST = "instance_list" diff --git a/lib/ssconf.py b/lib/ssconf.py index 93c057dd0..6e69eb00c 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -101,6 +101,8 @@ class SimpleStore(object): constants.SS_MASTER_NETDEV, constants.SS_MASTER_NODE, constants.SS_NODE_LIST, + constants.SS_NODE_PRIMARY_IPS, + constants.SS_NODE_SECONDARY_IPS, constants.SS_OFFLINE_NODES, constants.SS_ONLINE_NODES, constants.SS_INSTANCE_LIST, @@ -214,6 +216,22 @@ class SimpleStore(object): nl = data.splitlines(False) return nl + def GetNodePrimaryIPList(self): + """Return the list of cluster nodes' primary IP. + + """ + data = self._ReadFile(constants.SS_NODE_PRIMARY_IPS) + nl = data.splitlines(False) + return nl + + def GetNodeSecondaryIPList(self): + """Return the list of cluster nodes' secondary IP. + + """ + data = self._ReadFile(constants.SS_NODE_SECONDARY_IPS) + nl = data.splitlines(False) + return nl + def GetClusterTags(self): """Return the cluster tags. -- GitLab