diff --git a/lib/cli.py b/lib/cli.py
index 698f03f30f477bba54ea1271fc694bec335df31d..d4dfee675946ce8c4bf1f81f3d81ff597a234627 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -158,6 +158,7 @@ __all__ = [
   "OPT_COMPL_ONE_OS",
   "cli_option",
   "SplitNodeOption",
+  "CalculateOSNames",
   ]
 
 NO_PREFIX = "no_"
@@ -971,6 +972,23 @@ def SplitNodeOption(value):
     return (value, None)
 
 
+def CalculateOSNames(os_name, os_variants):
+  """Calculates all the names an OS can be called, according to its variants.
+
+  @type os_name: string
+  @param os_name: base name of the os
+  @type os_variants: list or None
+  @param os_variants: list of supported variants
+  @rtype: list
+  @return: list of valid names
+
+  """
+  if os_variants:
+    return ['%s+%s' % (os_name, v) for v in os_variants]
+  else:
+    return [os_name]
+
+
 def UsesRPC(fn):
   def wrapper(*args, **kwargs):
     rpc.Init()