Add type deprecation support.
This commit is contained in:
parent
ea291efbf6
commit
4949af894e
6 changed files with 58 additions and 0 deletions
|
@ -758,8 +758,19 @@ class Config(object):
|
||||||
("The requirements of the following objects could not be "
|
("The requirements of the following objects could not be "
|
||||||
"resolved:\n%s") % ("\n".join(info_string)))
|
"resolved:\n%s") % ("\n".join(info_string)))
|
||||||
|
|
||||||
|
def _handle_deprecation(self, cdist_object):
|
||||||
|
cdist_type = cdist_object.cdist_type
|
||||||
|
deprecated = cdist_type.deprecated
|
||||||
|
if deprecated is not None:
|
||||||
|
if deprecated:
|
||||||
|
self.log.warning("Type %s is deprecated: %s", cdist_type.name,
|
||||||
|
deprecated)
|
||||||
|
else:
|
||||||
|
self.log.warning("Type %s is deprecated.", cdist_type.name)
|
||||||
|
|
||||||
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"""
|
||||||
|
self._handle_deprecation(cdist_object)
|
||||||
self.log.verbose("Preparing object {}".format(cdist_object.name))
|
self.log.verbose("Preparing object {}".format(cdist_object.name))
|
||||||
self.log.verbose(
|
self.log.verbose(
|
||||||
"Running manifest and explorers for " + cdist_object.name)
|
"Running manifest and explorers for " + cdist_object.name)
|
||||||
|
|
|
@ -133,6 +133,17 @@ class CdistType(object):
|
||||||
cannot run in parallel."""
|
cannot run in parallel."""
|
||||||
return os.path.isfile(os.path.join(self.absolute_path, "nonparallel"))
|
return os.path.isfile(os.path.join(self.absolute_path, "nonparallel"))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def deprecated(self):
|
||||||
|
"""Get type deprecation message. If message is None then type
|
||||||
|
is not deprecated."""
|
||||||
|
deprecated_path = os.path.join(self.absolute_path, "deprecated")
|
||||||
|
try:
|
||||||
|
with open(deprecated_path, 'r') as f:
|
||||||
|
return f.read()
|
||||||
|
except FileNotFoundError:
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def explorers(self):
|
def explorers(self):
|
||||||
"""Return a list of available explorers"""
|
"""Return a list of available explorers"""
|
||||||
|
|
|
@ -123,6 +123,16 @@ class TypeTestCase(test.CdistTestCase):
|
||||||
cdist_type = core.CdistType(base_path, '__not_nonparallel')
|
cdist_type = core.CdistType(base_path, '__not_nonparallel')
|
||||||
self.assertFalse(cdist_type.is_nonparallel)
|
self.assertFalse(cdist_type.is_nonparallel)
|
||||||
|
|
||||||
|
def test_deprecated(self):
|
||||||
|
base_path = fixtures
|
||||||
|
cdist_type = core.CdistType(base_path, '__deprecated')
|
||||||
|
self.assertIsNotNone(cdist_type.deprecated)
|
||||||
|
|
||||||
|
def test_not_deprecated(self):
|
||||||
|
base_path = fixtures
|
||||||
|
cdist_type = core.CdistType(base_path, '__not_deprecated')
|
||||||
|
self.assertIsNone(cdist_type.deprecated)
|
||||||
|
|
||||||
def test_install_is_install(self):
|
def test_install_is_install(self):
|
||||||
base_path = fixtures
|
base_path = fixtures
|
||||||
cdist_type = core.CdistType(base_path, '__install')
|
cdist_type = core.CdistType(base_path, '__install')
|
||||||
|
|
0
cdist/test/cdist_type/fixtures/__deprecated/deprecated
Normal file
0
cdist/test/cdist_type/fixtures/__deprecated/deprecated
Normal file
|
@ -6,6 +6,7 @@ next:
|
||||||
* Type __consul: Add version 1.5.0 (Nico Schottelius)
|
* Type __consul: Add version 1.5.0 (Nico Schottelius)
|
||||||
* Type __consul_agent: Add alpine support (Nico Schottelius)
|
* Type __consul_agent: Add alpine support (Nico Schottelius)
|
||||||
* New helper script: cdist-new-type (Steven Armstrong, Darko Poljak)
|
* New helper script: cdist-new-type (Steven Armstrong, Darko Poljak)
|
||||||
|
* Core: Add support for deprecated type marker (Darko Poljak)
|
||||||
|
|
||||||
5.0.2: 2019-05-17
|
5.0.2: 2019-05-17
|
||||||
* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius)
|
* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius)
|
||||||
|
|
|
@ -71,6 +71,31 @@ when using -j option. Example of such a type is __package_dpkg type where dpkg i
|
||||||
prevents to be run in more than one instance.
|
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
|
||||||
|
then this content is printed as a deprecation messages, e.g.:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
$ ls -l deprecated
|
||||||
|
-rw-r--r-- 1 darko darko 71 May 20 18:30 deprecated
|
||||||
|
$ cat deprecated
|
||||||
|
This type is deprecated. It will be removed in the next minor release.
|
||||||
|
$ echo '__foo foo' | ./bin/cdist config -i - 185.203.112.26
|
||||||
|
WARNING: 185.203.112.26: Type __foo is deprecated: This type is deprecated. It will be removed in the next minor release.
|
||||||
|
|
||||||
|
If 'deprecated' marker has no content then general message is printed, e.g.:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
$ ls -l deprecated
|
||||||
|
-rw-r--r-- 1 darko darko 0 May 20 18:36 deprecated
|
||||||
|
$ echo '__bar foo' | ./bin/cdist config -i - 185.203.112.26
|
||||||
|
WARNING: 185.203.112.26: Type __bar is deprecated.
|
||||||
|
|
||||||
|
|
||||||
How to write a new type
|
How to write a new type
|
||||||
-----------------------
|
-----------------------
|
||||||
A type consists of
|
A type consists of
|
||||||
|
|
Loading…
Reference in a new issue