Обновление функции Opendaylight Unimgr

Я добавляю новый драйвер в unimgr Opendaylight и добавляю в контроллер новую функцию, позволяющую использовать этот драйвер.

Он работает нормально, но когда я вношу изменения в свой драйвер и пересобираю его (mvn clean install -pl my-new-driver -DskipTests), после запуска feature:install odl-unimgr-my-new-driver я все равно получаю старую версию (даже если предварительно очистить папку данных или выполнить bundle:update и bundle:refresh).

Есть ли способ обновить функцию без повторной сборки всего unimgr (и, следовательно, всего контроллера)?

Немного информации о моей настройке: я использую версии SNAPSHOT и запускаю karaf, созданный как часть проекта unimgr (unimgr/karaf/target/assembly/bin/karaf).


person SivanBH    schedule 21.12.2017    source источник


Ответы (1)


Я считаю, что это связано с тем, что дистрибутивы локального проекта karaf копируют все артефакты в разделе target/assembly/system и target/assembly/etc/org.ops4j.pax.url.mvn.cfg. файл настроен только для просмотра в системе. Таким образом, чтобы получать обновления, вы можете либо

  • пересоберите дистрибутив в unimgr/karaf
  • скопируйте обновленный артефакт в соответствующий каталог в target/assembly/system, а затем переустановите компонент.
  • установите org.ops4j.pax.url.mvn.localRepository= в etc/org.ops4j.pax.url.mvn.cfg, чтобы он выглядел в вашем файле ~/. м2/хранилище. Затем после повторной сборки артефакта вам просто нужно переустановить функцию.
person Tom Pantelis    schedule 29.12.2017
comment
Спасибо за ответ, но он действительно не работает для меня. Ваше первое предложение - это то, чего я пытаюсь избежать; второй частично работает (новая функция загружается), но выдаются исключения (например, «Невозможно предоставить исходный код для...»), и этого не происходит, когда я все перестраиваю; что касается третьего - при попытке переустановить функцию происходит сбой из-за неразрешенных зависимостей. - person SivanBH; 05.01.2018
comment
Я не знаю, что означает «Невозможно предоставить источник для... ошибки» — нужно будет увидеть полную ошибку и трассировку. Для 2 и 3 под переустановкой функции я имею в виду остановку karaf, затем перестройте артефакт, для 2 скопируйте обновленный артефакт, затем удалите каталог данных, чтобы очистить все кешированные пакеты, затем перезапустите karaf (вы сделали эти шаги?). Затем выполните функцию: установите или добавьте функцию в файл functions.Boot в файле etc/org.apache.karaf.features.cfg, чтобы она устанавливалась автоматически при запуске. - person Tom Pantelis; 05.01.2018
comment
Я забыл упомянуть, что для 3 я считаю, что вам также нужно удалить system/org/opendaylight/*, чтобы он нашел все артефакты ODL в ~/.m2/repository. Обычно я не использую дистрибутивы для конкретных проектов — у меня есть собственная локальная установка karaf, в которую я развертываю функции через featureBoot и где я настроил org.ops4j.pax.url.mvn.cfg для поиска в ~/. м2/хранилище. Когда мне нужно повторно развернуть обновления, я останавливаю karaf, перестраиваю артефакт, удаляю data/* и перезапускаю karaf. - person Tom Pantelis; 05.01.2018
comment
Для второго метода я сделал все, кроме удаления каталога данных. После этого - работает отлично. Спасибо вам за помощь! - person SivanBH; 10.01.2018