forked from ungleich-public/cdist
Merge branch 'feature/support-type-param-deprecation' into 'master'
Add support for deprecated type parameters See merge request ungleich-public/cdist!786
This commit is contained in:
commit
175ab90a9e
7 changed files with 76 additions and 1 deletions
|
@ -767,6 +767,16 @@ class Config(object):
|
|||
deprecated)
|
||||
else:
|
||||
self.log.warning("Type %s is deprecated.", cdist_type.name)
|
||||
for param in cdist_object.parameters:
|
||||
if param in cdist_type.deprecated_parameters:
|
||||
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"""
|
||||
|
|
|
@ -69,6 +69,7 @@ class CdistType(object):
|
|||
self.__optional_multiple_parameters = None
|
||||
self.__boolean_parameters = None
|
||||
self.__parameter_defaults = None
|
||||
self.__deprecated_parameters = None
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.name)
|
||||
|
@ -275,3 +276,23 @@ class CdistType(object):
|
|||
finally:
|
||||
self.__parameter_defaults = defaults
|
||||
return self.__parameter_defaults
|
||||
|
||||
@property
|
||||
def deprecated_parameters(self):
|
||||
if not self.__deprecated_parameters:
|
||||
deprecated = {}
|
||||
try:
|
||||
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:
|
||||
pass # Swallow error raised by os.listdir()
|
||||
finally:
|
||||
self.__deprecated_parameters = deprecated
|
||||
return self.__deprecated_parameters
|
||||
|
|
|
@ -200,3 +200,18 @@ class TypeTestCase(test.CdistTestCase):
|
|||
self.assertEqual(
|
||||
list(sorted(cdist_type.parameter_defaults.keys())),
|
||||
['bar', 'foo'])
|
||||
|
||||
def test_without_deprecated_parameters(self):
|
||||
base_path = fixtures
|
||||
cdist_type = core.CdistType(base_path,
|
||||
'__without_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.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'], '')
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Deprecated
|
|
@ -0,0 +1,3 @@
|
|||
spam
|
||||
eggs
|
||||
sausage
|
|
@ -74,7 +74,7 @@ prevents to be run in more than one instance.
|
|||
Deprecated types
|
||||
-----------------
|
||||
If a type is flagged with 'deprecated' marker then it is considered deprecated.
|
||||
Upon it's usage cdist writes warning line. If 'deprecated' marker has content
|
||||
When it is used cdist writes warning line. If 'deprecated' marker has content
|
||||
then this content is printed as a deprecation messages, e.g.:
|
||||
|
||||
.. code-block:: sh
|
||||
|
@ -186,6 +186,31 @@ Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest)
|
|||
fi
|
||||
|
||||
|
||||
Deprecated parameters
|
||||
---------------------
|
||||
To deprecate type parameters one can declare a file for each deprecated
|
||||
parameter under **parameter/deprecated** directory.
|
||||
|
||||
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
|
||||
|
||||
$ ls parameter/deprecated/
|
||||
eggs spam
|
||||
$ cat parameter/deprecated/eggs
|
||||
eggs parameter is deprecated, please use multiple egg parameter.
|
||||
$ cat parameter/deprecated/spam
|
||||
$ echo '__foo foo --foo foo --eggs eggs' | ./bin/cdist config -i - 185.203.112.26
|
||||
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 --eggs eggs --spam spam' | ./bin/cdist config -i - 185.203.112.26
|
||||
WARNING: 185.203.112.26: spam parameter of type __foo is deprecated.
|
||||
WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter.
|
||||
|
||||
|
||||
Input from stdin
|
||||
----------------
|
||||
Every type can access what has been written on stdin when it has been called.
|
||||
|
|
Loading…
Reference in a new issue