forked from ungleich-public/cdist
Warn about invalid type and continue instead of error.
This commit is contained in:
parent
e6c5563a16
commit
c14f3b68f4
3 changed files with 12 additions and 9 deletions
|
@ -21,7 +21,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from cdist.core.cdist_type import CdistType
|
from cdist.core.cdist_type import CdistType
|
||||||
from cdist.core.cdist_type import NoSuchTypeError, InvalidTypeError
|
from cdist.core.cdist_type import InvalidTypeError
|
||||||
from cdist.core.cdist_object import CdistObject
|
from cdist.core.cdist_object import CdistObject
|
||||||
from cdist.core.cdist_object import IllegalObjectIdError
|
from cdist.core.cdist_object import IllegalObjectIdError
|
||||||
from cdist.core.explorer import Explorer
|
from cdist.core.explorer import Explorer
|
||||||
|
|
|
@ -23,20 +23,15 @@
|
||||||
import os
|
import os
|
||||||
import cdist
|
import cdist
|
||||||
import cdist.core
|
import cdist.core
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
class NoSuchTypeError(cdist.Error):
|
class InvalidTypeError(cdist.Error):
|
||||||
def __init__(self, name, type_path, type_absolute_path):
|
def __init__(self, name, type_path, type_absolute_path):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.type_path = type_path
|
self.type_path = type_path
|
||||||
self.type_absolute_path = type_absolute_path
|
self.type_absolute_path = type_absolute_path
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "Type '%s' does not exist at '%s'" % (
|
|
||||||
self.type_path, self.type_absolute_path)
|
|
||||||
|
|
||||||
|
|
||||||
class InvalidTypeError(NoSuchTypeError):
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Invalid type '%s' at '%s' defined at '%s'" % (
|
return "Invalid type '%s' at '%s' defined at '%s'" % (
|
||||||
self.type_path, self.type_absolute_path,
|
self.type_path, self.type_absolute_path,
|
||||||
|
@ -52,12 +47,15 @@ class CdistType(object):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
log = logging.getLogger("cdist")
|
||||||
|
|
||||||
def __init__(self, base_path, name):
|
def __init__(self, base_path, name):
|
||||||
self.base_path = base_path
|
self.base_path = base_path
|
||||||
self.name = name
|
self.name = name
|
||||||
self.path = self.name
|
self.path = self.name
|
||||||
self.absolute_path = os.path.join(self.base_path, self.path)
|
self.absolute_path = os.path.join(self.base_path, self.path)
|
||||||
if not os.path.isdir(self.absolute_path):
|
if not os.path.isdir(self.absolute_path):
|
||||||
|
os.remove(self.absolute_path)
|
||||||
raise InvalidTypeError(self.name, self.path, self.absolute_path)
|
raise InvalidTypeError(self.name, self.path, self.absolute_path)
|
||||||
self.manifest_path = os.path.join(self.name, "manifest")
|
self.manifest_path = os.path.join(self.name, "manifest")
|
||||||
self.explorer_path = os.path.join(self.name, "explorer")
|
self.explorer_path = os.path.join(self.name, "explorer")
|
||||||
|
@ -80,7 +78,11 @@ class CdistType(object):
|
||||||
def list_types(cls, base_path):
|
def list_types(cls, base_path):
|
||||||
"""Return a list of type instances"""
|
"""Return a list of type instances"""
|
||||||
for name in cls.list_type_names(base_path):
|
for name in cls.list_type_names(base_path):
|
||||||
|
try:
|
||||||
yield cls(base_path, name)
|
yield cls(base_path, name)
|
||||||
|
except InvalidTypeError as e:
|
||||||
|
# ignore invalid type, log warning and continue
|
||||||
|
cls.log.warning(e)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def list_type_names(cls, base_path):
|
def list_type_names(cls, base_path):
|
||||||
|
|
|
@ -5,6 +5,7 @@ next:
|
||||||
* Type __ccollect_source: Add create destination parameter (Dominique Roux)
|
* Type __ccollect_source: Add create destination parameter (Dominique Roux)
|
||||||
* Type __ssh_authorized_key: Add messaging (Thomas Eckert)
|
* Type __ssh_authorized_key: Add messaging (Thomas Eckert)
|
||||||
* New type: __letsencrypt_cert (Nico Schottelius, Kamila Součková)
|
* New type: __letsencrypt_cert (Nico Schottelius, Kamila Součková)
|
||||||
|
* Core: Warn about invalid type in conf dir and continue instead of error (Darko Poljak)
|
||||||
|
|
||||||
4.7.2: 2017-10-22
|
4.7.2: 2017-10-22
|
||||||
* Type __hostname: Add support for CoreOS (Ľubomír Kučera)
|
* Type __hostname: Add support for CoreOS (Ľubomír Kučera)
|
||||||
|
|
Loading…
Reference in a new issue