OpenDlight MD-SAl应用开发(四)- MD-SAL HelloWord开发案例演示

目录

1. 开发流程总述

1.1 Yang Tools

1.2 开发流程简介

2. 开发案例介绍

2.1 生成项目骨架

2.2 模块逻辑代码编写

2.3 模块功能测试


1. 开发流程总述

本小节默认已经搭建好开发环境,并且能够成功执行Controller源码编译,下面将用一个简单的HelloWord实例来介绍ODL应用开发过程。

1.1 Yang Tools

在了解开发流程之前,我们首先已经认识了ODL的框架-OSGI,ODL的项目管理工具-Maven,ODL数据建模语言-YANG。除此之外,我们知道ODl是用java语言编写的,那么我们还需要了解一个重要的组件:Yang Tools。

主要功能包括将YANG模型转译为JAVA代码,将YANG模型转译为标准化节点的方式(类DOM树模型)和Java Binding方式。并提供了YANG数据模型与XML、JSON,以及Java Binding与标准节点格式间的序列化和反序列化支持。

其包括的YANG Maven Plugin所实现的Maven插件,可以在Maven构建生命周期中,基于YANG数据模型为其它组件生成Java代码(框架)。

1.2 开发流程简介

(1)首先由YANG来定义数据模型。

(2)由Maven编译,在编译中会调用Yang Tools组件将Yang语言转换成Java的实现类和接口,生成Bundle的API部分。

(3)在上一步编译生成的接口和类中实现相应的业务逻辑。

(4)由Maven编译生成Bundle的主体部分plugin。

(5)最终将API和plugin部署到控制器中。

2. 开发案例介绍

2.1 生成项目骨架

(1)在工作目录下由maven生成1.3.1-Carbon的项目骨架

执行以下命令:

mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.release -DarchetypeCatalog=remote -DarchetypeVersion=1.3.1-Carbon

(2)根据命令行提示,填写项目信息

Downloaded: https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/controller/opendaylight-startup-archetype/1.3.1-Carbon/opendaylight-startup-archetype-1.3.1-Carbon.jar (28 KB at 30.6 KB/sec)

Define value for property 'groupId': com.mycompany.proj

Define value for property 'artifactId': traffic

[INFO] Using property: version = 0.1.0-SNAPSHOT

Define value for property 'package' com.mycompany.proj: :

Define value for property 'classPrefix' Traffic: :

Define value for property 'copyright': MyCompany

[INFO] Using property: copyrightYear = 2017 Confirm propertmvnies configuration:

groupId: com.mycompany.proj

artifactId: traffic

version: 0.1.0-SNAPSHOT

package: com.mycompany.proj

classPrefix: Traffic

copyright: MYCompany 

copyrightYear: 2017

Y: : Y

(3)编译生成的项目

在新 生成的traffic项目目录下执行

mvn clean install -DskipTests

初次执行需要等待一段时间,执行完毕。

2.2 模块逻辑代码编写

2.2.1 项目的目录结构介绍

• api/ yang模型文件目录

• artifacts/ 管理项目组件的坐标

• cli/ 命令行工具实现目录

• features/ feature组织

• impl/ 业务逻辑实现

• it/ 集成测试

• karaf/ 打包karaf版本

• pom.xml 根pom

2.2.2 编译生成IDEA工程

(1)在traffic目录下执行命令

mvn idea:idea

执行完成后,生成.ipr文件如图所示:

(2)使用IDEA打开traffic-aggregator.ipr文件,得到maven工程。

(3) 定义YANG模型

修改 api/src/main/yang/traffic.yang文件,添加一个rpc。修改内容如下:

rpc hello-world {

        input {

        leaf name {

                type string;

        }

}

        output {

               leaf greeting {

                       type string;

               }

        }

}

(4)编译生成API接口

编译YANG文件,这个过程会有Maven调用YangToller编译,最后生成Bundle的API接口。

进入api目录

cd /traffc/api

编译

mvn clean install -DskipTests

编译成功后,生成API接口。接下来就需要通过修改impl目录下的文件,来编译Bundle的主体内容,实现上面生成的接口。

编译成功提示:BUILD SUCCESS

(5)实现接口/实现业务逻辑

修改Java代码(impl/src/main/java/com/mycompany/proj/impl/TrafficProvider.java),注意红色部分。

public class TrafficProvider implements TrafficService {

...(省略内容)

public Future<RpcResult<HelloWorldOutput>> helloWorld(HelloWorldInput input) {

        HelloWorldOutputBuilder helloBuilder = new HelloWorldOutputBuilder();

        helloBuilder.setGreeting("Hello " + input.getName());

        return RpcResultBuilder.success(helloBuilder.build()).buildFuture();

        }

(6)修改blueprint文件,注册生成新的Provider

文件路径:impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml

在文件中新加以下内容:

<odl:rpc-implementation ref="provider" />

如图所示:

(7)修改traffic/POM.xml文件

(8)编译生成发布版本:

在/traffc 目录下执行:

mvn clean install -DskipTests

编译成功提示:

BUILD SUCCESS

2.3 模块功能测试

(1)运行生成的traffic bundle

进入目录

cd traffic/karaf/target/assembly/bin

执行

./karaf

查看traffic是否在opendaylight中

list | grep traffic

运行成功提示以下内容:

(2)安装插件,用于浏览器登录:

feature:install odl-dlux-core

feature:install odl-mdsal-apidocs

feature:install odl-restconf-all

(3)使用谷歌浏览器登录

http://localhost:8181/index.html

密码/账户:admin admin

找到对应的traffic bundle,打开helloword rpc,在右侧界面点击FORM,输入字符串zswang,点击send。

得到返回结果:Hello zswang

如图所示:

至此,完成了第一个MD-SAL插件的开发。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值