OpenDaylight开发----建立odlops工程…
来源:互联网 发布:单片机电子琴设计 编辑:程序博客网 时间:2024/05/18 02:33
OpenDaylight开发----建立odlops工程
建立该工程的目的是使得用户可以通过OpenDaylight的北向接口获取OpenStack中虚拟机、镜像、类型模板和网络等信息,并且在OpenStack中动态的创建虚拟机、网络及子网。这里的OpenDaylight模拟以后开发中Orchestrator的功能。
流程框图
参考文献
OpenStack API文档:https://developer.openstack.org/api-guide/quick-start/
OpenDaylight MDSAL启动项目原型:
https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_Archetype
开发配置
这里实现的场景是用户给OpenDaylight发送创建虚拟机请求,OpenStack创建网络并自动添加子网,然后添加三个虚拟机到这个子网上。这种场景会涵盖OpenStack中一些基本接口的调用。
一、创建启动项目原型:
1、运行原型并创建”odlops”项目
mvn archetype:generate-DarchetypeGroupId=org.opendaylight.controller-DarchetypeArtifactId=opendaylight-startup-archetype \
-DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/
-DarchetypeCatalog=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/archetype-catalog.xml
Define value for property 'groupId': :org.opendaylight.odlops
Define value for property 'artifactId': :odlops
Define value for property 'version':1.0-SNAPSHOT
Define value for property'package':
Define value for property'classPrefix':
Define value for property 'copyright': : Yoyodyne,Inc.
2、构建‘odlops‘工程:
mvn clean install
3、
cd karaf/target/assembly/bin
4、
- module odlops {
-
yang-version 1; -
namespace"urn:opendaylight:params:xml:ns:yang:odlops"; -
prefix "odlops"; -
-
revision "2015-01-05" { -
description "Initial revision of odlopsmodel"; -
} -
rpc odl { -
input{ -
leaf operation { -
typestring; -
} -
} -
-
output{ -
leaf greeting { -
typestring; -
} -
} -
} - }
- package org.opendaylight.odlops.impl;
-
- import java.util.concurrent.Future;
-
- importorg.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odlops.rev150105.OdlopsService;
- importorg.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odlops.rev150105.OdlInput;
- importorg.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odlops.rev150105.OdlOutput;
- importorg.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odlops.rev150105.OdlOutputBuilder;
- import org.opendaylight.yangtools.yang.common.RpcResult;
- importorg.opendaylight.yangtools.yang.common.RpcResultBuilder;
-
- public class OdlImpl implements OdlopsService {
-
-
@Override -
public Future>odl(OdlInput input) { -
OdlOutputBuilder odlBuilder = newOdlOutputBuilder(); -
odlBuilder.setGreeting("Hello " +input.getOperation()); -
returnRpcResultBuilder.success(odlBuilder.build()).buildFuture(); -
} - }
- package org.opendaylight.odlops.impl;
-
- importorg.opendaylight.controller.md.sal.binding.api.DataBroker;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- importorg.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
- importorg.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
- importorg.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odlops.rev150105.OdlopsService;
-
- public class OdlopsProvider {
-
-
private static finalLogger LOG = LoggerFactory.getLogger(OdlopsProvider.class); -
-
private final DataBrokerdataBroker; -
private finalRpcProviderRegistry rpcProviderRegistry; -
private RpcRegistrationserviceRegistration; -
-
publicOdlopsProvider(final DataBroker dataBroker,RpcProviderRegistryrpcProviderRegistry) { -
this.dataBroker = dataBroker; -
this.rpcProviderRegistry =rpcProviderRegistry; -
} -
-
-
public void init() { -
serviceRegistration =rpcProviderRegistry.addRpcImplementation(OdlopsService.class, newOdlImpl()); -
LOG.info("OdlopsProvider SessionInitiated"); -
//serviceRegistration =rpcProviderRegistry.addRpcImplementation(OdlopsService.class, newOdlImpl()); -
} -
-
-
public void close(){ -
serviceRegistration.close(); -
LOG.info("OdlopsProvider Closed"); -
} - }
-
-
xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" -
odl:use-default-for-reference-types="true"> -
-
-
interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" -
odl:type="default"/> -
-
-
interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/> -
-
-
class="org.opendaylight.odlops.impl.OdlopsProvider" -
init-method="init"destroy-method="close"> -
-
-
-
}
- OpenDaylight开发----建立odlops工程…
- OpenDaylight开发----建立odlops工程(二)
- 如何建立OpenDaylight Controller集群
- OpenDayLight开发环境搭建
- Opendaylight控制台命令开发方法
- 【问题】eclipse开发android之建立工程
- 1.Ext JS 建立web开发工程
- Davinci DM6446开发攻略——DSP开发工程建立
- Davinci DM6446开发攻略——DSP开发工程建立
- Davinci DM6446开发攻略——DSP开发工程建立
- Davinci DM6446开发攻略——DSP开发工程建立
- Davinci DM6446开发攻略——DSP开发工程建立
- Opendaylight REST API 客户端开发(1)
- OpenDaylight开发学习笔记基础篇
- 开发OpenDaylight组件的完整流程
- 开发第一个OpenDaylight中的OSGI bundle
- OpenDayLight(硼Boron版本)实战开发入门
- 在OpenDayLight控制器上开发Bundle
- 阿里云ecs服务器登录密码忘记
- vue.js的devtools安装
- js正则表达式验证大全
- 刚刚得知怀孕的消息的紧张与兴奋
- java中怎么判断一个字符串是否存在数组中
- OpenDaylight开发----建立odlops工程…
- 深度学习足迹
- ArrayBuffer:类型化数组
- Java的接口和抽象类详解
- mybatis查询列表
- (1)
- 【数据库-MySql】函数
- 帆软发布大数据直连引擎FineDirect,对焦大数据BI
- C#中HttpWebRequest与HttpWebResponse的使用方法