diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 33050d4414d5245ce05a754a1de1f4c3b8b721bc..0449f2ab5d78de35c9edcd7e2c171da2c911e78b 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -475,7 +475,8 @@ def _GetWantedInstances(lu, instances):
return wanted
-def _GetUpdatedParams(old_params, update_dict):
+def _GetUpdatedParams(old_params, update_dict,
+ use_default=True, use_none=False):
"""Return the new version of a parameter dictionary.
@type old_params: dict
@@ -484,13 +485,20 @@ def _GetUpdatedParams(old_params, update_dict):
@param update_dict: dict containing new parameter values, or
constants.VALUE_DEFAULT to reset the parameter to its default
value
+ @param use_default: boolean
+ @type use_default: whether to recognise L{constants.VALUE_DEFAULT}
+ values as 'to be deleted' values
+ @param use_none: boolean
+ @type use_none: whether to recognise C{None} values as 'to be
+ deleted' values
@rtype: dict
@return: the new parameter dictionary
"""
params_copy = copy.deepcopy(old_params)
for key, val in update_dict.iteritems():
- if val == constants.VALUE_DEFAULT:
+ if ((use_default and val == constants.VALUE_DEFAULT) or
+ (use_none and val is None)):
try:
del params_copy[key]
except KeyError: