how to read openstack code : wsgi】的更多相关文章

要读懂本篇,你至少得写过一个python的web程序,并且把它部署到web服务器上过. 什么是wsgi 假设你写了一个python的web程序,并部署到了nginx上,那么一个http request的处理流程一般是下面这样: client/浏览器(发送请求) - - - - > web服务器(转发该请求) - - - - > 你的程序(1. 处理请求.2.生成结果.3.返回结果) | | V client/浏览器(收到结果) <- - - -web服务器(接受你的程序返回的结果,并返回…
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…
之前我们了解了neutron的结构,plugin 和 extension等信息.这一章我们看一下neutron如何加载这些plugin和extension.也就是neutron的启动过程.本文涉及的代码较多,而且调用过程复杂... 所以你手头最好有一份liberty版本的neutron代码,参考来看 回顾一下neutron的paste配置文件 [composite:neutron] use = egg:Paste#urlmap /: neutronversions /v2.0: neutrona…
学习了WSGI/Paste deploy后,还需要对一些在openstack中一些package有一些了解,才能更好的理解openstack的代码 What is stevedore 我们在写代码的时候通常把一个一个的功能块独立编写,甚至发布一定的规则和接口由第三方编写,然后在运行时根据实际情况来选择加载哪些功能模块.这样的好处是松耦合,灵活,而且便于协作. stevedore就是一个很好的帮助动态加载代码的工具,openstack中很多plugin就是通过stevedore加载的. 下面通过一…
本文的目的不是介绍openstack.我们这里假设你已经知道了openstack是什么,能够做什么.所以目的是介绍如何阅读openstack的代码.通过读代码来进一步学习openstack. 转载要求你懂的:) 目的是懂python和web编程的人看完就能懂neutron代码, 如果没达到这个目的,说明写的不够清晰,欢迎各种建议 因为我们更关注neutron组件,所以后面的内容都是以neutron为基础 读openstack代码需要对很多技术有一定了解,如:wsgi/paste deploy/w…
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…
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…
本章我们将写一个自己的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是一个非常复杂的系统,由很多组件构成.研究这样一个复杂的系统,正确的顺序应该是现在宏观上对其整体结构有所了解,然后再由针对性的对其组件进行深入了解.本章要做的事情就是介绍neutron 宏观上的架构. 首先看一下下图: 人 - - > Neutron Server - - > Plugin - -> message queue - -> Agent (Extension) | | MySQL database 因为是markdown 编辑…
本篇分为以下几个部分 paste 是什么 怎样使用paste paste of neutron paste 是什么 WSGI 是python 中application 和 web server互通的标准. 我们知道了wsgi 中包括 app, middleware , server而且middleware可以有很多个.wsgi结构的系统最大的好处就是middleware像积木一样,可以灵活的添加组成不同的功能. 我们上一篇文章中,把2个middleware和一个app组合到了一起,但我们采用的写…
作为OpenStack两种基本的通信方式(RESTful API与消息总线)之中的一个.理解RESTful API的设计思路和运行过程,有助于我们对OpenStack有更好的理解.RESTful仅仅是设计风格而不是标准,Web服务中通常使用基于HTTP的符合RESTful风格的API.而WSGI(Web ServerGateway Interface)则是python语言中所定义的Webserver和Web应用程序或框架之间的通用接口标准. 在OpenStack中随处可见基于WSGI的通信,如n…
  前言: 学习.了解.安装部署OpenStack也写了好一段时间了,现在觉得也有点必要写点总结.搞IT这一块基本就这样,不管是搞什么领域,一个项目超过两个月没动它,就基本不知道当时是怎么搞的,当时学点什么东西后面没用的话,基本也就忘了.这点尤其以Matlab为例,在大学阶段,学了又忘,忘了又学,这个过程至少重复了三次.看来不记点笔记,不写点博客.文档,还是要不得的.... 关于OpenStack基本介绍,我这里就不罗嗦了,就只把一些基本入门的资料,罗列到这里了····· 推荐: 强烈推荐: o…
