【问题标题】:Install a custom feature or module in Opendaylight?在 Opendaylight 中安装自定义功能或模块?
【发布时间】:2020-07-23 17:37:58
【问题描述】:

我最近创建了一个基本的 HelloWorld ODL 模块,名称为 stepped out here,并且我能够使其工作。即,我可以针对它运行 restful POST 命令并得到我的“你好”回复。

{
    "output": {
        "greeting": "Hello Andrew"
    }
}

现在,我想做的是将此模块安装到从integration distro repos 编译的实际 ODL 中。

我遵循的步骤是:

  1. 成功创建 HelloWorld ODL 模块并从 HelloWorld karaf 子文件夹中运行 karaf

  2. 知道 mvn install 针对 Hello 项目会将此模块发布到我的本地 .m2/repository/org/opendaylight/hello 存储库中,我继续进行实际的 ODL 集成/发行版

  3. 在 ODL 的 features/repos/index/pom.xml 文件中,我添加了以下配置文件:

    <profile>
        <id>hello</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
          <dependency>
              <groupId>org.opendaylight.hello</groupId>
              <artifactId>features-hello</artifactId>
              <classifier>features</classifier>
              <version>1.0-SNAPSHOT</version>
              <type>xml</type>
          </dependency>
        </dependencies>
    </profile>
    
  4. 然后我在 ODL 上成功运行 mvn install 并且在该配置文件上没有错误。 (注意:如果我在该个人资料部分输入任何内容,mvn install 将失败)

  • 我在我的应用程序中对 ODL v0.11.0 和 Sodium 1.2.0 做所有事情,所以我确信版本是正确的。

一切都说了又做了,ODL karaf 确实启动了,我可以针对它运行 rest 命令...但是,纯粹针对 HelloWorld 模块工作的相同 POST 命令在集成发行版 ODL 中不起作用。相反,我收到了这条错误消息:

{
    "errors": {
        "error": [
            {
                "error-type": "protocol",
                "error-tag": "unknown-element",
                "error-message": "The module named 'hello' does not exist."
            }
        ]
    }
}

在某些方面,这个问题有点延伸到我之前的问题:Source code of the full OpenDaylight Integration Distribution Bundle。因此,只需在这里将它们链接在一起即可。

更新: 我在这里创建了一个与这个问题相反的问题:Procedure to add features to OpenDaylight application

注意:

  • feature:list 部分,我没有看到 Hello 列表

【问题讨论】:

    标签: opendaylight


    【解决方案1】:

    ODL 集成发行版默认不安装任何 karaf 功能,因此一旦您启动发行版,请检查您的项目功能是否已安装(例如 feature:list -i)。如果不是,只需安装它(例如 feature:install )。

    【讨论】:

    • 很遗憾,“hello”示例功能未在功能列表中列出...
    • 我不确定它是什么,但在构建集成/分发时,可能有一些小的缺失不会将您的功能带入其中。尝试与另一个项目进行比较,看看你是否能弄清楚。也许检查 aaa 项目并将其与 odl-aaa-cert 之类的功能之一进行比较。顺便说一句,如果您发现文档中缺少一些基本步骤,请告诉我们(电子邮件)或者更好,您可以自己更新文档并为 opendaylight 做出贡献:)
    • @jamo 我假设你的意思是复制这个 repo github.com/opendaylight/aaa/tree/master/aaa-cert 的结构并修改它以适应我们自己的模块?
    • @jamo - 换句话说,“我如何创建一个新功能并确保它在 karaf 的功能:列表部分中正确列出” - 我无法找到有关这样做的文档.
    • 不,我的意思是克隆 AAA 存储库,然后查看它的配置(例如 pom.xml 文件)以了解如何定义和设置 odl-aaa-cert 功能。我知道该功能在 feature:list of a full distribution 中可用。你可能会在你的 hello 项目中找到一些你错过的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2020-11-02
    相关资源
    最近更新 更多