mirror of
				https://github.com/github/octodns.git
				synced 2024-05-11 05:55:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#
 | 
						|
#
 | 
						|
#
 | 
						|
 | 
						|
from __future__ import absolute_import, division, print_function, \
 | 
						|
    unicode_literals
 | 
						|
 | 
						|
 | 
						|
class BaseSource(object):
 | 
						|
 | 
						|
    def __init__(self, id):
 | 
						|
        self.id = id
 | 
						|
        if not getattr(self, 'log', False):
 | 
						|
            raise NotImplementedError('Abstract base class, log property '
 | 
						|
                                      'missing')
 | 
						|
        if not hasattr(self, 'SUPPORTS_GEO'):
 | 
						|
            raise NotImplementedError('Abstract base class, SUPPORTS_GEO '
 | 
						|
                                      'property missing')
 | 
						|
        if not hasattr(self, 'SUPPORTS'):
 | 
						|
            raise NotImplementedError('Abstract base class, SUPPORTS '
 | 
						|
                                      'property missing')
 | 
						|
 | 
						|
    @property
 | 
						|
    def SUPPORTS_DYNAMIC(self):
 | 
						|
        return False
 | 
						|
 | 
						|
    def populate(self, zone, target=False, lenient=False):
 | 
						|
        '''
 | 
						|
        Loads all records the provider knows about for the provided zone
 | 
						|
 | 
						|
        When `target` is True the populate call is being made to load the
 | 
						|
        current state of the provider.
 | 
						|
 | 
						|
        When `lenient` is True the populate call may skip record validation and
 | 
						|
        do a "best effort" load of data. That will allow through some common,
 | 
						|
        but not best practices stuff that we otherwise would reject. E.g. no
 | 
						|
        trailing . or mising escapes for ;.
 | 
						|
 | 
						|
        When target is True (loading current state) this method should return
 | 
						|
        True if the zone exists or False if it does not.
 | 
						|
        '''
 | 
						|
        raise NotImplementedError('Abstract base class, populate method '
 | 
						|
                                  'missing')
 | 
						|
 | 
						|
    def supports(self, record):
 | 
						|
        return record._type in self.SUPPORTS
 | 
						|
 | 
						|
    def __repr__(self):
 | 
						|
        return self.__class__.__name__
 |