Перейти к содержимому
Калькуляторы

новый opensource софт для NOC провайдера

Из новых вкусностей и полезностей NOC: в Knowledge Base появился очень полезный макрос "rack", который облегчает документирование набивки стоек.

Заполнение стойки задается в виде простейшего XML прям в теле статьи и KB отрисовывает симпатичную картинку с избражением заполнения стойки.

 

Конечный результат получается такой: Screenshot #18

 

Документация: rack macro

 

Очень полезно для документирования расположения оборудования, и планирования работ по модернизации сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Memory leaks давить надо по-любому. В репозитории лежат новые апдейты. Теперь демоны по сигналу SIGPROF скидывают в лог статистику по объектам в памяти.

Если сможете собрать статистику, когда активатор обожрется, это сильно поможет в отлове утечек.

да соберу не вопрос, дайте какой-нить контакт, не сюда же этот бардак постить:-)

 

Только SA/CM используете, или приспособили уже IP/PEER/DNS/KB ?

address space management еще в добавок к конфигам и коллекторам, до остального пока руки не дошли, насчет KB есть родная вики, с неё переезжать трудновато будет, надо сначала тут освоиться с креолом:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только SA/CM используете, или приспособили уже IP/PEER/DNS/KB ?
address space management еще в добавок к конфигам и коллекторам, до остального пока руки не дошли, насчет KB есть родная вики, с неё переезжать трудновато будет, надо сначала тут освоиться с креолом:-)

Если наваять правильный парсер, то можно использовать привычный синтаксис :) MoinMoin переносится почти 1:1, для него скоро будет автоматический конвертер.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только SA/CM используете, или приспособили уже IP/PEER/DNS/KB ?
address space management еще в добавок к конфигам и коллекторам, до остального пока руки не дошли, насчет KB есть родная вики, с неё переезжать трудновато будет, надо сначала тут освоиться с креолом:-)

Если наваять правильный парсер, то можно использовать привычный синтаксис :) MoinMoin переносится почти 1:1, для него скоро будет автоматический конвертер.

Отвечу за Алексея. У нас http://wackowiki.com/HomePage

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я наверное руки погнул... Решил в работу запустить... пытаюсь ставить - спотыкается на ./scripts/post-update

 su noc
_su: No such file or directory
_su: Trying to start from "/opt/noc"
%pwd
/opt/noc
%./scripts/post-update
Syncing...

Synced:
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.admin
> south

Not synced (use migrations):
- noc.main
- noc.sa
- noc.fm
- noc.cm
- noc.ip
- noc.vc
- noc.dns
- noc.peer
- noc.kb
(use ./manage.py migrate to migrate these)
Running migrations for main:
- Nothing to migrate.
Running migrations for sa:
- Migrating forwards to 0013_rename_DES3xxx.
> sa: 0002_trigger
   = SELECT COUNT(*) FROM pg_language WHERE lanname='plpgsql' []
   = CREATE LANGUAGE plpgsql []
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/__init__.py", line 340, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.5/site-packages/django/core/management/__init__.py", line 295, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/base.py", line 192, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/base.py", line 219, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.5/site-packages/South-0.4-py2.5.egg/south/management/commands/migrate.py", line 67, in handle
    load_inital_data = True,
  File "/usr/local/lib/python2.5/site-packages/South-0.4-py2.5.egg/south/migration.py", line 501, in migrate_app
    result = run_forwards(mapp, [mname], fake=fake, db_dry_run=db_dry_run, silent=silent)
  File "/usr/local/lib/python2.5/site-packages/South-0.4-py2.5.egg/south/migration.py", line 294, in run_forwards
    silent = silent,
  File "/usr/local/lib/python2.5/site-packages/South-0.4-py2.5.egg/south/migration.py", line 243, in run_migrations
    getattr(klass(), torun)()
  File "/opt/noc/../noc/sa/migrations/0002_trigger.py", line 15, in forwards
    db.execute("CREATE LANGUAGE plpgsql")
  File "/usr/local/lib/python2.5/site-packages/South-0.4-py2.5.egg/south/db/generic.py", line 49, in execute
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.5/site-packages/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: нужно быть администратором для создания процедурного языка

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/__init__.py", line 340, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.5/site-packages/django/core/management/__init__.py", line 295, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/base.py", line 192, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.5/site-packages/django/core/management/base.py", line 219, in execute
    output = self.handle(*args, **options)
  File "/opt/noc/../noc/fm/management/commands/sync-rules.py", line 28, in handle
    self.sync_mibs()
  File "/opt/noc/../noc/fm/management/commands/sync-rules.py", line 148, in sync_mibs
    for m in MIB.objects.all():
  File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py", line 185, in _result_iter
    self._fill_cache()
  File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py", line 618, in _fill_cache
    self._result_cache.append(self._iter.next())
  File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py", line 275, in iterator
    for row in self.query.results_iter():
  File "/usr/local/lib/python2.5/site-packages/django/db/models/sql/query.py", line 206, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/usr/local/lib/python2.5/site-packages/django/db/models/sql/query.py", line 1734, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.5/site-packages/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: отношение "fm_mib" не существует

