DLUX组件扩展下篇-实践

简介:

一、文章目标

1.1目标

随着SDN技术的逐步成熟,大量的传统数通厂家和新型的IT厂家,都投入了一定的人员进行相关的产品技术预研。而ODL作为SDN控制器的主要开源项目,自然也成了多数人学习和搭建模拟环境试验的首选。但是,从本人切入了解、学习以及在此上面,完成产品预研的经历看,由于文档缺失、网上各种文章质量不等,从搭建环境、理解框架工作机制到完成模块扩展定制,花了大量的时间,因此特整理此文,希望从代码组织、工作原理及扩展实践几个维度,系统的说明相关步骤,以方便后续人员了解、少走弯路、节省时间!

另外,开源系统自带的DLUX相关组件,由于界面比较简约,个人认为主要价值是示例性质、各团队若在ODL基础上,进一步研发自己的产品,势必会进行组件扩展,因此也希望本扩展用例能再这方面也产生一定的推进作用。

1.2文章环境及版本

b57aff8e46071e307d680aa721017edcb03711ee

1.3 所需背景知识

参考:DLUX组件扩展上篇-原理

需要了解: DLUX 组件注册的view的动态添加、UI-Route状态设置、nav菜单添加、Sec-logo设置、编译工程依赖等信息。

二、扩展新组件

本节以增加新feature组件dlux-apps-cowin为例,逐步详细介绍各个步骤:

2.1新Feature添加

./karaf(ODL的服务器端运行命令),系统默认加载的feature信息配置文件为当前目录的../etc/org.apache.karaf.features.cfg文件中:

47bde9e671cd5d8fd3c7be4b3e94e3a9588f4f78

其中,红色标记为加载的opendaylight的集成feature信息,上述文件对应:

/home/sdn/opendaylight/distribution-karaf-0.6.4-Carbon/system/org/opendaylight/integration/features-integration-index/0.6.4-Carbon/ eatures-integration-index-0.6.4-Carbon-features.xml文件。

1341b94e0387eacae3eee47d9018e2de3d75f8a6

在Features.xml (dluxapps\features\features-dluxapps\src\main\features) 中,修改两处:

8cddc10c99434c0ce3e70c3462f5c2a6802637a5

确保在./karaf的控制台下,使用

Feature:list | grep dlux 可以发现odl-dluxapps-cowin组件。

在当前目录下,增加Odl-dluxapps-cowin目录,如下,并参考topology目录下pom.xml配置工程文件:

b3dde8175b1cfe36ee8fedfdbebce4afc4454345

Pom.xml文件如下:

ce0b702b3848964b190890c9657c3687cc3bcf36

2.2 新模块的注册

如图,在dluxapps/Applications目录下,创建对应Cowin的目录:

fab596a146eb0fe459f07086fed7474555ccef62

参考topology目录,确定相关文件:

0f472b3a49bfe8bfc89cc1114470778e3f20225e

设置背景为淡蓝色。

2.3 新模块需要的资源的放置

在src\asserts\images下,放置:logo_cowin.gif文件

修改gulp.js的build.config.js文件,确保工程构建时,拷贝到对应的asserts目录下。

2.4 根据运行web服务目录构建本地调试环境

见2.2 web服务目录结构,拷贝ODL工程目录下对应的jar包并解压到相应目录:

如:

默认build 并install的工程目录为Linux下当前用户根目录.m2下:

~/.m2/repository/org/opendaylight/dlux/dlux.loader.resources/0.5.4-Carbon/

dlux.loader.resources-0.5.4-Carbon.jar,使用tar解压到本地,文件内容包括:

61eac7293a1ed0db5529342e3bcbed9a617ea2b1

其它的modules组件在对应的dluxapps目录下,类似方式解压到对应目录即可。

构建目录架构,如图所示:

c7b392f63a52b9c8b77d6ba22cd36af98c8b20ee

其中:

①、②就是dlux-Modules-loader-resources下文件

③是assets下image文件,需要将logo 文件放置在该目录

④将dluxapps的新建的module cowin相关文件拷贝放置该目录

2.5 编译完成,并在karaf中install

2.5.1 编译

编译,在dluxapps目录下,运行:

c3d776d974fad1aaaac6a181d6ccc5a16f0357b0

确认编译成功即可。

2.5.2 安装

A:su运行./karaf

