def do_validation(self, response, *args, **kwargs): if not runtime.default.disable_topology_validation: log.info('%s: topology validation is ENABLED' % kwargs['resource']) filename = self.expand(kwargs['resource'], PATTERN_FN) fobj = self.repository.get_file(filename) try: log.info('%s: checking syntax of pattern file used for topology' ' validation: %s' % (kwargs['resource'], filename)) pattern = load_pattern(fobj.name, node_id=kwargs['resource']) except SerializerError as err: log.error(err.message) raise Exception('failed to load pattern %s' % filename) if not pattern: raise Exception('failed to validate pattern') log.info('%s: evaluating node against pattern: %s' % (kwargs['resource'], filename)) if not pattern.match_node(kwargs['node']): log.error('%s: node failed pattern validation (%s)' % (kwargs['resource'], filename)) raise ValidationError('%s: node failed pattern ' 'validation (%s)' % (kwargs['resource'], filename)) log.info('%s: node passed pattern validation: %s' % (kwargs['resource'], filename)) else: log.warning('%s: topology validation is DISABLED' % kwargs['resource']) return (response, 'get_startup_config')
def do_validation(self, response, *args, **kwargs): if not runtime.default.disable_topology_validation: log.info('%s: topology validation is ENABLED' % kwargs['resource']) filename = self.expand(kwargs['resource'], PATTERN_FN) fobj = self.repository.get_file(filename) try: log.info( '%s: checking syntax of pattern file used for topology' ' validation: %s' % (kwargs['resource'], filename)) pattern = load_pattern(fobj.name, node_id=kwargs['resource']) except SerializerError as err: log.error(err.message) raise Exception('failed to load pattern %s' % filename) if not pattern: raise Exception('failed to validate pattern') log.info('%s: evaluating node against pattern: %s' % (kwargs['resource'], filename)) if not pattern.match_node(kwargs['node']): log.error('%s: node failed pattern validation (%s)' % (kwargs['resource'], filename)) raise ValidationError('%s: node failed pattern ' 'validation (%s)' % (kwargs['resource'], filename)) log.info('%s: node passed pattern validation: %s' % (kwargs['resource'], filename)) else: log.warning('%s: topology validation is DISABLED' % kwargs['resource']) return (response, 'get_startup_config')
def do_validation(self, response, *args, **kwargs): config = ztpserver.config.runtime if not config.default.disable_topology_validation: filename = self.expand(kwargs['resource'], PATTERN_FN) fobj = self.repository.get_file(filename) try: pattern = load_pattern(fobj.name, node_id=kwargs['resource']) except SerializerError as err: log.error(err.message) raise Exception('failed to load pattern %s' % filename) if not pattern: raise Exception('failed to validate pattern') if not pattern.match_node(kwargs['node']): log.error('%s: node failed pattern validation (%s)' % (kwargs['resource'], filename)) raise ValidationError('%s: node failed pattern ' 'validation (%s)' % (kwargs['resource'], filename)) log.debug('%s: node passed pattern validation (%s)' % (kwargs['resource'], filename)) else: log.warning('%s: topology validation is disabled' % kwargs['resource']) return (response, 'get_startup_config')
def test_load_pattern_minimal(self): pattern = load_pattern({ 'name': random_string(), 'definition': random_string(), 'interfaces': [] }) self.assertIsInstance(pattern, Pattern)
def test_load_pattern_with_interfaces(self): # github issue #128 contents = """ name: test # Default pattern - always succeeds interfaces: - any: any:any """ kwargs = yaml.load(contents) pattern = load_pattern(kwargs) self.assertIsInstance(pattern, Pattern)
def test_load_pattern_minimal(self): pattern = load_pattern({'name': random_string()}) self.assertIsInstance(pattern, Pattern)
def test_load_pattern_minimal(self): pattern = load_pattern({'name': random_string(), 'definition': random_string(), 'interfaces': []}) self.assertIsInstance(pattern, Pattern)