mkdir -p ../../../../static/doc/en/ag//html ../../../../static/doc/en/ag//doctrees
sphinx-build -b html -d ../../../../static/doc/en/ag//doctrees   . ../../../../static/doc/en/ag//html
Running Sphinx v0.6.1
loading pickled environment... done
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
no targets are out of date.

Build finished. The HTML pages are in ../../../../static/doc/en/ag//html.
mkdir -p ../../../../static/doc/en/ug//html ../../../../static/doc/en/ug//doctrees
sphinx-build  -b html -d ../../../../static/doc/en/ug//doctrees   . ../../../../static/doc/en/ug//html
Running Sphinx v0.6.1
loading pickled environment... not found
building [html]: targets for 37 source files that are out of date
updating environment: 37 added, 0 changed, 0 removed
Exception occurred:[ 40%] profiles/Alcatel.AOS
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2051, in run_directive
    'Directive "%s" must return a list of nodes.' % type_name
AssertionError: Directive "supported" must return a list of nodes.
The full traceback has been saved in /tmp/sphinx-err-XtB_0P.log, if you want to report the issue to the author.
Please also report this if it was a user error, so that a better error message can be provided next time.
Send reports to sphinx-dev@googlegroups.com. Thanks!
*** Error code 1

Stop in /opt/noc/share/doc/en/ug.

в каком месте я неправ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я наверное руки погнул... Решил в работу запустить... пытаюсь ставить - спотыкается на ./scripts/post-update

Перед post-update от юзера postgres (или pgsql) можно сделать

$ createlang plpgsql noc

потом запускать post-update

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эт хорошо, только вот проблем осталсо...

Build finished. The HTML pages are in ../../../../static/doc/en/ag//html.
mkdir -p ../../../../static/doc/en/ug//html ../../../../static/doc/en/ug//doctrees
sphinx-build  -b html -d ../../../../static/doc/en/ug//doctrees   . ../../../../static/doc/en/ug//html
Running Sphinx v0.6.1
loading pickled environment... not found
building [html]: targets for 37 source files that are out of date
updating environment: 37 added, 0 changed, 0 removed
Exception occurred:[ 40%] profiles/Alcatel.AOS
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2051, in run_directive
    'Directive "%s" must return a list of nodes.' % type_name
AssertionError: Directive "supported" must return a list of nodes.
The full traceback has been saved in /tmp/sphinx-err-H5LC8u.log, if you want to report the issue to the author.
Please also report this if it was a user error, so that a better error message can be provided next time.
Send reports to sphinx-dev@googlegroups.com. Thanks!
*** Error code 1

Stop in /opt/noc/share/doc/en/ug.
%

трейс:

Traceback (most recent call last):
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/cmdline.py", line 172, in main
    app.build(all_files, filenames)
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/application.py", line 129, in build
    self.builder.build_update()
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/builders/__init__.py", line 255, in build_update
    'out of date' % len(to_build))
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/builders/__init__.py", line 275, in build
    purple, length):
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/builders/__init__.py", line 131, in status_iterator
    for item in iterable:
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/environment.py", line 513, in update_generator
    self.read_doc(docname, app=app)
  File "/usr/local/lib/python2.5/site-packages/Sphinx-0.6.1-py2.5.egg/sphinx/environment.py", line 604, in read_doc
    pub.publish()
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/core.py", line 204, in publish
    self.settings)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/readers/__init__.py", line 69, in read
    self.parse()
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/readers/__init__.py", line 75, in parse
    self.parser.parse(self.input, document)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/__init__.py", line 157, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 170, in run
    input_source=document['source'])
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 232, in run
    context, state, transitions)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 420, in check_line
    return method(match, context, next_state)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2658, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 308, in section
    self.new_subsection(title, lineno, messages)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 376, in new_subsection
    node=section_node, match_titles=1)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 266, in nested_parse
    node=node, match_titles=match_titles)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 195, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 232, in run
    context, state, transitions)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 420, in check_line
    return method(match, context, next_state)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2658, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 308, in section
    self.new_subsection(title, lineno, messages)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 376, in new_subsection
    node=section_node, match_titles=1)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 266, in nested_parse
    node=node, match_titles=match_titles)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 195, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 232, in run
    context, state, transitions)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/statemachine.py", line 420, in check_line
    return method(match, context, next_state)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2239, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2251, in explicit_construct
    return method(self, expmatch)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 1994, in directive
    directive_class, match, type_name, option_presets)
  File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2051, in run_directive
    'Directive "%s" must return a list of nodes.' % type_name
