OpenDaylight的示例

网友投稿 181 2024-01-26

OpenDaylight提供了一个例子:Toaster(烤面包机),借这个例子学习OpenDaylight的特性在Toaster中,真正有关烤面包机相关的代码较少,它只是一种OpenDaylight具体思想的展示品,已有相关文章对其进行了分析。

现在我们举一个永恒的示例:Hello World一、应用程序类型OpenDaylight应用程序开发,分如下两种:(1)如果提供API的接口能够满足当前需求,那么只需基于REST API开发External System(外置式应用程序);

(2)如果提供的API接口不能满足当前需求,则需要进行Internal System(内置式应用程序)的开发,可以理解为插件二、应用程序开发流程对于External System来说,我们在介绍基于REST API。

编程时再进行介绍。下面我们来看下,Internal System的开发流程如下图所示:

(1)生成项目骨架(Archetype)Archetype是一个Maven项目模板工具包,使用Archetype来生成项目骨架,可以使得开发人员在开发新的应用程序时,使用与ODL风格一致的最佳实践方法(2)定义模型(model)

YANG在OpenDaylight中做为建模语言使用,MD-SAL中M即是YANGYANG的使用已不局限于NETCONFYANG模型定义之后,通过YANG TOOLS可以自动生成部分代码,但对于Model对应的具体实现需要添加相关业务逻辑。

执行mvn clean install -Dmaven.test.failure.ignore=true

(3)代码实现①实现Impl:添加业务逻辑(上图蓝色部分);②配置blueprint.xml:xml文件定义和描述了不同组件的组装,它是Blueprint编程模型的关键规范描述了组件如何获得实例,如何捆绑到一起形成一个运行模块。

(4)构建安装执行 mvn clean install命令,可以将代码打包并安装到仓库中。

(5)测试OpenDaylight提供了API测试页面,可以在该页面直接进行API的测试,地址为:http://localhost:8181/apidoc/explorer/index.html三、Hello示例

1.构建Hello项目步骤1 执行构建项目命令:mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeAr

tifactId=opendaylight-startup-archetype -DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ -DarchetypeCatalog=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/arche

type-catalog.xml输入Hello交互信息:Define value for property groupId: org.opendaylight.helloDefine value for property artifactId: hello

[INFO] Using property: version = 0.1.0-SNAPSHOTDefine value for property package org.opendaylight.hello: :

Define value for property classPrefix Hello: : helloDefine value for property copyright: No[INFO] Using property: copyrightYear = 2017

Confirm properties configuration:groupId: org.opendaylight.helloartifactId: helloversion: 0.1.0-SNAPSHOT

package: org.opendaylight.helloclassPrefix: hellocopyright: NocopyrightYear: 2017Y: : Y安装成功的信息提示:[INFO] ----------------------------------------------------------------------------

[INFO] Using following parameters for creating project from Archetype: opendaylight-startup-archetype:1.3.0-Carbon

[INFO] ----------------------------------------------------------------------------[INFO] Parameter: groupId, Value: org.opendaylight.hello

[INFO] Parameter: artifactId, Value: hello[INFO] Parameter: version, Value: 0.1.0-SNAPSHOT[INFO] Parameter: package, Value: org.opendaylight.hello

[INFO] Parameter: packageInPathFormat, Value: org/opendaylight/hello[INFO] Parameter: classPrefix, Value: hello

[INFO] Parameter: package, Value: org.opendaylight.hello[INFO] Parameter: version, Value: 0.1.0-SNAPSHOT

[INFO] Parameter: copyright, Value: No[INFO] Parameter: groupId, Value: org.opendaylight.hello[INFO] Parameter: artifactId, Value: hello

[INFO] Parameter: copyrightYear, Value: 2017[WARNING] Dont override file D:\\CODE\\odlexample\\hello\\hello\\pom.xml

[INFO] Project created from Archetype in dir: D:\\CODE\\odlexample\\hello\\hello[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 45.526 s

步骤2. 构建Hello项目,执行命令mvn clean install -Dmaven.test.failure.ignore=true[INFO] --- maven-site-plugin:3.6:att

ach-descriptor (generate-site) @ hello-aggregator ---[INFO] Attaching src\\site\\site.xml site descriptor with classifier site.

[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary:

[INFO][INFO] ODL :: org.opendaylight.hello :: hello-api ......... SUCCESS [ 19.565 s][INFO] ODL :: org.opendaylight.hello :: hello-impl ........ SUCCESS [ 8.826 s]

[INFO] ODL :: org.opendaylight.hello :: hello-cli ......... SUCCESS [ 8.878 s][INFO] ODL :: org.opendaylight.hello :: hello-features .... SUCCESS [15:41 min]

[INFO] ODL :: org.opendaylight.hello :: hello-karaf ....... SUCCESS [ 41.676 s][INFO] ODL :: org.opendaylight.hello :: hello-artifacts ... SUCCESS [ 1.794 s]

[INFO] ODL :: org.opendaylight.hello :: hello-it .......... SUCCESS [03:38 min][INFO] hello .............................................. SUCCESS [ 23.209 s]

[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------

[INFO] Total time: 21:07 min生成的项目骨架为:

生成的代码文件为:

2.定义模型步骤1 修改 api/src/main/yang/hello.yang,增加简单的Hello RPC信息:

步骤2 执行命令:mvn clean install -Dmaven.test.failure.ignore=true

3.代码实现步骤1 实现Impl:

步骤2 配置blueprint.xml在文件impl-blueprint.xml( src/main/resources/org/opendaylight/blueprint)注册RPC引用,增加粗体部分信息。

注:在 Blueprint XML 中,bean 元素将定义一个 bean 管理器用于对象构造的参数由 argument 元素指定;注入的属性则由 property 子元素指定property 元素指定要注入的属性的名称和值。

属性名与 Java 类中的 setter 方法名对应例如,如果属性名为 foo,那么对应的 setter 方法为 setFoo(arg)属性名和对应的 setter 方法名遵循 JavaBeans 规范中定义的属性设计模式。

步骤3 类HelloProvider中init方法中绑定HelloService和HelloWorldImpl

4.构建安装、启动测试步骤1 执行命令 mvn clean install步骤2 启动OpenDaylight\\CODE\\odlexample\\hello\\hello\\karaf\\target\\assembly\\bin>karaf

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256M; support was removed in 8.0Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0

Apache Karaf starting up. Press Enter to open the shell now...100% [========================================================================]

Karaf started in 29s. Bundle stats: 294 active, 294 total步骤3 浏览器打开如下地址(admin\\admin):http://localhost:8181/apidoc/explorer/index.html

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:FreeRTOS中其他任务API函数
下一篇:Linux MIPI CSI开发指南
相关文章

 发表评论

暂时没有评论,来抢沙发吧~