I'd suggest to also update GetNdGroupParams to
use _UnlockedGetNdGroupParams so that we don't have duplicate code.

I'll be slightly inclined to include the patch together with code that uses
the new function, such as refactoring *node_verify* and *node_verify_light* RPC
calls a to use this port map instead of the whole groups configuration. But
I don't mind submitting the patch, if it's already prepared, and just
adding an issue for the refactoring.

Otherwise LGTM


On Tue, Mar 25, 2014 at 10:19 AM, Helga Velroyen <[email protected]> wrote:

> This patch adds a function to retrieve a map of group UUIDs
> to SSH ports to the configuration module. Fixes Issue 773.
>
> Signed-off-by: Helga Velroyen <[email protected]>
> ---
>  lib/config.py | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/lib/config.py b/lib/config.py
> index 981130e..d63a208 100644
> --- a/lib/config.py
> +++ b/lib/config.py
> @@ -248,6 +248,21 @@ class ConfigWriter(object):
>      return self._config_data.cluster.FillNDGroup(nodegroup)
>
>    @locking.ssynchronized(_config_lock, 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
> +
> +  @locking.ssynchronized(_config_lock, shared=1)
>    def GetInstanceDiskParams(self, instance):
>      """Get the disk params populated with inherit chain.
>
> @@ -281,6 +296,17 @@ class ConfigWriter(object):
>      """
>      return self._config_data.cluster.SimpleFillDP(group.diskparams)
>
> +  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._config_data.cluster.FillNDGroup(group)
> +
>    def _UnlockedGetNetworkMACPrefix(self, net_uuid):
>      """Return the network mac prefix if it exists or the cluster level
> default.
>
> --
> 1.9.1.423.g4596e3a
>
>

Reply via email to