首先是testroutes.py文件
import logging import os import webob.dec import webob.exc from paste.deploy import loadapp from wsgiref.simple_server import make_server import routes.middleware # Environment variable used to pass the request context CONTEXT_ENV = 'openstack.context' # Environment variable used to pass the request params PARAMS_ENV = 'openstack.params' LOG = logging.getLogger(__name__) class Controller(object): @webob.dec.wsgify def __call__(self, req): arg_dict = req.environ['wsgiorg.routing_args'][1] action = arg_dict.pop('action') del arg_dict['controller'] context = req.environ.get(CONTEXT_ENV, {}) context['query_string'] = dict(req.params.iteritems()) context['headers'] = dict(req.headers.iteritems()) context['path'] = req.environ['PATH_INFO'] params = req.environ.get(PARAMS_ENV, {}) for name in ['REMOTE_USER', 'AUTH_TYPE']: try: context[name] = req.environ[name] except KeyError: try: del context[name] except KeyError: pass params.update(arg_dict) # TODO(termie): do some basic normalization on methods method = getattr(self, action) result = method(context, **params) return webob.Response('OK') def getMessage(self,context, user_id): return {'Message': 'TestMessage'} pass class Router(object): def __init__(self): self._mapper = routes.Mapper() self._mapper.connect('/test/{user_id}', controller=Controller(), action='getMessage', conditions={'method': ['GET']}) self._router = routes.middleware.RoutesMiddleware(self._dispatch, self._mapper) @webob.dec.wsgify def __call__(self, req): return self._router @staticmethod @webob.dec.wsgify def _dispatch(req): match = req.environ['wsgiorg.routing_args'][1] if not match: return webob.exc.HTTPNotFound() app = match['controller'] return app @classmethod def app_factory(cls, global_config, **local_config): return cls() if __name__ == '__main__': configfile='testroutes.ini' appname="main" wsgi_app = loadapp("config:%s" % os.path.abspath(configfile), appname) httpd = make_server('localhost', 8282, wsgi_app) httpd.serve_forever()
然后是testroutes.ini文件
[DEFAULT] name=huang [composite:main] use=egg:Paste#urlmap /=show [pipeline:show] pipeline = root [app:root] paste.app_factory = testroutes:Router.app_factory
由此可见,ini文件按照pastedeploy的模式配置了根目录/,指向pipeline show,pipeline又指向app root。app下指向的是Router的app_factory函数,返回的是Router().根据调用过程,初始化__init__->__call__返回self._routers.根据__init__下写的映射规则,能识别类似/test/123这样的路径,其处理函数调用"Controller"的"action"函数,也就是getMessage。
测试运行,在浏览器下输入127.0.0,1:8282/test/123
返回OK,如
return webob.Response('OK')
测试完毕。
bluefire1991
2013.11.2
19:59:12
相关推荐
为了优化 OpenStack 监控模块在功能和可视化方面的不足,确保 OpenStack 实例的稳定运行,设计出一个用于 OpenStack 的监控系统。通 过使用 Libvirt、Python 编程语言、Django 框架、Echarts 等开发技术, 完成了...
手把手教您如何使用python语言,创建OpenStack虚拟机。
基于 Python 的 OpenStack 资源监控系统设计与实现 Python 是一种广泛应用于各种领域的高级编程语言,OpenStack 是一个开源的云计算平台。本文旨在设计和实现一个基于 Python 的 OpenStack 资源监控系统,以优化 ...
### OpenStack KVM镜像制作与发布 ...通过以上步骤,您可以成功地在OpenStack环境中使用KVM技术创建并发布Linux及Windows系统的镜像。这些镜像可以方便地用于快速部署虚拟机实例,提高资源利用效率,简化管理流程。
《Open Stack设计与实现》是一本介绍OpenStack设计与实现原理的书。《Open Stack设计与实现》以Juno版本为基础,覆盖了OpenStack的学习方法到设计与实现等各个方面内容,致力于帮助读者形成OpenStack及其各个主要...
Python-clients是基于OpenStack的统一命令行模型构建的,确保了不同服务的命令行接口具有一致性。 二、Python-openstacksdk概述 Python-openstacksdk,即OpenStack SDK for Python,是一个面向开发者的高级API库,...
python-openstacksdk, 用于OpenStack的统一SDK请参见 openstacksdkopenstacksdk是一个客户端库,用于构建使用OpenStack云的应用程序。 项目旨在提供与openstack许多服务的一致和完整的交互,以及完整的文档。示例和...
1. **接口设计**:该驱动库的核心是实现与OpenStack API的交互,这包括了接收OpenStack的请求并转换为对底层虚拟化技术的操作,以及将操作结果反馈回OpenStack。接口设计的灵活性和效率直接影响到整个系统的性能。 ...
基于公开了原生的 Python API能方便地...本文围绕Openstack云平台虚拟机的创建与运维,简析Openstack的体系架构及虚拟机创建流程,阐述如何建构Openstack Python API运维环境以及如何调用API实现常见的虚拟机管理任务。
syntribos, OpenStack安全组的python API安全测试工具 团队和知识库标签 Syntribos,自动化的API安全测试工具 syntribos xxxxxxx x xxxxxxxxxxxxx x x xxxxxxxxxxx x xxxxx
所有OpenStack命令行工具的功能都能通过Python SDK实现。更多关于OpenStack Python SDK的信息可以在《OpenStack用户指南》中找到。 #### 四、认证流程 为了访问OpenStack服务,用户需要先向OpenStack认证服务发送...
为了优化 OpenStack 监控模块在功能和可视化方面的不足,确保 OpenStack 实例的稳定运行,设计出一个用于 OpenStack 的监控系统。通 过使用 Libvirt 、Python 编程语言、Django 框架、Echarts等开发技术, 完成了...
NovaClient 提供了对 Nova 服务的命令行接口(CLI)和 Python 库,用于创建、删除、启动、停止、迁移虚拟机,以及管理 Flavor(虚拟机规格)、Image(镜像)和 Network(网络)等资源。 3. **python-neutronclient-...
声明:因为软件超过50M,所以分成了两部分,请搜索openstack安装包(二) 安装包二里面会有一键安装一键卸载的说明,敬请留意 openstack-rpm包信息: augeas-libs-1.0.0-5.el6_5.1.x86_64.rpm boost-program-options...
OpenStack Keystone是OpenStack云平台的核心组件之一,主要负责身份管理和服务目录。它提供认证(Authentication)、授权(Authorization)和令牌管理(Token Management)服务,确保用户和系统间的安全交互。在...
Python 在通用应用程序、自动化插件、网站、网络爬虫、数值分析、科学计算、云计算、大数据和网络编程等领域有着极为广泛的应用,像 OpenStack 这样的云平台就是由 Python 实现的,许多平台即服务(PaaS)产品都支持...
《OpenStack设计与实现》是一本深度探讨OpenStack开源云计算平台的专业书籍,旨在为读者提供一个全面、深入的OpenStack学习资源,以帮助初学者快速入门,并对OpenStack的内部工作机制有深入的理解。OpenStack是一个...
### OpenStack网络配置及管理深度解析 #### 一、OpenStack网络概述 OpenStack作为一款开源的云操作系统,其核心组件之一便是网络管理组件Neutron(原名Quantum)。网络配置与管理在OpenStack中扮演着至关重要的...
Nova通过与其它OpenStack组件如Glance(镜像服务)、Neutron(网络服务)和Cinder(块存储服务)紧密集成,实现全面的云基础设施服务。 2. OpenStack Compute 安装 安装OpenStack Compute涉及到设置实验环境,安装...