mirror of
				https://github.com/github/octodns.git
				synced 2024-05-11 05:55:00 +00:00 
			
		
		
		
	NS1, add Delete support, fix apply create, flush out tests to 100%
This commit is contained in:
		@@ -22,6 +22,7 @@ class Ns1Provider(BaseProvider):
 | 
			
		||||
        api_key: env/NS1_API_KEY
 | 
			
		||||
    '''
 | 
			
		||||
    SUPPORTS_GEO = False
 | 
			
		||||
    ZONE_NOT_FOUND_MESSAGE = 'server error: zone not found'
 | 
			
		||||
 | 
			
		||||
    def __init__(self, id, api_key, *args, **kwargs):
 | 
			
		||||
        self.log = getLogger('Ns1Provider[{}]'.format(id))
 | 
			
		||||
@@ -113,7 +114,7 @@ class Ns1Provider(BaseProvider):
 | 
			
		||||
            nsone_zone = self._client.loadZone(zone.name[:-1])
 | 
			
		||||
            records = nsone_zone.data['records']
 | 
			
		||||
        except ResourceException as e:
 | 
			
		||||
            if e.message != 'server error: zone not found':
 | 
			
		||||
            if e.message != self.ZONE_NOT_FOUND_MESSAGE:
 | 
			
		||||
                raise
 | 
			
		||||
            records = []
 | 
			
		||||
 | 
			
		||||
@@ -174,6 +175,13 @@ class Ns1Provider(BaseProvider):
 | 
			
		||||
        params = getattr(self, '_params_for_{}'.format(_type))(new)
 | 
			
		||||
        record.update(**params)
 | 
			
		||||
 | 
			
		||||
    def _apply_Delete(self, nsone_zone, change):
 | 
			
		||||
        existing = change.existing
 | 
			
		||||
        name = self._get_name(existing)
 | 
			
		||||
        _type = existing._type
 | 
			
		||||
        record = nsone_zone.loadRecord(name, _type)
 | 
			
		||||
        record.delete()
 | 
			
		||||
 | 
			
		||||
    def _apply(self, plan):
 | 
			
		||||
        desired = plan.desired
 | 
			
		||||
        changes = plan.changes
 | 
			
		||||
@@ -183,7 +191,9 @@ class Ns1Provider(BaseProvider):
 | 
			
		||||
        domain_name = desired.name[:-1]
 | 
			
		||||
        try:
 | 
			
		||||
            nsone_zone = self._client.loadZone(domain_name)
 | 
			
		||||
        except ResourceException:
 | 
			
		||||
        except ResourceException as e:
 | 
			
		||||
            if e.message != self.ZONE_NOT_FOUND_MESSAGE:
 | 
			
		||||
                raise
 | 
			
		||||
            self.log.debug('_apply:   no matching zone, creating')
 | 
			
		||||
            nsone_zone = self._client.createZone(domain_name)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user