Child pages
  • Заметки кодера. Настраиваем среду разработки под Windows
Skip to end of metadata
Go to start of metadata

В общем.

Со временем, при эксплуатации NOCa, возникает желание взять напильник, и, наконец, довести его до желаемого состояния. Это может выражаться в следующих вещах:

  • существует оборудование, с которым НОК не знает как работать.
  • существуюет класс оборудования, с которой нок, в принципе, знает как работать... Но при этом, с конкретно вашей железкой, отказывается (выдаёт трейсы и вообще, злобствует по всякому и т.д.)
  • вы нашли баг и знаете как его исправить
  • У вас есть ценное дополнение для НОКа (своё Веб приложение, которое принесёт всем счастья)
  • сотни их....
  • ...

В общем, вне зависимости от причины, есть желание внести какие-то правки в код. Для этого необходимо:

  1. Зайти на сервер, где расположен НОК. (на котором, конечно же, нет графической оболочки)
  2. Поправить всё что хочется.
  3. Перезапустить НОК.
  4. Посмотреть всё ли работает.
  5. Поймать трейс. Разобраться что не так.
  6. Поправить изменения. Проверить что всё работает.
  7. Найти не занятого разработчика НОКа
  8. Осчастливить его своим видением жизни. И отправить ваши изменения.

Длинноватый список, даже для одной правки. Поэтому, я постараюсь рассказать, как можно, с комфортом дорабатывать НОК, максимально посвящая себя творчеству и не задумываясь о столь приземлённых вещах, как блуждание по серверам и наблюдение трейсов в консоли)

Требования