OpenStack对外提供REST API,那么REST API是如何建立起来的呢? OpenStack用了一种叫WSGI(Web Service Gateway Interface)的东西,WSGI是Web服务器与Web应用程序或应用框架之间的一种低级别的接口. 下面是个简单的例子: #!/usr/bin/env python from wsgiref.simple_server import make_server def hello_world_app(environ, start_res…
一.概述 RESTful API: 表征状态迁移,也就是说client端使用http的基本操作(主要四种:get, post, put, delete 对应增删改查)使服务端的资源状态转化: WSGI: web server gateway interface  web服务网关接口,可以看作一个桥梁,一端连这服务端(wsgi server), 一端连接应用程序(wsgi app),桥体(wsgi middleware),也就是说wsgi server直接处理client端的http请求,将请求内…
1  pecan框架介绍 1.1  什么是pecan pecan是一个轻量级的python web框架,最主要的特点是提供了简单的配置即可创建一个wsgi对象并提供了基于对象的路由方式. 主要提供的功能点: (1)基于对象的路由分发 (2)支持restful接口方式 (3)可拓展的安全框架 (4)可拓展的模板语言支持 (5)可拓展的json支持 (6)简单的python配置 1.2  安装部署 为了不影响原有环境我们使用virtualenv工具创建一个隔离的python环境来做实验 $ virt…
部署物理机跟部署虚拟机的概念在nova来看是一样,都是nova通过创建虚拟机的方式来触发,只是底层nova-scheduler和nova-compute的驱动不一样.虚拟机的底层驱动采用的libvirt的虚拟化技术,而物理机是采用Ironic技术,ironic可以看成一组Hypervisor API的集合,其功能与libvirt类似. 操作系统安装过程 Linux系统启动过程 bootloader(引导程序,常见的有GRUB.LILO) kernel(内核) ramdisk(虚拟内存盘) ini…
OpenStack 中的每一个提供 REST API Service 的组件,比如 cinder-api,nova-api 等,其实是一个 WSGI App,其主要功能是接受客户端发来的 HTTP Requst,然后进行用户身份校验和消息分发.代码实现上,主要使用了几种技术:WSGI Server.WSGI Application.Paste deploy 和 Router.本文希望结合 cinder-api 的启动过程,对这些相关技术和 cinder-api 的代码做一个总结. 0. WSGI…
在 OpenStack 中, 针对web应用, 有三种方法来写单元測试 1) 使用webob生成模拟的request from __future__ import print_function import webob import testtools def hello_world(env, start_response): if env['PATH_INFO'] != '/': start_response('404 Not Found', [('Content-Type', 'text/p…
转https://segmentfault.com/a/1190000004361778 Tips:文章为拜读@xingjiarong 后有感而做的分享,先对作者表示感谢,附原文地址:http://blog.csdn.net/xingjiarong 0. 引言 在上一篇博客中我们提到过,OpenStack每个项目内部的服务进程之间是通过消息总线来通讯的,而在各个项目之间则是通过RESTful API来进行通讯的,在这一篇博客中,我们就来详细的讨论一下OpenStack各个项目之间的通讯. 1.…
use CSDN CODE to pull openstack codes 2014-11-20 Author:Hyphen 问题 直接从GITHUB上获代替码,常常是没保障,特别是用DEVSTACK的时候,常常超时,所以我想到了每天把GITHUB上的代码更新到本地的想法. 但本地还要搞一套GIT服务环境,并且也仅仅是自己用,为何不使用公开的软件库呢,之前记得OSCHINA和CSDN 都搞GIT.相比之下,使用了CSDN CODE,使用起来就跟GITHUB一样,但有个问题是容量如今默认仅仅给我一…
参考博文:https://blog.csdn.net/bill_xiang_/article/details/72909927…
在配置文件中增加如下的一句解决问题 /etc/apache2/conf-available/openstack-dashboard.conf WSGIApplicationGroup %{GLOBAL} [Thu Jan 04 11:32:23.287776 2018] [mpm_event:notice] [pid 82455:tid 139795941345152] AH00489: Apache/2.4.7 (Ubuntu) mod_wsgi/3.4 Python/2.7.6 config…
Keystone 是 OpenStack Identity Service 的项目名称.本文就试着尽可能深入地研究 Keystone. 1. Keystone 的功能 做为 OpenStack 云系统的入口,Keystone 提供了云系统入口所需要的许多功能: (1). 用户身份验证:系统得知道用户是不是合法的用户.为此,Keystone 需要对 user 进行管理和保存:管理用户相关的 tenant.role.group 和 domain等:用户 credential 的存放.验证.令牌管理等…
之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给出一些简单的使用实例. Keystone是Openstack框架中的一个重要组成部分,负责身份认证.服务管理.服务规则和服务令牌的功能, 它实现了Openstack的Identity API.Keystone类似一个服务总线,或者说是整个Openstack框架的注册表,其他服务通过Keystone来…
原文: http://www.testlab.com.cn/Index/article/id/1085.html#rd?sukey=fc78a68049a14bb228cb2742bdec2b9498806815fcb59399eee501874bb9e9086bce3050baf1438179330d72d2508871 摘要:开源的最大魅力,是能够满足人们的探索欲和求知欲,让我们可以很深入地了解一个系统,如果我们发现它的设计或者实现中有任何不合理的或者错误的地方,我们可以提出自己的想法并且实…
今天这里追加存储相关的部署,主要是Block和Object,为了看到效果,简单的部署在单节点上,即Block一个节点,Object对应一个节点. 读者可能会觉得我这个图和之前的两个post有点点不同,对,存储的两个节点不同,这个没有关系,之所以有着个变化,是我没有时间继续在这个项目上投入了,我要进入另一个相对更紧急的项目,不说了,计划总不如变化快...扯淡了. 部署cinder. 序号cx表示在controller节点上的操作,序号为ccx表示在cinder节点上的操作. c1. 准备数据库 m…
继续前面的part1,将后续的compute以及network部分的安装过程记录完毕! 首先说说compute部分nova的安装. n1.准备工作.创建数据库,配置权限!(密码依旧是openstack,还是在controller节点机器node0上操作) mysql -u root -p CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; G…
0 阅读指南 希望本文能够解开你心中萦绕已久的心结,假如是死结,请移步到 https://wiki.openstack.org/wiki/Main_Page 学习OpenStack其实就是学习各种Python库的过程. 把OpenStack的设计原则贴在你的墙上. https://wiki.openstack.org/wiki/BasicDesignTenets 1 OpenStack Hacker 态度:开放.主动.沟通 影响力:能说.能写.能分享 四化:自动化.流程化.系统化.文档化 2 基…
OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenStack Identity Service,以及OpenStack Image Service.你可以独立地安装这些项目中的任何一个,然后即可以独立也可以把它们作为一个联合体来配置.这个指导手册指导用有用的包(packages)在ubuntu12.10上的一个安装.这个手册也提供了一个与给出的配置文…