# Channel Controller
## Use case for ODU trail
1. Юзер выбирает клиентский порт на карте (не занятый)
2. Юзер выбирает тип ODU (если > 1)
3. Если уже проброшен ad-hoc канал, предлагаем использовать его
4. Юзер выбирает карту для другого конца канала
6. Система показывает список портов, до которых технически возможно дотянуться, или выдает сообщение о нехватке OTU. OTU пригодно для использования только если в него может быть размещено исходное ODU с заданного порта.
7. Юзер выбирает порт для другого конца канала
8. Юзер выбирает размещение ODU в OTU
Реакция системы:
* Создаем канал.
* Создаем endpoint'ы в домене ODU для 2 клиентских портов и подцепляем к каналу.
* Создаем задачу для runner с 2 job на настройку кроссировок на двух ADM картах.
## Use case for OTU trail
Для создания канала возможно задать дополнительные ограничения:
1. Список объектов (платы, шасси, PoP, группы), через которые должен проходить канал
2. Список объектов, через которые запрещено проводить канал
Сценарий:
1. Юзер выбирает линейный порт на карте (не занятый)
2. Юзер выбирает тип OTU (если > 1)
3. Юзер выбирает частотные характеристики. При этом необходимо учитывать:
* Возможности трансивера
* Использование частот на всех ROADM, до которых теоретически можно дотянуться с данного порта (с учетом возможности переконфигурации)
5. Юзер выбирает объект, где должен находиться второй конец канала. Объект может быть как картой, так и шасси, PoP или группой.
6. Система трассирует оптическую сеть и находит линейные порты, которые попадают под критерий. При этом для каждой возможной трассы указывается, реализована ли она полностью, или требуется конфигурация ROADM.
7. Юзер выбирает второй линейный порт
Реакция системы:
* Создаем канал.
* Создаем endpoint'ы в домене OTU для 2 клиентских портов и подцепляем к каналу, ставим discriminator lambda с выбранными частотами.
* Создаем задачу для runner с 2 job на настройку OTU на двух ADM картах. В случае необходимости настройки ROADM формируем job на кроссировку.