AssertionError: Directive "supported" must return a list of nodes.

Значит погнул в двух местах руки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эт хорошо, только вот проблем осталсо...

Нужно обновить sphinx до самой последней версии (0.6.1). До выхода релиза 0.2.1 можно просто игнорировать ошибку, это только online-дока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

noc@test-serv:~$ ./scripts/post-update
Error: No module named south
Unknown command: 'migrate'
Type 'manage.py help' for usage.
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 340, in execute_manager
    utility.execute()
  File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 295, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 249, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 67, in load_command_class
    {}, {}, ['Command']), 'Command')()
  File "/opt/noc/../noc/fm/management/commands/sync-rules.py", line 13, in <module>
    from noc.fm.rules.classes import EventClass
  File "/opt/noc/../noc/fm/rules/classes/__init__.py", line 10, in <module>
    from noc.fm.models import EventCategory,EventPriority,EventClassVar,event_trigger_registry
  File "/opt/noc/../noc/fm/models.py", line 10, in <module>
    from noc.sa.models import ManagedObject
  File "/opt/noc/../noc/sa/models.py", line 14, in <module>
    from noc.sa.script import script_registry
  File "/opt/noc/../noc/sa/script.py", line 13, in <module>
    from noc.sa.protocols.sae_pb2 import TELNET,SSH,HTTP
  File "/opt/noc/../noc/sa/protocols/sae_pb2.py", line 4, in <module>
    from google.protobuf import descriptor
ImportError: No module named google.protobuf
Error: No module named south

хотя сами south и protobuf стоят. собсно вопрос - где я козлю... единственное, что приходит на ум - кривость при сборке протобафа. ибо собирал его ручками. но по сути повлиять особо не должно было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Д-линки:

DES3xxx.get_vlans:

# -*- coding: utf-8 -*-
##----------------------------------------------------------------------
## Copyright (C) 2007-2009 The NOC Project
## See LICENSE for details
##----------------------------------------------------------------------
"""
"""
import noc.sa.script
from noc.sa.interfaces import IGetVlans
import re

rx_vlan=re.compile(r"VID\s+:\s+(?P<vlanid>\S+).+VLAN Name\s+:\s+(?P<vlanname>\S+)",re.MULTILINE|re.DOTALL)

class Script(noc.sa.script.Script):
    name="DLink.DES3xxx.get_vlans"
    implements=[IGetVlans]
    def execute(self):
        self.cli("disable clipaging")
        vlans=self.cli("show vlan")
        r=[]
        for l in vlans.split("\n"):
            l=l.strip()
            match=rx_vlan.search(l)
            if match:
                r.append({"vlan_id":int(match.group('vlanid')),"name":match.group('vlanname')})
        return r

DGS3xxx такой же, только имя поменять.

ЗЫ: сильно не пинать, питон совсем не знаю. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

====

хотя сами south и protobuf стоят. собсно вопрос - где я козлю... единственное, что приходит на ум - кривость при сборке протобафа. ибо собирал его ручками. но по сути повлиять особо не должно было.

протобаф поборол. остался только south. нивкакую не хочет питон видеть этот модуль...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

====

хотя сами south и protobuf стоят. собсно вопрос - где я козлю... единственное, что приходит на ум - кривость при сборке протобафа. ибо собирал его ручками. но по сути повлиять особо не должно было.

протобаф поборол. остался только south. нивкакую не хочет питон видеть этот модуль...

Скорее всего, в системе 2 разных python'а. NOC пускается из одного, а south поставился в другой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Д-линки:

DES3xxx.get_vlans:

# -*- coding: utf-8 -*-

##----------------------------------------------------------------------

## Copyright © 2007-2009 The NOC Project

## See LICENSE for details

##----------------------------------------------------------------------

Спасибо! Закоммитил: r1095. Проверяйте.

 

get_vlans - очень полезные скрипты. Они позволяют модулю VC вытянуть список VLAN'ов в базу прямо из свичей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

поправки к DLink.DGS3xxx.get_config:

# -*- coding: utf-8 -*-
##----------------------------------------------------------------------
## DLink.DGS3xxx.get_config
##----------------------------------------------------------------------
## Copyright (C) 2007-2009 The NOC Project
## See LICENSE for details
##----------------------------------------------------------------------
"""
"""
import noc.sa.script
from noc.sa.interfaces import IGetConfig

class Script(noc.sa.script.Script):
    name="DLink.DGS3xxx.get_config"
    implements=[IGetConfig]
    def execute(self):
        self.cli("disable clipaging")
        v=self.scripts.get_version()
        vi=v.index("3612")
        if vi>0:
            config=self.cli("show config active")
        else:
            config=self.cli("show config current_config")
        return self.cleaned_config(config)

Проблема в том, что в оригинале переменная v получается типа String вместо Dict, оно соотв падало c ошибкой "индекс строки должен быть целым значением".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

поправки к DLink.DGS3xxx.get_config:

Проблема в том, что в оригинале переменная v получается типа String вместо Dict, оно соотв падало c ошибкой "индекс строки должен быть целым значением".

DLink.DGS3xxx.get_config правильный был. Проблема была в том, что в get_version неправильно был указан интерфейс (IGetConfig вместо IGetVersion).

В результате он преобразовывал Dict в String, как ему и указали.

 

Поправлено в r1096. get_config трогать не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорее всего, в системе 2 разных python'а. NOC пускается из одного, а south поставился в другой.
спорить не буду. в /usr/lib есть две папки питона: 2.4 и 2.5. но.... в системе есть только питон 2.5

собсно с модулями разобрался.

как оказалось, при установке были созданы папки и файлы с правами только на рута и маской 700. устанавливались при помощи easy_install2.5 .

по модулям вопросов на данный момент не имею.

остается только ошибка при запуске post-update:

noc@test-serv:~$ ./scripts/post-update
Traceback (most recent call last):
 File "manage.py", line 11, in <module>
   execute_manager(settings)
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 340, in execute_manager
   utility.execute()
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 295, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 192, in run_from_argv
   self.execute(*args, **options.__dict__)
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 218, in execute
   self.validate()
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 246, in validate
   num_errors = get_validation_errors(s, app)
 File "/var/lib/python-support/python2.5/django/core/management/validation.py", line 28, in get_validation_errors
   for (app_name, error) in get_app_errors().items():
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 128, in get_app_errors
   self._populate()
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 57, in _populate
   self.load_app(app_name, True)
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 72, in load_app
   mod = __import__(app_name, {}, {}, ['models'])
 File "/opt/noc/main/models.py", line 107, in <module>
   report_registry.register_all()
 File "/opt/noc/lib/registry.py", line 51, in register_all
   __import__(mb+f[:-3],{},{},self.classname)
ValueError: Empty module name
Traceback (most recent call last):
 File "manage.py", line 11, in <module>
   execute_manager(settings)
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 340, in execute_manager
   utility.execute()
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 295, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 249, in fetch_command
   klass = load_command_class(app_name, subcommand)
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 67, in load_command_class
   {}, {}, ['Command']), 'Command')()
 File "/opt/noc/fm/management/commands/sync-rules.py", line 13, in <module>
   from noc.fm.rules.classes import EventClass
 File "/opt/noc/fm/rules/classes/__init__.py", line 10, in <module>
   from noc.fm.models import EventCategory,EventPriority,EventClassVar,event_trigger_registry
 File "/opt/noc/fm/models.py", line 10, in <module>
   from noc.sa.models import ManagedObject
 File "/opt/noc/sa/models.py", line 19, in <module>
   profile_registry.register_all()
 File "/opt/noc/lib/registry.py", line 51, in register_all
   __import__(mb+f[:-3],{},{},self.classname)
ValueError: Empty module name
Traceback (most recent call last):
 File "manage.py", line 11, in <module>
   execute_manager(settings)
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 340, in execute_manager
   utility.execute()
 File "/var/lib/python-support/python2.5/django/core/management/__init__.py", line 295, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 192, in run_from_argv
   self.execute(*args, **options.__dict__)
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 218, in execute
   self.validate()
 File "/var/lib/python-support/python2.5/django/core/management/base.py", line 246, in validate
   num_errors = get_validation_errors(s, app)
 File "/var/lib/python-support/python2.5/django/core/management/validation.py", line 28, in get_validation_errors
   for (app_name, error) in get_app_errors().items():
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 128, in get_app_errors
   self._populate()
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 57, in _populate
   self.load_app(app_name, True)
 File "/var/lib/python-support/python2.5/django/db/models/loading.py", line 72, in load_app
   mod = __import__(app_name, {}, {}, ['models'])
 File "/opt/noc/main/models.py", line 107, in <module>
   report_registry.register_all()
 File "/opt/noc/lib/registry.py", line 51, in register_all
   __import__(mb+f[:-3],{},{},self.classname)
