This patch adds a function to retrieve a map of group UUIDs to SSH ports to the configuration module. Fixes Issue 773.
Besides that, this patch adds another function to retrieve the list of potential master candidates. Signed-off-by: Helga Velroyen <[email protected]> --- lib/config.py | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/config.py b/lib/config.py index e0f3dd8..6be2814 100644 --- a/lib/config.py +++ b/lib/config.py @@ -332,7 +332,33 @@ class ConfigWriter(object): @return: A dict with the filled in node group params """ - return self._ConfigData().cluster.FillNDGroup(nodegroup) + return self._UnlockedGetNdGroupParams(nodegroup) + + def _UnlockedGetNdGroupParams(self, group): + """Get the ndparams of the group. + + @type group: L{objects.NodeGroup} + @param group: The group we want to know the params for + @rtype: dict of str to int + @return: A dict with the filled in node group params + + """ + return self._ConfigData().cluster.FillNDGroup(group) + + @_ConfigSync(shared=1) + def GetGroupSshPorts(self): + """Get a map of group UUIDs to SSH ports. + + @rtype: dict of str to int + @return: a dict mapping the UUIDs to the SSH ports + + """ + port_map = {} + for uuid, group in self._config_data.nodegroups.items(): + ndparams = self._UnlockedGetNdGroupParams(group) + port = ndparams.get(constants.ND_SSH_PORT) + port_map[uuid] = port + return port_map @_ConfigSync(shared=1) def GetInstanceDiskParams(self, instance): @@ -695,6 +721,20 @@ class ConfigWriter(object): assert isinstance(data, dict), "Not a dictionary: " + str(data) return data + @_ConfigSync(shared=1) + def GetPotentialMasterCandidates(self): + """Gets the list of node names of potential master candidates. + + @rtype: list of str + @return: list of node names of potential master candidates + + """ + # FIXME: Note that currently potential master candidates are nodes + # but this definition will be extended once RAPI-unmodifiable + # parameters are introduced. + nodes = self._UnlockedGetAllNodesInfo() + return [node_info.name for node_info in nodes.values()] + def GenerateMAC(self, net_uuid, _ec_id): """Generate a MAC for an instance. -- 2.1.0.rc2.206.gedb03e5
