Size: a a a

2021 July 15

DL

Dmitry Luhtionov in NOC Project
чем больше кусок traceback - тем легче найти ошибку
источник

DL

Dmitry Luhtionov in NOC Project
приведенный кусок - абсолютно бесполезен
источник

AA

Andrey Aversant in NOC Project
ты бы, вначале, объяснил человеку что такое TRACEBACK
источник

AA

Andrey Aversant in NOC Project
а потом требовал
источник

NM

Narek Matevosyan in NOC Project
PROCESS: ./services/discovery/service.py
VERSION: stable
BRANCH: HEAD CHANGESET: 19848b80
ERROR FINGERPRINT: 8a72c8c3-a209-5dcc-905f-50714b450758
WORKING DIRECTORY: /opt/noc
EXCEPTION: <class 'django.core.exceptions.ValidationError'> ['Invalid IPv4 prefix']
START OF TRACEBACK
------------------------------------------------------------------------
File: core/validators.py (Line: 530)
Function: inner_validator
 523         Traceback (most recent call last):
 524         ...
 525         ValidationError: [u'invalid int']
 526         """
 527         # Validator closure
 528         def inner_validator(value, *args, **kwargs):
 529             if not check(value):
 530 ==>             raise ValidationError(error_message)
 531             return value
 532    
 533         return inner_validator
 534    
 535     #
 536     # Validators
Variables:
              value = 'VOLO/32'
               args = ()
             kwargs = {}
              check = <function is_ipv4_prefix at 0x7f010f4a2a60>
      error_message = 'Invalid IPv4 prefix'
------------------------------------------------------------------------
File: core/ip.py (Line: 297)
Function: init
 290             :type netmask: str
 291             """
 292             if "/" not in prefix:
 293                 if netmask:
 294                     prefix += "/%d" % self.netmask_to_len(netmask)
 295                 else:
 296                     prefix += "/32"
 297 ==>         check_ipv4_prefix(prefix)
 298             super().init(prefix)
 299             # Convert to int
 300             self.d = struct.unpack("!I", socket.inet_aton(self.address))[0]
 301    
 302         @classmethod
 303         def netmask_to_len(cls, netmask):
Variables:
               self = <IPv4 <bound method IP.prefix of <class 'noc.core.ip.IPv4'>>>
             prefix = 'VOLO/32'
            netmask = None
          class = <class 'noc.core.ip.IPv4'>
------------------------------------------------------------------------
File: core/confdb/normalizer/base.py (Line: 234)
Function: yield_resolved
 227                             yield from rt()
 228                         else:
 229                             yield rt
 230    
 231         def defer(self, context, gen=None, **kwargs):
 232             def yield_resolved():
 233                 for rp in resolved:
 234 ==>                 yield rp()
 235    
 236             ctx = self.deferable_contexts[context]
 237             # Split resolved and deferred variables
 238             deferables = {}
 239             nkwargs = {}
 240             for k in kwargs:
Variables:
                 rp =
functools.partial(<bound method make_inet_static_route_next_hop of <noc.sa.profiles.MikroTik.RouterOS.confdb.normalizer.RouterOSNormalizer object at 0x7f00ded0cb50>>, route='10.0.0.0/8', next_hop='VOLO')
           resolved =
[functools.partial(<bound method make_inet_static_route_next_hop of <noc.sa.profiles.MikroTik.RouterOS.confdb.normalizer.RouterOSNormalizer object at 0x7f00ded0cb50>>, route='10.0.0.0/8', next_hop='VOLO')]
------------------------------------------------------------------------
File: core/confdb/normalizer/base.py (Line: 227)
Function: iter
 220             for tokens in self.tokenizer:
 221                 for node in self.mtree.iter_matched(tokens):
 222                     # Feed normalized
 223                     for rt in node.handler(self, tokens):
 224                         if rt is None:
 225                             continue  # Unresolved defer
 226                         if callable(rt):  # Resolved defers
 227 ==>                         yield from rt()
 228                         else:
 229                             yield rt
 230    
 231         def defer(self, context, gen=None, **kwargs):
 232             def yield_resolved():
 233                 for rp in resolved:
Variables:
               self =
<noc.sa.profiles.MikroTik.RouterOS.confdb.normalizer.RouterOSNormalizer object at 0x7f00ded0cb50>
источник

NM

Narek Matevosyan in NOC Project
tokens = ('/ip', 'route', '0', 'gateway', 'VOLO')
               node =
<Node <class 'noc.core.confdb.syntax.patterns.IPv4_ADDRESS'> (normalize_route_gateway)>
                 rt =
<function BaseNormalizer.defer.<locals>.yield_resolved at 0x7f00decbc550>
------------------------------------------------------------------------
File: sa/models/managedobject.py (Line: 1684)
Function: iter_normalized_tokens
1677                 return
1678             if not n_handler.startswith("noc."):
1679                 n_handler = "noc.sa.profiles.%s.confdb.normalizer.%s" % (profile.name, n_handler)
1680             n_cls = get_handler(n_handler)
1681             if not n_cls:
1682                 return
1683             normalizer = n_cls(self, self.iter_config_tokens(config), **n_config)
1684 ==>         yield from normalizer
1685    
1686         def get_confdb(self, config=None, cleanup=True):
1687             """
1688             Returns ready ConfDB engine instance
1689    
1690             :param config: Configuration data
Variables:
               self = <ManagedObject: Miktorik-UKR-ZP-NEW>
             config =
источник

NM

Narek Matevosyan in NOC Project
Надеюсь об этом была речь
источник

DL

Dmitry Luhtionov in NOC Project
вот оно пытается сделать IP префикс из такой строки
источник

DL

Dmitry Luhtionov in NOC Project
prefix = 'VOLO/32'
источник

DL

Dmitry Luhtionov in NOC Project
ниже
источник

DL

Dmitry Luhtionov in NOC Project
tokens = ('/ip', 'route', '0', 'gateway', 'VOLO')
источник

DL

Dmitry Luhtionov in NOC Project
теперь бы кусок конфига, с этим "VOLO", чтобы понять, откуда он взялся там
источник

NM

Narek Matevosyan in NOC Project
VOLO это gre туннель
источник

NM

Narek Matevosyan in NOC Project
/interface gre
add dont-fragment=inherit name=VOLO remote-address=
источник

DL

Dmitry Luhtionov in NOC Project
@aversant хелп.
я не понимаю, откуда берется
   @match("/ip", "route", INTEGER, "gateway", IPv4_ADDRESS)
   def normalize_route_gateway(self, tokens):
       yield self.defer(
           "ip.route.%s" % tokens[2],
           self.make_inet_static_route_next_hop,
           route=deferable("route"),
           next_hop=tokens[4],
       )
источник

DL

Dmitry Luhtionov in NOC Project
на своем микротике я не могу найти подобное
источник

AA

Andrey Aversant in NOC Project
ну, поправь нормализатор
источник

DL

Dmitry Luhtionov in NOC Project
у меня в конфиге так:
/ip route add distance=1 gateway=10.111.0.
источник

DL

Dmitry Luhtionov in NOC Project
как из этого делается
tokens = ('/ip', 'route', '0', 'gateway', 'VOLO') ???
источник

NM

Narek Matevosyan in NOC Project
Спасибо всем
Проблема была в  
add check-gateway=ping  distance=200 dst-address=10.0.0.0/8 gateway=VOLO
удалил   роуте и все заработоло
источник