Allow custom message for each deprecated parameter

This commit is contained in:
Darko Poljak 2019-06-19 18:19:32 +02:00
commit 3cb4e76175
8 changed files with 44 additions and 35 deletions

View file

@ -769,9 +769,14 @@ class Config(object):
self.log.warning("Type %s is deprecated.", cdist_type.name)
for param in cdist_object.parameters:
if param in cdist_type.deprecated_parameters:
self.log.warning(("%s parameter of type %s is deprecated, "
"see man page for details"),
param, cdist_type.name)
msg = cdist_type.deprecated_parameters[param]
if msg:
format = "%s parameter of type %s is deprecated: %s"
args = [param, cdist_type.name, msg]
else:
format = "%s parameter of type %s is deprecated."
args = [param, cdist_type.name]
self.log.warning(format, *args)
def object_prepare(self, cdist_object, transfer_type_explorers=True):
"""Prepare object: Run type explorer + manifest"""

View file

@ -279,20 +279,20 @@ class CdistType(object):
@property
def deprecated_parameters(self):
"""Return a list of deprecated parameters"""
if not self.__deprecated_parameters:
parameters = []
deprecated = {}
try:
with open(os.path.join(self.absolute_path,
"parameter",
"deprecated")) as fd:
for line in fd:
line = line.strip()
if line:
parameters.append(line)
deprecated_dir = os.path.join(self.absolute_path,
"parameter",
"deprecated")
for name in cdist.core.listdir(deprecated_dir):
try:
with open(os.path.join(deprecated_dir, name)) as fd:
deprecated[name] = fd.read().strip()
except EnvironmentError:
pass # Swallow errors raised by open() or read()
except EnvironmentError:
# error ignored
pass
pass # Swallow error raised by os.listdir()
finally:
self.__deprecated_parameters = parameters
self.__deprecated_parameters = deprecated
return self.__deprecated_parameters

View file

@ -205,10 +205,13 @@ class TypeTestCase(test.CdistTestCase):
base_path = fixtures
cdist_type = core.CdistType(base_path,
'__without_deprecated_parameters')
self.assertEqual(cdist_type.deprecated_parameters, [])
self.assertEqual(cdist_type.deprecated_parameters, {})
def test_with_deprecated_parameters(self):
base_path = fixtures
cdist_type = core.CdistType(base_path, '__with_deprecated_parameters')
self.assertEqual(cdist_type.deprecated_parameters,
['eggs', 'spam'])
self.assertTrue('eggs' in cdist_type.deprecated_parameters)
self.assertTrue('spam' in cdist_type.deprecated_parameters)
self.assertEqual(cdist_type.deprecated_parameters['eggs'],
'Deprecated')
self.assertEqual(cdist_type.deprecated_parameters['spam'], '')

View file

@ -1,4 +1,3 @@
spam
eggs
sausage
spam