ValueError: Empty module name

руки конечно не оттуда растут. пойду пока что дальше ковыряццо. может опять гдето напортачил.

Изменено пользователем liet

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эт хорошо, только вот проблем осталсо...
Build finished. The HTML pages are in ../../../../static/doc/en/ag//html.

mkdir -p ../../../../static/doc/en/ug//html ../../../../static/doc/en/ug//doctrees

sphinx-build -b html -d ../../../../static/doc/en/ug//doctrees . ../../../../static/doc/en/ug//html

Running Sphinx v0.6.1

loading pickled environment... not found

building [html]: targets for 37 source files that are out of date

updating environment: 37 added, 0 changed, 0 removed

Exception occurred:[ 40%] profiles/Alcatel.AOS

File "/usr/local/lib/python2.5/site-packages/docutils-0.5-py2.5.egg/docutils/parsers/rst/states.py", line 2051, in run_directive

'Directive "%s" must return a list of nodes.' % type_name

AssertionError: Directive "supported" must return a list of nodes.

The full traceback has been saved in /tmp/sphinx-err-H5LC8u.log, if you want to report the issue to the author.

Please also report this if it was a user error, so that a better error message can be provided next time.

Send reports to sphinx-dev@googlegroups.com. Thanks!

*** Error code 1

Значит погнул в двух местах руки...

....

Эту ошибку пофиксил: r1103. Теперь все нормально должно быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из новых вкусностей и полезностей NOC: в Knowledge Base появился очень полезный макрос "rack", который облегчает документирование набивки стоек.

Заполнение стойки задается в виде простейшего XML прям в теле статьи и KB отрисовывает симпатичную картинку с избражением заполнения стойки.

 

Конечный результат получается такой: Screenshot #18

 

Документация: rack macro

 

Очень полезно для документирования расположения оборудования, и планирования работ по модернизации сети.

а реально задать расположение стоек рядом? а то сейчас они отрисовываются последовательно, что немного неудобно. Экран позволяет смотреть на две стойки сразу по ширине. А вообще замечательный макрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из новых вкусностей и полезностей NOC: в Knowledge Base появился очень полезный макрос "rack", который облегчает документирование набивки стоек.

Заполнение стойки задается в виде простейшего XML прям в теле статьи и KB отрисовывает симпатичную картинку с избражением заполнения стойки.

 

Конечный результат получается такой: Screenshot #18

 

Документация: rack macro

 

Очень полезно для документирования расположения оборудования, и планирования работ по модернизации сети.

а реально задать расположение стоек рядом? а то сейчас они отрисовываются последовательно, что немного неудобно. Экран позволяет смотреть на две стойки сразу по ширине. А вообще замечательный макрос.

В конечном варианте - rackset весь будет рисоваться в один ряд, конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dvolodin

Есть железка Revolution 5000 с которой нужно конфиги снимать, не могли бы помочь в написаниее профиля и скрипта под эту железку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dvolodin

Есть железка Revolution 5000 с которой нужно конфиги снимать, не могли бы помочь в написаниее профиля и скрипта под эту железку?

Надеюсь радиорелейка, а не одноименный пылесос :) Помочь могу.

 

Необходимые требования для снятия конфига:

1. Telnet/SSH CLI или web-интерфейс для управления железкой

2. Железка должна отдавать конфиг в текстовом виде

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dvolodin

Есть железка Revolution 5000 с которой нужно конфиги снимать, не могли бы помочь в написаниее профиля и скрипта под эту железку?

Надеюсь радиорелейка, а не одноименный пылесос :) Помочь могу.

 

Необходимые требования для снятия конфига:

1. Telnet/SSH CLI или web-интерфейс для управления железкой

2. Железка должна отдавать конфиг в текстовом виде

Да это радио, управляется по telnet, отдает конфиг в текстовом виде, могу дать доступ к одной из железок, если нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да это радио, управляется по telnet, отдает конфиг в текстовом виде, могу дать доступ к одной из железок, если нужно.

Скиньте, как попасть на железку в личку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да это радио, управляется по telnet, отдает конфиг в текстовом виде, могу дать доступ к одной из железок, если нужно.
Скиньте, как попасть на железку в личку.

не знаю почему, но мне запрещено отправлять личные сообщения. так что может мыло или аська? вот моя: 87097680

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.