本章我们将写一个自己的core plugin 和一个resource extension来加深理解.(阅读本文的前提是你已经理解了restful以及stevedore等内容) 什么是 core plugin neutron的plugin有core和service两种.core plugin实现core resource的增删改查,service plugin我们在本文暂不讨论. core resource 有network/subnet/port/subnet-pool.每种资源对应CURD和i…
We have learned core plugin, service plugin and extension in last post. Now let`s review: Core Plugin Core plugin manage core resources which are network, subnet, port and subnetpool. Service Plugin Service plugin manage higher services. extension Ex…
本文的目的不是介绍openstack.我们这里假设你已经知道了openstack是什么,能够做什么.所以目的是介绍如何阅读openstack的代码.通过读代码来进一步学习openstack. 转载要求你懂的:) 目的是懂python和web编程的人看完就能懂neutron代码, 如果没达到这个目的,说明写的不够清晰,欢迎各种建议 因为我们更关注neutron组件,所以后面的内容都是以neutron为基础 读openstack代码需要对很多技术有一定了解,如:wsgi/paste deploy/w…
之前我们看过了core plugin, service plugin 还有resource extension. resource extension的作用是定义新的资源.而我们说过还有两种extension: action extension 跟 request extension.这一章我们将写一个action extension. action in RESTful openstack中所有的网络服务都是RESTful风格的.但RESTful风格的URL有一个问题,如何表示动作. 像 ne…
上一节我们讨论了 ML2 Plugin 解决的问题,本节将继续研究 ML2 的架构. ML2 对二层网络进行抽象和建模,引入了 type driver 和 mechansim driver. 这两类 driver 解耦了 Neutron 所支持的网络类型(type)与访问这些网络类型的机制(mechanism),其结果就是使得 ML2 具有非常好的弹性,易于扩展,能够灵活支持多种 type 和 mechanism. Type Driver Neutron 支持的每一种网络类型都有一个对应的 ML…
我们在 Neutron Server 小节学习到 Core Plugin,其功能是维护数据库中 network, subnet 和 port 的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 network.上一节也介绍了两个 Core Plugin:linux bridge plugin 和 open vswitch plugin.本节将详细讨论更重要的 ML2 Core Plugin. Moduler Layer 2(ML2)是 Neutr…
鉴于不知道Neutron的人也不会看这篇文章,而知道的人也不用我再啰嗦Neutron是什么东西,我决定跳过Neutron简介,直接爆料. 首先要介绍一下我的开发环境.我没有使用DevStack,而是直接在电脑上安装了三个Virtual Box,然后根据OpenStack的Ubuntu 安装指南部署了一个环境:一个控制节点,一个网络节点和一个计算节点.接下来我会直接在控制节点上修改 <your path>/neutron/ 下面的文件,然后通过重启neutron 的各个service来更新我的修…
两个 Core Plugin:linux bridge plugin 和 open vswitch plugin.   Moduler Layer 2(ML2)是 Neutron 在 Havana 版本实现的一个新的 core plugin,用于替代原有的 linux bridge plugin 和 open vswitch plugin. 传统 core plugin 的问题 之所以要开发 ML2,主要是因为传统 core plugin 存在两个突出的问题. 问题1:无法同时使用多种 netw…
之前我们了解了neutron的结构,plugin 和 extension等信息.这一章我们看一下neutron如何加载这些plugin和extension.也就是neutron的启动过程.本文涉及的代码较多,而且调用过程复杂... 所以你手头最好有一份liberty版本的neutron代码,参考来看 回顾一下neutron的paste配置文件 [composite:neutron] use = egg:Paste#urlmap /: neutronversions /v2.0: neutrona…
今天这一章节非常重要.我们知道neutron是一个非常复杂的系统,由很多组件构成.研究这样一个复杂的系统,正确的顺序应该是现在宏观上对其整体结构有所了解,然后再由针对性的对其组件进行深入了解.本章要做的事情就是介绍neutron 宏观上的架构. 首先看一下下图: 人 - - > Neutron Server - - > Plugin - -> message queue - -> Agent (Extension) | | MySQL database 因为是markdown 编辑…