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):
 | 
				
			||||||
            yield cls(base_path, name)
 | 
					            try:
 | 
				
			||||||
 | 
					                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…
	
	Add table
		Add a link
		
	
		Reference in a new issue