Для реализации задачи нам потребуется:

  1. Установленный и рабочий NOC (крайне желательно выделить на эти цели отдельный сервер! не озадаченный работой в боевых условиях)
  2. Доступ на сервер с NOC`ом по SFTP, FTP для заливки изменений (желательно, сделать аутентификацию по ключу в случае SFTP).
  3. PyCharm Professional (версия Professional обязательна) PyCharm Download
  4. Учётная запись на Bitbucket и система контроля версий Mercurial, на локальном компьютере для отправки изменений на добавление. Mercurial Download
  5. Установленный на локальном машине Python (опционально)

Репозитарии

Для выполнения Pull Request (Запроса на добавление) изменений кода в основной репозиторий возможны 3 варианта:

  1. Через создание "форка" (копии) репозитория нока.
  2. Напрямую, из локальной копии. (работает только если у вас есть права на коммит в основной репозиторий)
  3. Через веб-интерфейс bitbucket.org. (работает только если у вас есть права на коммит в основной репозиторий)

Создание форка (собственной копии основного репозитория) удобна в случае внесения многочисленных изменений и при необходимо зафиксировать какую-либо версию НОКа (например, для контроля за изменениями). Для этого необходимо зайти под своей учётной записью на Bitbucket. Перейти на страницу NOC Project, слева нажать кнопочку Fork и придумать название своей копии. После этого откроется страница проекта, где будет ссылка на основной проект - "Fork of".

Для выполнения всех действий с репозиторием нам понадобится Mercurial. Необходимо выполнить клонирование репозитория в локальную папку (ссылка для клонирования справа сверху на основной странице). Создаём на диске папку (например "repository"), заходим в неё и выполняем команды:

> mkdir repository
> hg clone https://bitbucket.org/<own_repository>/<name> noc
> cd noc
> hg update <actual_branch>

На данный момент актуальная ветка, это "feature/microservices". После обновления нам становится доступна копия исходного кода NOC для локальных изменений.

Во избежание проблем, папка с НОКом обязательно должна называться noc.

В случае работы через веб-интерфейс система контроля версий не понадобится. Достаточно скачать архив - пункт Download, на заглавной странице проекта, и, там, вкладка Branches. Выбираем необходимую ветку НОКа, скачиваем её и распаковываем в необходимую папку.

Для выполнения действий с основным репозитарием НОКа необходимы права на изменения! Они есть не у всех. Если у вас их не оказалось - ищите человека с такими правами или делайте форк.

Настройка PyCharm

Подключение копии Python на сервере.

После запуска PyCharm лицезреем основное окно, либо экран приглашения, если запуск осуществлён в первый раз.

Необходимо подключить удалённый python (Project Interpreter). Для этого заходим в настройки File -> Settings ->"Default Project" -> "Project Interpreter"

Для добавления удалённого python'a необходимо нажать на шестерню, справа от выпадающего списка "Project Interpreter". В появившемся окне заполняем поля Host, Username, в качестве типа аутентификации доступны пароль и аутентификация по ключу, рекомендую использовать аутентификацию по ключу. Указываем пароль или путь к приватному ключу и, при необходимости, пароль к нему. Поле Python Interpreter Path указываем в последнюю очередь, т.к. при нажатии на шестерню произойдёт подключение к серверу и вывод дерева каталогов. В списке указываем путь к папке с python'ом, расположенным в папке с НОКом.

После задания всех настроек и нажатия ОК, пойдёт процесс индексации содержимого и в окне отобразится список установленных модулей. В первый раз процесс будет длительным (минут 15-30). Можно дождаться завершения, а можно щёлкнуть по кнопке Background и продолжить настройки.

Добавляем проект

Теперь необходимо открыть проект. Корнем его будет локальный репозиторий НОКа.

Нажимаем File -> Open (или кнопку Open на экране приветствия) и прокладываем путь к локальной копии NOCa. После нажатии кнопки OK пройдёт индексация содержимого. После добавления проекта. Необходимо произвести его настройку. Для этого заходим в File -> Settings (либо нажимаем комбинацию Ctrl + Shift + S).

Вначале задаём настройки Deployment. Они позволяет загружать изменения на удалённую машину. Меню "Build, Execution, Deployment" -> Deployment. В окне справа нажмём кнопку добавить (плюс). Запишем понятное имя, выберем SFTP. и подтвердим выбор. В открывшемся окне настроек Deployment мы окажемся на вкладке Connection. Заполняем поля, аналогично полям в remote Interpreter. Поле "Root path" является точкой отсчёта для всех следующих настроек пути!. В данном случае лучше задать папку, в которой лежит noc. После заполнения всех полей проверяем правильность нажатием кнопки "Test SFTP Connection". В случае проблем - проверяем настройки.

После заполнения вкладки Connection переходим в Mappings (привязки). Здесь задаём соответствие локальным и удалённым папкам. Если на предыдущем шаге мы разместили корень в папке /opt, то необходимо создать привязку локальной папки noc и удалённой /noc. Вкладка "Exclude Paths" отвечает за исключение папок при синхронизации. Добавим сюда локальные папки ansible (здесь лежат playbooks для башни и .idea - служебная папка PyCharm). И удалённую папку .hg (папка системы контроля версий mercurial). По окончании настройки нажимаем кнопку Apply.

Закончив с настройкой Deployment переходим к выбору Интерпретатора Python. для работы с нашим проектом. Для этого переходим в меню "Project:noc" -> "Project Interpreter" и в выпадающем списке выбираем, настроенный ранее, python. Если настроенного интерпретатора не оказалось в списке - значит, необходимо повторить настройку. Нажимаем кнопку Apply (Применить).

Вносим изменения.

Теперь мы можем вносить измения в скрипты, модули и прочий исходны код. Для загрузки наших изменений на сервер с НОКом (мы его настроили на шаге Добавления проекта) необходимо воспользоваться меню "Upload", которое доступно по щелчку правой клавишей мыши.

PyCharm фиксирует изменённые файлы и помечает их синим цветом. Любые измения сохраняются мгновенно. Поэтому кнопки сохранения здесь нет(smile)

Запускаем отладку скрипта

Мы внесли изменения в скрипт, загрузили его на сервер и теперь, необходимо посмотреть - как он работает. Для отладки скрипта, на удалённой машине его необходимо запустить. Вопрос: Как это сделать? если всё у нас на локальной. Для этого существует меню настройки запуска. Располагается в правом верхнем углу (в виде выпадающего списка). Заходим в Edit Configuration (Редактирование конфигурации). Там нажимаем добавить конфигурацию (значок плюс слева на панели меню). Выбираем Python.

Далее переходим на вкладку Configuration (Настройка). Заполняем осмысленное имя. Для отладки скриптом необходимо указать путь к "script.py" (command/script.py). Пути автоматически транслируются, поэтому указывайте локальный. В "Script parameters" (Параметры скрипта) необходимо добавить строчку с параметрами, которые требует скрипт (синтаксис аналогичный ./noc script). В данном случае, для отладки используется строка с указанием скрипта и хоста для подключения. Далее необходимо проверить правильность выбранного интерпретатора Python и галочки на пунктах "Add contents root" и "Add source root". В поле "Working directory" прописываем путь к локальной папке NOC. В "Paths mappings" указываем привязку локального и удалённого пути (в нашем случае локальный путь указан в "Working directory", а удалённый - "/opt/noc".

После заполнения полей нажимаем кнопку OK. В главном окне необходимо выбрать созданную конфигурацию в выпадающем меню справа. После этого нажать на значок запуска (зелёный треугольник) справа от выпадающего списка. Вывод будет отображаться в левом нижнем окне. Если необходима отладка - открываем скрипт (в данном случае мы настроили Cisco.IOS.NXOS.get_version и расставляем точки останова. После этого нажимаем кнопку справа от кнопки Run. И смотрим что у нас получилось.

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

Делимся с окружением

После того как мы отладили наши изменения, необходимо сделать их доступными остальным участникам проекта. С этой целью необходимо создать Pull request (Запрос на добавление) в основную ветку разработки НОКа.

Для данного действия требуются права на основной репозиторий с НОКом.

Если мы клонировали проект напрямую с основного репозитария нока, то для отправки наших изменений необходимо:

  1. Сделать commit (добавление) изменений в локальную копию. Выполняется командой "hg commit -m "Описание изменений""
  2. Отправить (Протолкнуть) изменения в проект командой "hg push --new-branch -branch "MyFix"". Название ветки может быть любой.
  3. После этого на экране высветится ссылка на отправленные изменения. Её необходимо сообщить человеку, с правами на внесение изменений.

Если мы создавали собственный форк. То порядок действий будет следующий:

  1. Сделать commit (добавление) изменений в локальную копию. Выполняется командой "hg commit -m "Описание изменений""
  2. Отправить (Протолкнуть) изменения в свой репозиторий "hg push --new-branch -branch "MyFix"". Название ветки может быть любой. В данном случае можно не создавать новую ветку, но это упростит дальнейшую работу, в случае, если придётся делать дополнительные изменения.
  3. Зайти в свой репозиторий НОКа на Bitbucket в раздел Branch, Там,по имени, находим добавленную нами ветку и нажимаем ссылку "Create pull request". 
  4. Выбирем куда будем делать Pull Request, Заполняем описание и заголовок. Выбираем Rewiers (проверяющих), которые будут проверять наш запрос на правильность. На вкладке Diff смотрим - какие изменения собираемся вносить.
  5. После проверки всех полей - нажимаем кнопку "Create pull request".

Обязательно воспользуйтесь вкладкой Diff и просмотрите ещё раз изменения, которые отправляются в основную ветку. Это сбережёт много сил(smile) в будущем.

Также, необходимо проверить Куда идёт запрос (ветку).

В случае скачивания через веб-интерфейс. Изменения можно добавить, воспользовавшись руководством: Как сделать пулреквест для одного файла через морду bitbucket. Либо переслать одному из людей, с правом внесения изменений в проект.

Ссылки

 

 

  • No labels