B:在控制台,查看dlux相关的feature

命令: feature:list | grep dlux

如下所示:

ecaa41f4b66694c2e7f02c66e8f63cf880616bd7

C:安装

命令: feature:install odl-dluxapps-cowin

如下所示:

fa17a56320c35c27df23bd8a15aa1d1409ab1477

2.6 web打开

输入:http://20.0.0.22:8181/index.html,其中20.0.0.22为ODL运行服务器IP。

9fe5874bb6de788399256a4a3388f9126174b621

至此,一个全新的dlux module Cowin完全安装成功!

三、其它说明

介于篇幅所限,文章只把关键的步骤和过程中,自己碰到的坑,都详细记录。但是还有比较多的如工程pom.xml文件配置等,未涉及,只要参考类似模块,应该可以顺利完成。


原文发布时间为:2018-10-11

本文作者:M.S-Group.皮皮熊

本文来自云栖社区合作伙伴“SDNLAB”,了解相关信息可以关注“SDNLAB”。

相关文章
|
存储 数据采集 人工智能
如何设计一个监控平台(上篇)
在大型分布式微服务场景下,各个服务版本快速迭代,各类业务规模不断膨胀,同时监控的场景也在不断的发生变化,线上故障随时可能发生,各个平台错综复杂,如何保证线上服务稳定运行,同时提升运维效率,降低运维成本成了监控平台的挑战。
如何设计一个监控平台(上篇)
|
3月前
|
存储 监控 安全
插件机制详解:原理、设计与最佳实践
插件机制详解:原理、设计与最佳实践
109 0
|
3月前
|
Web App开发 存储 前端开发
谈谈企业级应用的自定义 UI 创建和集成方法一览
谈谈企业级应用的自定义 UI 创建和集成方法一览
31 0
|
4月前
|
设计模式
二十三种设计模式全面解析-桥接模式的高级应用:构建灵活的跨平台UI框架
二十三种设计模式全面解析-桥接模式的高级应用:构建灵活的跨平台UI框架
|
7月前
|
负载均衡 算法 Java
SpringCloud原生五大组件简述
SpringCloud原生五大组件简述
1096 0
|
9月前
|
设计模式 安全 Java
基于设计模式改造短信网关服务实战篇(设计思想、方案呈现、源码)
基于设计模式改造短信网关服务实战篇(设计思想、方案呈现、源码)
209 0
|
测试技术 Python
【第五篇-完结篇】XiaoZaiMultiAutoAiDevices之改造扩展
在前面系列文章中有讲到,使用configparser,ini格式的文件作为配置文件,在新增或者删除其中的值时,会丢失所有注释,所以在框架源码注释中我有写到,如果对这方面比较介意或者是有需求的话,可以进行更改配置文件。
106 0
|
数据可视化 前端开发 Java
云巧组件如何实现代码架构设计可视化
在项目搭建完成进行了N个迭代之后,往往因为需求的变化以及设计的缺陷导致领域模型、接口、数据库设计等和最开始的时候大为不同,架构设计需要保鲜会花去大量的时间。有没有一种办法可以实时反应项目的各种技术设计呢?就像Swagger一样,代码自动生成文档。我们采用了静态代码扫描的方案,通过代码来反应真实的技术设计,这就是《云巧工坊-应用素描》的功能。
233 0
|
架构师 前端开发
上篇:技术架构的设计方法
技术思考本质还是结构化思考,所以常见的结构化思考方法也是适用的。这也是大家会看到很多技术架构师都会用一些方法论去分析问题的原因。但这里我不是重新去论述这些常见的技巧,而是分享从技术实战中得到的一些思考方法,为此我分为了技术架构设计的方法和技术 Leader 的思考方法两类。
999 0
上篇:技术架构的设计方法
|
消息中间件 前端开发 Java
开发中遇到的问题&解决方案(十二)
由于之前做过贷款平台和电商平台,所以对于订单这个东西十分的敏感,有段时间有点疯狂的喜欢逮着京东、淘宝、拼多多的订单页看,思考别人在做的购物车和订单这块是怎么实现的,尝试找找Bug什么的,后面出去面试别人看我的项目也会问一些关于订单如何设计和实现的问题,所以感觉这个东西还是有讲的必要,下面进入主题。
190 0
开发中遇到的问题&解决方案(十二)