nova-api扩展(1)

实现nova-api调用的filter,将调用记录保存到本地文件中和保存到数据库中

普通流程

关闭api

killall nova-api

编写filter

nova/api/openstack/compute/customs.py

from nova import wsgi as base_wsgi

import webob.dec

from oslo_log import log as logging

from nova.api.openstack import wsgi

LOG = logging.getLogger(__name__)

class RecordsMiddleware(base_wsgi.Middleware):

        def __init__(self,application):

                base_wsgi.Middleware.__init__(self,application)

        @webob.dec.wsgify(RequestClass=wsgi.Request)

        def __call__(self,req):

                file = open(‘/home/stack/customs/records‘,‘a‘)

                record = req.path_info + ‘\n‘

                #LOG

                file.write(record)

                file.close()

                return self.application

配置filter

/etc/nova/api-paste.ini

1、增加filter

2、把filter添加到composit的keystone pipeline下

启动api

nova-api

查看~/stack/coutoms/record

时间: 05-19

nova-api扩展(1)的相关文章

OpenStack Mitaka Nova API 接口扩展之instance_resize

# Mitaka NOVA API 接口开发 背景: OpenStack官方默认Resize接口支持local storage 不是很好,问题很多,因此重新定 制Resize接口,实现云主机套餐变更,比之前的接口提高了很多时间 ### 配置 Resize 路由 vim /usr/lib/python2.7/site-packages/nova-13.1.0-py2.7.egg-info/entry_points.txt  [nova.api.v21.extensions]          in

nova api源码分析(二)

转载于:http://www.it165.net/pro/html/201407/17020.html (经过部分编辑) 一.使用到的库或组件如下: paste.deploy 用来解析/etc/nova/api-paste.ini文件,加载用于服务的wsgi app.它的功能有: 1.api-paste.ini中配置多个wsgi app,deploy可根据传入的app name加载指定的wsgi app: deploy.loadapp("config:/etc/nova/api-paste.in

用pdb.set_trace()设断点,跟nova/api/openstack/compute/servers.py - detail() 流程

由 curl -s -H "X-Auth-Token: $OS_TOKEN" http://192.168.153.128:8774/v2.1/servers/detail | python -m json.tool 命令: 得到结果: { "servers": []       注:因为servers是核心资源,所有返回为空.} 1/opt/stack/nova/nova/api/openstack/compute/servers.py(210)detail()

nova api源码分析(一)

说明: 源码版本:H版 参考文档:http://www.choudan.net/2013/12/09/OpenStack-WSGI-APP%E5%AD%A6%E4%B9%A0.html 一.前奏 nova api本身作为一个WSGI服务器,对外提供HTTP请求服务,对内调用nova的其他模块响应相应的HTTP请求.分为两大部分,一是创建该服务器时加载的app,这个用来处理请求:一是服务器本身的启动与运行. 目录结构如下: 首先,nova api是作为一个WSGI服务,肯定要查看它的启动过程,查看

openstack 用nova API 指定 compute node 创建 instance

感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地址:http://blog.csdn.net/qq_21398167/article/details/46924597 我们在博客中能够知道  能用命令行定向创建虚拟机到指定计算节点 http://blog.csdn.net/qq_21398167/article/details/46710175

ODATA WEB API扩展使用

一.概述 时间也算充足,抽点时间总结下OData的常用的使用方式,开放数据协议(OData)是一个查询和更新数据的Web协议.OData应用了web技术如HTTP.Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务和存储的信息访问.除了提供一些基本的操作(像增删改查),也提供了一些高级的操作类似过滤数据和实体的导航.OData扩展了上述的协议但是不是取代他们.他可以被XML(ATOM)或者JSON取代但是OData的重要在于它符合REST原则.在某种意义上,它建立在'简单'

Spark RDD API扩展开发(1)

我们都知道,Apache Spark内置了很多操作数据的API.但是很多时候,当我们在现实中开发应用程序的时候,我们需要解决现实中遇到的问题,而这些问题可能在Spark中没有相应的API提供,这时候,我们就需要通过扩展Spark API来实现我们自己的方法. 我们可以通过两种方法来扩展Spark API,(1).其中一种就是在现有的RDD中添加自定义的方法:(2).第二种就是创建属于我们自己的RDD.在这篇文章中,我将对这两种方法进行阐述,并赋予代码 .下面我就开始介绍第一种方法. 假如我们中有

扩展 OpenStack 的 REST API 的方法

以Nova REST API为例, 你应该按照以下步骤来扩展 Nova REST API (使用 类nova.api.openstack.compute.contrib.floating_ips.Floating_ips 作为例子) 1)    创建一个新的extension 子类. Extension子类应该派生于"nova.api.openstack.extensions ExtensionDescriptor" 以 Floating_ips 类为例 2)    在 Nova AP

expose nova instance disable_terminate属性api

环境: rdo L版 先来说下nova api删除虚拟机的代码中有这么一个判断: def _delete(self, context, instance, delete_type, cb, **instance_attrs):         if instance.disable_terminate:                # 会判断disable_terminate             LOG.info(_LI('instance termination disabled'),

简单的类 Nova REST API 实现程序

正在看Nova API的代码, 仿照其中的REST 实现逻辑写了一个测试程序. Nova API 当然支持了更多的功能, 例如XML/JSON序列化, 身份验证等等. 这个测试程序只实现其中的REST调用逻辑 为了容易读懂, 我去掉了其中的类继承逻辑 MyRouter: 负责把HTTP请求, 根据匹配规则, 分发到不同的Application中 1) [ Python Deploy ] 收到HTTP请求后, 先调用 MyRouter的 __call__方法进行处理 2) [ MyRouter ]