We have learned resource extension and action extension. This post we will write a request extension First see two API call curl -X POST http://liberty-controller01:9696/v2.0/networks.json -H "Content-Type: application/json" -H "Accept: app…
之前我们看过了core plugin, service plugin 还有resource extension. resource extension的作用是定义新的资源.而我们说过还有两种extension: action extension 跟 request extension.这一章我们将写一个action extension. action in RESTful openstack中所有的网络服务都是RESTful风格的.但RESTful风格的URL有一个问题,如何表示动作. 像 ne…
本章我们将写一个自己的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…
之前我们了解了neutron的结构,plugin 和 extension等信息.这一章我们看一下neutron如何加载这些plugin和extension.也就是neutron的启动过程.本文涉及的代码较多,而且调用过程复杂... 所以你手头最好有一份liberty版本的neutron代码,参考来看 回顾一下neutron的paste配置文件 [composite:neutron] use = egg:Paste#urlmap /: neutronversions /v2.0: neutrona…
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…
前两篇文章讨论了怎么写一个 Neutron 的插件.但是最基本的插件只包括 Network, Port,和 Subnet 三种资源.如果需要引入新的资源,比如一个二层的 gateway 的话,就需要在插件的基础上再写一个 extension, 也就是扩展. Neutron 已经预定义了很多扩展,可以参看 neutron/extensions 下面的文件,我在这里就不一一列举了.如果正好有一种是你需要的,那直接拿过来用就好了.如果需要自己从头搭起的话,可以现在 自己的 plugin 文件夹下面创建…
今天这一章节非常重要.我们知道neutron是一个非常复杂的系统,由很多组件构成.研究这样一个复杂的系统,正确的顺序应该是现在宏观上对其整体结构有所了解,然后再由针对性的对其组件进行深入了解.本章要做的事情就是介绍neutron 宏观上的架构. 首先看一下下图: 人 - - > Neutron Server - - > Plugin - -> message queue - -> Agent (Extension) | | MySQL database 因为是markdown 编辑…
When coding a web system, you have to think about an important problem, how to map urls to logic. Openstack use routes to solve this problem. What is routes Routes is a python package used to map urls to program logic. Normally this is the web framew…
要读懂本篇,你至少得写过一个python的web程序,并且把它部署到web服务器上过. 什么是wsgi 假设你写了一个python的web程序,并部署到了nginx上,那么一个http request的处理流程一般是下面这样: client/浏览器(发送请求) - - - - > web服务器(转发该请求) - - - - > 你的程序(1. 处理请求.2.生成结果.3.返回结果) | | V client/浏览器(收到结果) <- - - -web服务器(接受你的程序返回的结果,并返回…