51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1308|回复: 0
打印 上一主题 下一主题

OpenDaylight新建HelloWorld工程并集成版本

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-9-17 15:56:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    网上很多OpenDaylight的HelloWorld教程,本人就参照Lithium-SR3版本的Developers Guide (大约在17-21页),写了一个HelloWorld项目。
    本文对新建工程和集成到发行版的过程进行简单总结。
    1、生成新的MAVEN工程。
    Shell
    cd ~/work/odl
    mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=https://nexus.opendaylight.org/content/repositories/public/ -DarchetypeCatalog=https://nexus.opendaylight.org/content/repositories/public/archetype-catalog.xml -DarchetypeVersion=1.0.3-Lithium-SR3
    请注意该命令的最后一个参数,-DarchetypeVersion=1.0.3-Lithium-SR3,该参数可指定对应的发行版版本。本人在写HelloWorld之前编译过1.0.3-Lithium-SR3的controller等工程源码,采用此命令后会大大减少依赖下载,缩短新建时间。该参数值的查询可到(链接)。
    要输入的值如下:
    Shell
    Define value for property 'groupId': : org.opendaylight.hello2
    Define value for property 'artifactId': : hello2
    Define value for property 'version': 1.0-SNAPSHOT: :
    Define value for property 'package': org.opendaylight.hello2: :
    May 12, 2016 9:42:04 AM org.apache.velocity.runtime.log.JdkLogChute log
    INFO: FileResourceLoader : adding path '.'
    Define value for property 'classPrefix': Hello2: :
    Define value for property 'copyright': : c
    最后按Y,回车,进行确认。
    2、对工程进行一次编译
    此时,目录下根据之前输入的artifactId,已生成了hello2文件夹。
    Shell
    cd ~/work/odl/hello2
    mvn clean install -D skipTests
    编译结果如下:
    Shell
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] hello2-api ......................................... SUCCESS [ 32.556 s]
    [INFO] hello2-impl ........................................ SUCCESS [ 13.257 s]
    [INFO] hello2-features .................................... SUCCESS [02:18 min]
    [INFO] hello2-karaf ....................................... SUCCESS [05:53 min]
    [INFO] hello2-artifacts ................................... SUCCESS [ 2.013 s]
    [INFO] hello2 ............................................. SUCCESS [ 21.903 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 09:25 min
    [INFO] Finished at: 2016-05-12T09:53:46+08:00
    [INFO] Final Memory: 90M/282Ms
    [INFO] ------------------------------------------------------------------------
    3、代码编写,请参照Developers Guide,建议使用Eclipse编写。
    该步骤主要包含yang文件的编写,定义RPC服务,然后根据yang生成相应的接口;
    对接口编写实现代码,最后在Provider中对Rpc进行注册。
    编写完成后请再次进行编译mvn clean install -D skipTests。
    此时可在~/.m2/repository/org/opendaylight/hello2中找到编译好的文件,如下:
    Shell
    sdn@sdn100:~/.m2/repository/org/opendaylight/hello2$ ll
    total 24
    drwxrwxr-x 6 sdn sdn 4096 5月 12 09:53 ./
    drwxrwxr-x 44 sdn sdn 4096 5月 12 09:44 ../
    drwxrwxr-x 3 sdn sdn 4096 5月 12 09:44 hello2-api/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 09:53 hello2-artifacts/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 09:47 hello2-features/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 09:45 hello2-impl/
    4、<可跳过该步骤>使用内置的karaf对工程进行测试
    执行~/work/odl/hello2/karaf/target/assembly/bin/karaf
    5、将hello2集成到ODL发行版:复制文件
    本人采用的发行版为OpenDaylight Lithium SR3,解压后位于~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/,后文简称该路径为。
    进入目录,可以看到其中包含system子目录,该目录即为发行版所用的仓库(Repository)。
    进入system目录,并保证子目录org/opendaylight/hello2存在:
    Shell
    sdn@sdn100:~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system$ mkdir -p org/opendaylight/hello2
    进入hello2目录:
    Shell
    sdn@sdn100:~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system$ cd org/opendaylight/hello2/
    复制~/.m2中相应内容:
    Shell
    sdn@sdn100:~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system/org/opendaylight/hello2$ cp -r ~/.m2/repository/org/opendaylight/hello2/* .
    此时该目录包含的内容包括:
    Shell
    sdn@sdn100:~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system/org/opendaylight/hello2$ ll
    total 24
    drwxrwxr-x 6 sdn sdn 4096 5月 12 10:12 ./
    drwxr-xr-x 39 sdn sdn 4096 5月 12 10:09 ../
    drwxrwxr-x 3 sdn sdn 4096 5月 12 10:12 hello2-api/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 10:12 hello2-artifacts/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 10:12 hello2-features/
    drwxrwxr-x 3 sdn sdn 4096 5月 12 10:12 hello2-impl/
    6、将hello2集成到ODL发行版:添加仓库
    启动发行版的karaf:
    Shell
    ~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/bin/karaf
    记得首先执行的是安装odl-mdsal-clustering,再安装其他特性:
    Shell
    feature:install odl-mdsal-clustering
    feature:install odl-restconf
    feature:install odl-dlux-all
    若不安装odl-mdsal-clustering,直接安装odl-dlux-all,则登录网页时会报Login Failed,事实上是验证服务无法使用。
    添加hello2的仓库,执行:
    Shell
    feature:repo-add mvn:org.opendaylight.hello2/hello2-features/1.0-SNAPSHOT/xml/features
    查看添加情况:
    已经可以看到新装的特性。 最后执行安装:
    7、测试:
    登录页面http://127.0.0.1:8181/index.html,可在YANG UI/API中找到相应的功能,进行测试。
    本文的关键是feature:repo-add mvn:org.opendaylight.hello2/hello2-features/1.0-SNAPSHOT/xml/features mvn:之后:
    第一节(org.opendaylight.hello2)为groupId;
    第二节(hello2-features)为生成的feature文件夹名,可在~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system/org/opendaylight/hello2文件夹中进行查看;
    第三节(1.0-SNAPSHOT)为版本号,可在~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/system/org/opendaylight/hello2/hello2-features中进行查看;
    第四、五节(xml/features)大家都这样写的,照着抄的。
    至此,HelloWorld工程的新建与安装就完成了。本人也是刚刚接触ODL,难免有理解、操作上的错误,若发现问题,希望各位及时指出,谢谢。

    作者简介:董青,现就职于迈普通信技术股份有限公司,主要从事SDN相关技术研究。

    --------------华丽的分割线------------------
    本文系《SDNLAB原创文章奖励计划》投稿文章,该计划旨在鼓励广大从业人员在SDN/NFV/Cloud网络领域创新技术、开源项目、产业动态等方面进行经验和成果的文字传播、分享、交流。有意向投稿的同学请通过官方唯一指定投稿通道进行文章投递,投稿细则请参考《SDNLAB原创文章奖励计划》
    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 21:52 , Processed in 0.070582 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表