예제 #1
0
    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')
예제 #2
0
    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')
예제 #3
0
    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')
예제 #4
0
    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')
예제 #5
0
 def test_load_pattern_minimal(self):
     pattern = load_pattern({
         'name': random_string(),
         'definition': random_string(),
         'interfaces': []
     })
     self.assertIsInstance(pattern, Pattern)
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 def test_load_pattern_minimal(self):
     pattern = load_pattern({'name': random_string()})
     self.assertIsInstance(pattern, Pattern)
예제 #9
0
 def test_load_pattern_minimal(self):
     pattern = load_pattern({'name': random_string(),
                             'definition': random_string(),
                             'interfaces': []})
     self.assertIsInstance(pattern, Pattern)
예제 #10
0
 def test_load_pattern_minimal(self):
     pattern = load_pattern({'name': random_string()})
     self.assertIsInstance(pattern, Pattern)