37 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
defaults = {
 | 
						|
    'backup-freshness-check': {
 | 
						|
        'server': node.name,
 | 
						|
        'prefix': 'auto-backup_',
 | 
						|
        'datasets': {},
 | 
						|
    },
 | 
						|
    'monitoring': {
 | 
						|
        'services': {
 | 
						|
            'backup freshness': {
 | 
						|
                'vars.command': '/usr/lib/nagios/plugins/check_backup_freshness',
 | 
						|
                'check_interval': '6h',
 | 
						|
                'vars.sudo': True,
 | 
						|
            },
 | 
						|
        },
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'backup-freshness-check/datasets'
 | 
						|
)
 | 
						|
def backup_freshness_check(metadata):
 | 
						|
    return {
 | 
						|
        'backup-freshness-check': {
 | 
						|
            'datasets': {
 | 
						|
                f"{other_node.metadata.get('id')}/{dataset}"
 | 
						|
                    for other_node in repo.nodes
 | 
						|
                    if not other_node.dummy
 | 
						|
                    and other_node.has_bundle('backup')
 | 
						|
                    and other_node.has_bundle('zfs')
 | 
						|
                    and other_node.metadata.get('backup/server') == metadata.get('backup-freshness-check/server')
 | 
						|
                    for dataset, options in other_node.metadata.get('zfs/datasets').items()
 | 
						|
                    if options.get('backup', True)
 | 
						|
                    and not options.get('mountpoint', None) in [None, 'none']
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 |