ONOS 2.0 新增应用

ONOS 2.0 新增应用

1、前置安装(参考)

2、应用说明

annotationx应用用于增加设备的扩展信息,包括设备的地理位置

3、应用基本目录结构

onos中的内部应用实现十分灵活,不同应用可以有不同的目录结构,通过分析已有的实现,选择了比较合理的目录结构。
annotationx应用目录结构
api负责提供北向接口,调用app提供的具体服务
app负责具体服务实现
BUILD文件负责应用的编译构建,其内容包括应用bundle、应用编译依赖、应用信息。这里根据需求模仿其它应用编写。
对于annotationx应用来说,其bundle包括了api及app。

4、app功能实现

onos应用中的类可以分为组件类和非组件类,组件类由OSGI容器管理。组件类之间可以利用OSGI互相访问。app中应该有一个或多个用于提供服务的组件类,其通过添加@Component注解添加到OSGI容器中,并利用@Reference注解从OSGI容器中获取其它组件服务。每个组件类需要实现activate及deactivate方法,在组件激活及取消激活时候调用。一般activate方法中实现服务初始化工作, deactivate中实现清理工作。
在这里插入图片描述

4、REST API功能实现

onos提供了rest api服务相关的框架,通过以下2步即可以实现一个应用的rest api服务。

4.1 在应用内构建rest包,添加WebApplication及WebResource类。其中WebApplication类继承自AbstractWebApplication,实现getClasses方法,返回WebResource.class。 WebResource继承自AbstractWebResource,实现具体的rest api请求响应处理

4.2 拷贝其它应用的webapp目到新应用的对应位置,修改web.xml中的servlet,将其param-value,改为WebApplication的完整路径名。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、添加新内部应用到onos模块文件中

新内部应用想要被onos使用,需要将其加入到onos模块文件中。Bazel工具根据该文件实现应用的编译加载。

模块文件目录:
onos/tools/build/bazle/modules.bzl

修改内容:
ONOS_APPS添加"//apps/annotationx:onos-apps-annotationx-oar",
APP_JARS添加"//apps/annotationx/api:onos-apps-annotationx-api",
及"//apps/annotationx/app:onos-apps-annotationx-app",

6、设备GUI修改

Topo Web UI显示在onos/web/gui/src/main/java/org/onosproject/ui/impl/目录下TopologViewMessageHandler及TopologViewMessageHandlerBase上实现。查看详细信息请求处理方法找到修改位置。
模仿已有实现添加自己的实现。
在这里插入图片描述
在这里插入图片描述

通过annotationx应用restapi上传指定OpenFlow交换机的annotation信息,刷新web页面
在这里插入图片描述

7 代码仓库

https://github.com/custhk/annotationx

猜你喜欢

转载自blog.csdn.net/daihanglai7622/article/details/105707634