`
lynnkong
  • 浏览: 303135 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【openstack】Quantum消息处理流程简析

阅读更多

Quantum消息处理流程

1      Paste.deploy配置


2      authtoken

调用kestone进行鉴权。

3      keystonecontext

根据鉴权信息(user_idtenant_idroles等),更新请求中的环境上下文。

4      extensions

1)     获取quantum.confcore_plugin配置的插件类

2)     如果在quantum/extensions/extensions.pyENABLED_EXTS中有该插件的配置信息,默认如下图:

 则加载
ext_db_models表示的数据库建模类

3)     加载core_plugin插件类

4)     初始化PluginAwareExtensionManager类及其父类ExtensionManager,两个类的类图如下:

 类
ExtensionManager初始化主要是加载扩展类目录中的扩展类,代码解析如下:


 5)
    
初始化ExtensionMiddleware

整个初始化过程主要使用从Ruby移植到PythonRoutes开发包,用来定义URL和应用程序接口之间的映射,这里不是很懂,网上关于Routes的资料除了官方文档外几乎没有。

 

def __init__(self, application,
                 ext_mgr=None):

        self.ext_mgr = (ext_mgr
                        or ExtensionManager(
                        get_extensions_path()))
        # 定义mapper
        mapper = routes.Mapper()

        # extended resources
        for resource in self.ext_mgr.get_resources():
            LOG.debug(_('Extended resource: %s'),
                      resource.collection)
            for action, method in resource.collection_actions.iteritems():
                path_prefix = ""
                parent = resource.parent
                conditions = dict(method=[method])
                path = "/%s/%s" % (resource.collection, action)
                if parent:
                    path_prefix = "/%s/{%s_id}" % (parent["collection_name"],
                                                   parent["member_name"])
                with mapper.submapper(controller=resource.controller,
                                      action=action,
                                      path_prefix=path_prefix,
                                      conditions=conditions) as submap:
                    submap.connect(path)
                    submap.connect("%s.:(format)" % path)
            mapper.resource(resource.collection, resource.collection,
                            controller=resource.controller,
                            member=resource.member_actions,
                            parent_resource=resource.parent)

        # extended actions
        action_controllers = self._action_ext_controllers(application,
                                                          self.ext_mgr, mapper)
        for action in self.ext_mgr.get_actions():
            LOG.debug(_('Extended action: %s'), action.action_name)
            controller = action_controllers[action.collection]
            controller.add_action(action.action_name, action.handler)

        # extended requests
        req_controllers = self._request_ext_controllers(application,
                                                        self.ext_mgr, mapper)
        for request_ext in self.ext_mgr.get_request_extensions():
            LOG.debug(_('Extended request: %s'), request_ext.key)
            controller = req_controllers[request_ext.key]
            controller.add_handler(request_ext.handler)

        # 个人理解,开始根据Mapper解析URL,_dispatch()方法根据解析的结果进行处理
        self._router = routes.middleware.RoutesMiddleware(self._dispatch,
                                                          mapper)
        super(ExtensionMiddleware, self).__init__(application)

  

对于每一个资源的处理是在quantum/api/v2/base.py/Controller类中

5      quantumapiapp_v2_0

处理类:quantum/api/v2/router.py::APIRouter

初始化:

1)     根据扩展类的配置更新quantum/api/v2/attributes.py::RESOURCE_ATTRIBUTE_MAP定义的对象属性,因为有的扩展类扩展了标准对象(network, port, subnet)的属性。

2)     同样使用Routes,定义URL和应用接口的映射关系。

3)     在父类的初始化中,同样调用:

self._router = routes.middleware.RoutesMiddleware(self._dispatch, self.map)

 

 

  • 大小: 4.5 KB
  • 大小: 25.3 KB
  • 大小: 10.8 KB
  • 大小: 20.3 KB
  • 大小: 53.7 KB
0
3
分享到:
评论

相关推荐

    openstack quantum安装文档

    综上所述,这份文档提供了关于 OpenStack Quantum(Neutron)的全面介绍和深入指导,不仅涵盖了基本的安装配置流程,还深入探讨了许多高级特性和配置选项。对于希望深入了解并有效利用 OpenStack Networking 的管理...

    openstack quantum网络介绍.pdf

    ### OpenStack Quantum网络模型介绍 #### 一、OpenStack Essex架构回顾 OpenStack Essex作为早期版本之一,在架构设计上相对简单。在Essex版本中,网络功能主要由`nova-network`组件来实现,该组件负责处理虚拟机...

    OpenStack虚拟机创建交互流程详解.pptx

    3. 创建虚拟机流程:用户发起创建虚拟机的请求后,OpenStack 会将请求交于后续服务开始处理,包括认证、网络、存储、镜像等服务的参与。 4. 认证通过:用户的认证信息会被传递给 Keystone 服务,以获取后续操作的 ...

    OpenStack with OpenFlowSDN.pdf

    Quantum的工作流程主要包括以下几个步骤: 1. **创建网络**:首先在Quantum中定义逻辑网络。 2. **创建端口**:为特定的虚拟机或接口创建网络端口。 3. **连接接口**:将创建好的端口与虚拟机的网络接口相连接。 ...

    OpenStack故障处理

    - **故障处理流程**:识别故障现象、收集相关信息(如日志、配置文件等)、分析原因、采取措施解决故障。 #### 三、OpenStack故障处理工具 - **监控工具**:如Ceilometer用于监控资源使用情况。 - **日志工具**:...

    openstack Neutron 简析

    openstack Neutron 简析

    openstack+quantum之ovs配置手册

    ### OpenStack + Quantum 之 OVS 配置详解 #### 概述 OpenStack 是一个开源的云操作系统,Quantum(现在称为 Neutron)是 OpenStack 的网络服务组件,负责管理虚拟网络基础设施。Open vSwitch (OVS) 是一种高性能的...

    云计算系统安装openstack之essex+quantum完整篇

    ### 云计算系统安装OpenStack之Essex+Quantum完整篇 #### 一、引言 随着互联网技术的发展,云计算已成为企业信息化建设的重要组成部分。而构建一个稳定可靠的私有云平台,成为了众多企业和个人关注的焦点。本文将...

    Openstack_Folsom_quantum网络虚拟化

    Openstack_Folsom_quantum网络虚拟化

    openstack kolla部署流程

    本文档生产环境中如何使用kolla快速部署openstack,实现短周期内搭建生产可用的私有云平台。

    openstack虚拟化云计算平台详细安装流程报告 - 单机

    Openstack 的各个组件相互之间是通过网络来进行互联互通,不同的组件理论上都可以 部署在不同的节点上,可以通过一些的额外的步骤来提高 openstack 的可用性。基于我们的 实验环境和现实情况,我们选择了官网推荐的...

    OpenStack_Rocky部署文档.pdf

    4. 部署rabbitmq消息队列:rabbitmq是OpenStack中用来处理消息传递的组件。 - 所有控制节点安装rabbitmq和erlang软件包。 - 查看集群状态和插件,配置和检查Web管理界面。 - 修改默认用户密码,添加OpenStack用户并...

    openstack的essex安装

    openstack-nova openstack-glance openstack-keystone openstack-quantum \ openstack-swift* openstack-dashboard openstack-utils memcached qpid-cpp-server \ rabbitmq-server mysql-server avahi ``` 这里值得...

    OpenStack开源云王者归来:云计算、虚拟化、Nova、Swift、Quantum与Hadoop[2014.8].zip

    第3篇主要从源码剖析的角度讲解了Keystone、Swift、Quantum和Nova重要组件的设计思想与实现方法;第4篇介绍了如何利用OpenStack进行扩展开发,包括如何在OpenStack平台上搭建Hadoop,对Nova进行扩展,以及如何开发...

    什么是openstack.docx

    OpenStack 由六个核心服务和多个可选服务组成,分别负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。 六个核心服务分别是: 1. Keystone:认证所有 OpenStack 服务并对其进行授权,同时也是所有...

    openstack安装图解.docx

    OpenStack 核心组成主要有对象存储(Swift)、计算管理(Nova)、网络管理(Quantum)、块存储(Cinder)、镜像管理(Glance)、身份认证(Keystone)和管理界面(Horiaon)。 OpenStack 的安装方法有多种,包括...

    OPENSTACK开源云王者归来:云计算、虚拟化、NOVA、SWIFT、QUANTUM与HADOOP

    《OpenStack开源云王者归来:云计算虚拟化Nova、Swift、Quantum与Hadoop》按照入门、剖析、扩展的讲授方式,由浅入深地介绍了开源云计算平台OpenStack(Grizzly版本)的整体框架、安装部署、源码剖析及扩展开发。...

    OpenStack源码

    OpenStack是一个开源的云计算平台,用于...通过深入研究源码,可以掌握OpenStack的工作流程,为自定义功能或优化性能提供可能。此外,参与社区的开发活动,阅读官方文档和相关博客,也是学习OpenStack源码的好方法。

    OpenStack部署实践

    书中首先介绍了PXE和网络相关的内容,接着介绍了nova-network安装模式、Quantum安装模式、Quantum GRE模式等,然后讨论了Cinder部件、中央存储与虚拟机运态迁移、云服务的开放EC2接口、RabbitMQ的集群冗余架构等,...

    OpenStack完整安装手册

    4. **RABBITMQ消息队列服务安装**:RabbitMQ作为OpenStack的消息传递中间件,负责在不同服务之间传递信息,实现异步处理和解耦。 5. **PYTHON-NOVACLIENT库安装**:这个Python库是与Nova计算服务交互的客户端工具,...

Global site tag (gtag.js) - Google Analytics