Есть у меня в использовании несколько коммутаторов DLink DGS-3100-24TG.
Они чуть более исключительные, чем остальные DES-DGS, и для них сделан отдельный профиль DGS3100.
Я допилил для указанного профиля обработку портчэналов, доработка коснулась скриптов get_portchannel и get_interfaces.
Для того, что бы поместить изменения в проект, нужно протестировать скрипты — действительно ли я все учел.
В NOC'е для этого реализован механизм работы с "тушенкой", возможность собрать данные с коммутатора и затем тестировать работу скриптов в отсутствии самого железа.
Обновим "тушенку" из публичного репо:
noc@noc:/opt/noc$ ./noc beef --pull [sa_public] pulling from https://bitbucket.org/nocproject/noc-sa-beef-public searching for changes no changes found
Тестируем скрипты:
noc@noc:/opt/noc$ ./noc test --beef-filter=DLink.DGS3100.get_portchannel noc.stop Ran 0 tests in 0.000s OK noc@noc:/opt/noc$ ./noc test --beef-filter=DLink.DGS3100.get_interfaces noc.stop Ran 0 tests in 0.000s OK
Ноль тестов? Проверяем, есть ли "тушенка" для наших скриптов.
Данные лежат в /opt/noc/local/
noc@noc:/opt/noc/local/repos/sa/sa_public/DLink/DGS3100$ ls -l drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_chassis_id drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_dom_status drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_interface_status drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_lldp_neighbors drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_mac_address_table drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_version drwxrwxr-x 2 noc noc 4096 Oct 20 14:41 get_vlans
Видим, что для get_portchannel и get_interfaces нет каталогов.
Значит сделаем локальный репо и протестируем на своих данных.
Пишем где будет наш репо:
etc/beef.conf [my_repo] enabled = true type = sa private = true repo = /srv/noc/my_repo
Проверяем:
noc@noc:/opt/noc$ ./noc beef --list-repo E P T Name Repo + N sa sa_public https://bitbucket.org/nocproject/noc-sa-beef-public + N sa my_repo /srv/noc/my_repo
Готовим "тушенку":
./noc debug-script get_portchannel router1 -o output.json ./noc debug-script get_interfaces router1 -o output.json
Делаем каталоги get_portchannel и get_interfaces в /srv/noc/my_repo, копируем в них полученные файлы json. (json в репо помещается не совсем так, буду корректировать)
Тестируем на наших данных:
noc@noc:/opt/noc$ ./noc test --beef=/srv/noc/my_repo/ noc.stop Ran 28 tests in 0.014s OK
Или так:
./noc test --beef=/srv/noc/my_repo/ --beef-filter=DLink.DGS3100.get_portchannel noc.stop ./noc test --beef=/srv/noc/my_repo/ --beef-filter=DLink.DGS3100.get_interfaces noc.stop
Или так, на всей доступной тушенке: и нашей и публичной:
./noc test --beef-filter=DLink.DGS3100.get_portchannel noc.stop ./noc test --beef-filter=DLink.DGS3100.get_interfaces noc.stop
Ура, скрипты корректно работают на всех DGS-3100, которые есть у меня в NOC`е.
P.S.
Бывает, что "test" ругается на данные, а мы видим, что скрипт корректно отдает данные. В моем случае ругалось на ответ скрипта "[]".
Корректируем данные так:
./noc test --beef=/srv/noc/my_repo/ --fixed-beef-base=/srv/noc/fixed-beef yes
в /srv/noc/fixed-beef будут сформированы файлы, в которых найдена и поправлена ошибка. Копируем эти файлы в репо (нужно угадать какие файлы были ошибочные) и снова тестируемся.
Файлы "тушенки" отправляем на beef@nocproject.org и если все корректно, то их разместят в публичном репо.
1 Comment
Unknown User (tsergey) AUTHOR
похоже, что я не до конца понимаю как работает "тест"
http://habrahabr.ru/post/121162/