forked from ungleich-public/cdist
Allow custom message for each deprecated parameter
This commit is contained in:
parent
55ba49efac
commit
3cb4e76175
8 changed files with 44 additions and 35 deletions
|
@ -769,9 +769,14 @@ class Config(object):
|
||||||
self.log.warning("Type %s is deprecated.", cdist_type.name)
|
self.log.warning("Type %s is deprecated.", cdist_type.name)
|
||||||
for param in cdist_object.parameters:
|
for param in cdist_object.parameters:
|
||||||
if param in cdist_type.deprecated_parameters:
|
if param in cdist_type.deprecated_parameters:
|
||||||
self.log.warning(("%s parameter of type %s is deprecated, "
|
msg = cdist_type.deprecated_parameters[param]
|
||||||
"see man page for details"),
|
if msg:
|
||||||
param, cdist_type.name)
|
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):
|
def object_prepare(self, cdist_object, transfer_type_explorers=True):
|
||||||
"""Prepare object: Run type explorer + manifest"""
|
"""Prepare object: Run type explorer + manifest"""
|
||||||
|
|
|
@ -279,20 +279,20 @@ class CdistType(object):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def deprecated_parameters(self):
|
def deprecated_parameters(self):
|
||||||
"""Return a list of deprecated parameters"""
|
|
||||||
if not self.__deprecated_parameters:
|
if not self.__deprecated_parameters:
|
||||||
parameters = []
|
deprecated = {}
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(self.absolute_path,
|
deprecated_dir = os.path.join(self.absolute_path,
|
||||||
"parameter",
|
"parameter",
|
||||||
"deprecated")) as fd:
|
"deprecated")
|
||||||
for line in fd:
|
for name in cdist.core.listdir(deprecated_dir):
|
||||||
line = line.strip()
|
try:
|
||||||
if line:
|
with open(os.path.join(deprecated_dir, name)) as fd:
|
||||||
parameters.append(line)
|
deprecated[name] = fd.read().strip()
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
# error ignored
|
pass # Swallow errors raised by open() or read()
|
||||||
pass
|
except EnvironmentError:
|
||||||
|
pass # Swallow error raised by os.listdir()
|
||||||
finally:
|
finally:
|
||||||
self.__deprecated_parameters = parameters
|
self.__deprecated_parameters = deprecated
|
||||||
return self.__deprecated_parameters
|
return self.__deprecated_parameters
|
||||||
|
|
|
@ -205,10 +205,13 @@ class TypeTestCase(test.CdistTestCase):
|
||||||
base_path = fixtures
|
base_path = fixtures
|
||||||
cdist_type = core.CdistType(base_path,
|
cdist_type = core.CdistType(base_path,
|
||||||
'__without_deprecated_parameters')
|
'__without_deprecated_parameters')
|
||||||
self.assertEqual(cdist_type.deprecated_parameters, [])
|
self.assertEqual(cdist_type.deprecated_parameters, {})
|
||||||
|
|
||||||
def test_with_deprecated_parameters(self):
|
def test_with_deprecated_parameters(self):
|
||||||
base_path = fixtures
|
base_path = fixtures
|
||||||
cdist_type = core.CdistType(base_path, '__with_deprecated_parameters')
|
cdist_type = core.CdistType(base_path, '__with_deprecated_parameters')
|
||||||
self.assertEqual(cdist_type.deprecated_parameters,
|
self.assertTrue('eggs' in cdist_type.deprecated_parameters)
|
||||||
['eggs', 'spam'])
|
self.assertTrue('spam' in cdist_type.deprecated_parameters)
|
||||||
|
self.assertEqual(cdist_type.deprecated_parameters['eggs'],
|
||||||
|
'Deprecated')
|
||||||
|
self.assertEqual(cdist_type.deprecated_parameters['spam'], '')
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
eggs
|
|
||||||
spam
|
|
|
@ -0,0 +1 @@
|
||||||
|
Deprecated
|
|
@ -1,4 +1,3 @@
|
||||||
spam
|
spam
|
||||||
eggs
|
eggs
|
||||||
sausage
|
sausage
|
||||||
spam
|
|
||||||
|
|
|
@ -188,24 +188,27 @@ Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest)
|
||||||
|
|
||||||
Deprecated parameters
|
Deprecated parameters
|
||||||
---------------------
|
---------------------
|
||||||
To deprecate type parameters one can declare a newline separated file
|
To deprecate type parameters one can declare a file for each deprecated
|
||||||
**parameter/deprecated** where each line contains deprecated parameter.
|
parameter under **parameter/deprecated** directory.
|
||||||
When it is used cdist writes warning line, e.g.:
|
|
||||||
|
When such parameter is used cdist writes warning line with deprecation message.
|
||||||
|
If such file has content then this content is printed as deprecation message.
|
||||||
|
If there is no content then generic parameter deprecation message is printed.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
$ cat parameter/optional_multiple
|
$ ls parameter/deprecated/
|
||||||
foo
|
eggs spam
|
||||||
spam
|
$ cat parameter/deprecated/eggs
|
||||||
eggs
|
eggs parameter is deprecated, please use multiple egg parameter.
|
||||||
$ cat parameter/deprecated
|
$ cat parameter/deprecated/spam
|
||||||
spam
|
$ echo '__foo foo --foo foo --eggs eggs' | ./bin/cdist config -i - 185.203.112.26
|
||||||
eggs
|
WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter.
|
||||||
$ echo '__foo foo --foo foo --spam spam' | ./bin/cdist config -i - 185.203.112.26
|
|
||||||
WARNING: 185.203.112.26: spam parameter of type __foo is deprecated, see man page for details
|
|
||||||
$ echo '__foo foo --foo foo --eggs eggs --spam spam' | ./bin/cdist config -i - 185.203.112.26
|
$ echo '__foo foo --foo foo --eggs eggs --spam spam' | ./bin/cdist config -i - 185.203.112.26
|
||||||
WARNING: 185.203.112.26: spam parameter of type __foo is deprecated, see man page for details
|
WARNING: 185.203.112.26: spam parameter of type __foo is deprecated.
|
||||||
WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated, see man page for details
|
WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter.
|
||||||
|
|
||||||
|
|
||||||
Input from stdin
|
Input from stdin
|
||||||
|
|
Loading…
Reference in a new issue