- 博客(108)
- 收藏
- 关注
原创 Openstack Cinder中建立volume过程的源码解析(8)
在这篇博客中,我将详细的分析task类VolumeCastTask具体是如何来实现根据请求信息进行卷的建立的。我们来回顾类
2014-04-15 23:02:12 5907 1
原创 Openstack Cinder中建立volume过程的源码解析(7)----以及taskflow相关解析
好了,到这里方法def run(self, context, *args, **kwargs)中关于flow中task执行的重要语句的实现基本解析完成,在下一篇博客中,我将重点解析在这个方法中,如果卷的建立出现异常,则如何执行相关的逆转回滚操作。
2014-04-14 23:08:26 4035
原创 Openstack Cinder中建立volume过程的源码解析(6)----以及taskflow相关解析
在博客 Openstack Cinder中建立volume过程的源码解析(4)----以及taskflow相关解析
2014-04-14 22:31:53 3667 1
原创 Openstack Cinder中建立volume过程的源码解析(5)----以及taskflow相关解析
这里就不写什么开头语了,直接继续上一篇博客!
2014-04-14 01:01:38 4273
原创 Openstack Cinder中建立volume过程的源码解析(4)----以及taskflow相关解析
至此,在cinder模块中实现客户端发送过来的请求信息操作的主要的步骤已经全部解析完成。下一篇博客中,我将解析方法cinder.api.v1.volumes.VolumeController.create,来解析cinder是如何实现卷的建立的。
2014-04-13 23:28:40 5310 1
原创 Openstack Cinder中建立volume过程的源码解析(3)
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!如果转载,请保留作者信息。博客地址:http://blog.csdn.net/gaoxingnengjisuan邮箱地址:dong.liu@siat.ac.cn3.请求中body部分的反序列化我们来看语句:try: if content_type: #确
2014-04-03 02:21:50 4010 1
原创 Openstack Cinder中建立volume过程的源码解析(2)
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!如果转载,请保留作者信息。博客地址:http://blog.csdn.net/gaoxingnengjisuan邮箱地址:dong.liu@siat.ac.cn这篇博客我们来继续解析Openstack Cinder中建立volume过程的实现源码。上篇博客中我们解析了应用若干中间件对客
2014-04-03 02:20:50 4579
原创 Openstack Cinder中建立volume过程的源码解析(1)
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!如果转载,请保留作者信息。博客地址:http://blog.csdn.net/gaoxingnengjisuan邮箱地址:dong.liu@siat.ac.cn从这篇博客开始,我将以cinder中卷的建立的过程的源码解析为例,来说明客户端传递过来的request的执行过程。示例:我
2014-03-30 23:26:54 6420 3
原创 OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之三
(4)self._setup_extensions(ext_mgr)现在我们回到类/cinder/api/openstack/__init__.py----class APIRouter中的初始化方法: class APIRouter(base_wsgi.Router): def __init__(self, ext_mgr=None):
2014-03-25 03:43:14 3280
原创 OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之二
(2) self._setup_routes(mapper, ext_mgr)现在我们回到类/cinder/api/openstack/__init__.py----class APIRouter中的初始化方法:class APIRouter(base_wsgi.Router): def __init__(self, ext_mgr=None): if ex
2014-03-25 03:42:32 3234
原创 OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之一
在OpenStack Cinder服务启动的过程中,对/cinder/api/contrib/和/cinder/api/v1/和/cinder/api/v2/下定义的功能进行了加载,那么具体是如何实现功能的加载,并且如何进行自定义功能的实现呢,这篇博客将会进行具体的分析。在前面的博客cinder服务启动源码分析
2014-03-25 03:41:31 4719
原创 cinder中删除僵尸卷(error_deleting )的方法
近来逛技术社区和QQ群,发现自己在openstack应用方面的技术和经验需要进一步提高,在这个分类中,我将记录一些自己平时在openstack实际操作过程中的一些东西,仅供自己日后翻看!前一段时间,在cinder中删除卷的时候,卷的删除操作执行后的状态为error_deleting,再尝试删除的时候,会提示由于卷的状态不是available也不是error,所以不能删除。当时我的处理方法是:
2014-03-10 00:11:46 9801 1
原创 Paste Deployment简介以及cinder-api-paste.ini的解析(2)
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!如果转载,请保留作者信息。博客地址:http://blog.csdn.net/gaoxingnengjisuan邮箱地址:dong.liu@siat.ac.cn在这篇博客中,我会依据上简单地解析cinder是如何通过api-paste.ini中的配置信息来进行指定WSGI Applicat
2014-03-09 22:24:59 4190
原创 cinder服务启动源码分析
我们知道在/cinder/bin目录下的文件是各个服务的启动脚本,这里我们以cinder-all为例,来解析cinder服务启动流程。首先来看代码/cinder/bin/cinder-all:import eventleteventlet.monkey_patch()import osimport sysfrom oslo.config import cfg# 路径的标准
2014-02-19 16:02:29 5758 2
原创 cinderclient源码解析之二
我们接续上一片博客,来继续解析cinderclient的源代码。上篇博客中说到在/python-cinderclient/cinderclient/shell.py----mian方法的最后,执行了语句args.func(self.cs, args),实现根据命令行参数的解析调用具体的方法,输出示例为args.func = do_list,说明当执行命令行cinder list时,这里调用的方
2014-02-17 18:14:19 4129
原创 cinderclient源码解析之一
我们知道对应openstack的各个模块中,都有相应的客户端模块实现,其作用是为用户访问具体模块提供了接口,并且也作为模块之间相互访问的途径。这里将对cinder的客户端实现cinderclient进行简单的源码解析。
2014-02-16 23:23:50 6025
原创 OpenStack Cinder源码分析之八
在本篇博客中,我将简单整理一下cinder模块中所定义和使用的的数据库处理相关方法。########################## service服务相关;#########################def service_destroy(context, service_id):删除指定的服务;def service_get(context, serv
2014-01-12 22:28:35 3127
原创 OpenStack Cinder源码分析之七
我们继续来整理代码,看cinder中db部分的代码。9db(/cinder/db/)/cinder/db/api.py:定义DB的若干接口入口方法;/cinder/db/base.py:需要模块化的数据库接口的基类;/cinder/db/migration.py:主要定义和实现了数据库版本操作的两个方法;/cinder/db/sqlalchemy/api.py:针对
2014-01-12 22:23:54 3222
原创 OpenStack Cinder源码分析之六
我们继续来整理代码,继续来看cinder中volume部分的代码。/cinder/volume/drivers//cinder/volume/drivers/emc----emc卷存储驱动;/cinder/volume/drivers/hds----hus卷存储驱动;/cinder/volume/drivers/huawei----huawei卷存储驱动;/cinder/v
2014-01-12 21:41:57 5708
原创 OpenStack Cinder源码分析之五
我们继续来整理代码,继续来看cinder中volume部分的代码。/cinder/volume/qos_specs.py:QoS功能的实现;QoS(Quality of Service)服务质量,是网络的一种安全机制;是用来解决网络延迟和阻塞等问题的一种技术;在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS;比如Web应用,或E-mail设置等;但是对关键应用和多媒体
2014-01-12 21:33:13 4691
原创 OpenStack Cinder源码分析之一
一个多月没有写博客了,因为年底工作特别忙,这个月看了一些cinder的源码,我会尽快整理出来的!这里占个位置先!
2013-12-31 23:00:56 10644 1
原创 OpenStack Nova-scheduler组件的源码解析(2)
这篇博客中,我会针对建立虚拟机实例的请求,来解析Nova调度器选取最优主机节点的过程。首先来看方法/nova/scheduler/manager.py----def run_instance:def run_instance(self, context, request_spec, admin_password, injected_files, requeste
2013-11-12 23:40:26 8944 12
原创 OpenStack Nova-scheduler组件的源码解析(1)
说实话,关于Nova-scheduler服务的资料已经很多,而且弄明白后其原理也是很简单的,实现选取最优目标主机实际上就是两个步骤,过滤和称重。PS:上周针对Nova-scheduler的调度器算法和Nova-cell的调度器算法写了两个专利,后来才知道,加入某些协议的开源项目是不能申请专利的。希望时间不要白费啊,哈哈哈......好啦,这篇博客先来说说Nova-scheduler组件
2013-11-12 22:25:09 10070 3
原创 OpenStack Nova-cell服务的源码解析(2)
在上一篇博客中,我们解析了OpenStack Nova-cell服务的源码结构,在这篇博客中我将以几个例子对nova-cell服务的源码架构和nova-cell服务的具体实现流程进行解析。1.以实例说明,nova-cell源码结构/nova/cells/manager.py----class CellsManager(manager.Manager):
2013-11-08 01:41:55 3346 1
原创 OpenStack Nova-cell服务的源码解析(1)
上篇博客中对nova-cell服务的架构和配置进行了介绍,这篇博客我将对nova-cell服务的源码进行解析。1.nova-cell服务的源码结构图2.nova-cell服务的源码结构解析/nova/cells/driver.pyclass BaseCellsDriver(object):cells通讯驱动基类,这个类主要实现了消息消费者处理的相关方法; def
2013-11-06 13:05:49 4139
原创 OpenStack Nova-cell服务的介绍和配置
我将先在此篇博客中介绍nova-cell服务的架构和配置,在下一篇博客中,我将具体分析nova-cell的源码。cell的功能允许我们以更加灵活的分布式的方式实现对OpenStack Compute云的缩放,而不需要更加复杂的技术,只需数据库和消息队列等。它的目的是支持更大规模的部署。当启用了这个功能的时候,OpenStack Compute云中的主机会被分组,称作cell。cell的
2013-10-30 18:07:13 7503 2
转载 什么是openstack的metadata
metadata字面上是元数据,是一个不容易理解的概念。在除了openstack的其他场合也经常会碰到。openstack里的metadata,是提供一个机制给用户,可以设定每一个instance 的参数。 比如你想给instance设置某个属性,比如主机名。metadata的一个重要应用,是设置每个instance的ssh公钥。公钥的设置有两种方式: 1、创建instance
2013-10-25 04:40:44 5885
原创 OpenStack文件注入相关分析(2)
上一篇博客中我们介绍了文件注入的相关内容,相关代码的结构,以及文件注入过程中支持的镜像文件挂载方式。现在,我们具体来看代码中文件注入的具体实现,由于在之前的虚拟机建立代码分析过程中涉及到了此部分的内容,所以我们只是来看看大致的流程,以便更好的掌握上一篇博文中的内容,就不对代码的每一行实现进行详细的解析。在虚拟机建立的过程中,在虚拟机启动之前,可以对实例镜像进行相关文件和元数据的注入操作,具体的
2013-10-25 04:30:47 7319 2
原创 OpenStack文件注入相关分析(1)
openstack在创建实例的时候可以将文件和相关的参数注入到实例的镜像中,来完成密码的设定、密钥的添加等动作,而这些动作的完成都是在实例启动之前。这在有些情况下会非常有用,比如修改root密码,注入ssh密钥,对实例的个性化定制等等。1.相关源码的源码结构文件和元数据注入是/nova/virt/disk/下的源码文件实现的,我们先来看一下/nova/virt/disk/的源码
2013-10-25 01:13:48 10178 6
转载 Openstack Eventlet分析(2)
上一篇博客OpenStack-Eventlet分析(一)以eventlet库中的spawn函数为代表,详细的介绍了spawn函数的运行过程。最终的重点是在hubs用来进行调度的一面,而hubs关于网络的一面还没有涉及。然而,上一篇只专注于每一行代码的执行流程了,而没有eventlet用来调度greenthread的框架分析,这样容易导致阅读源码会出现的一个常见问题,只见树木不见树林。所以在这一篇,
2013-10-21 18:00:50 7621 1
转载 Openstack Eventlet分析(1)
本来打算总结一下eventlet在OpenStack中的应用,正巧在网上找到几篇别人已经总结好的资料,而且总结的很好,这里直接转载过来。同时也向作者表示感谢。Eventlet库在OpenStack服务中上镜率很高,尤其是在服务的多线程和WSGIServer并发处理请求的情况下,深入了解eventlet库是很必要的。Eventlet库是由secondlife开源的高性能网络库,从Eventl
2013-10-21 17:55:13 11937 2
原创 OpenStack建立实例完整过程源码详细分析(15)----依据AMQP通信架构实现消息接收机制解析之二
此片博文继续上一篇博文的工作,继续对/nova/server.py中类Service下的方法def start(self)进行解析,来实现对Nova下的AMQP的消息消费者机制的解析工作。2.3 语句self.conn.consume_in_thread()的解析这条语句实现了从队列中获取消息,并最终实现了对消息的处理和执行操作。def consume_in_thread(self
2013-10-02 14:28:36 5845 1
原创 OpenStack建立实例完整过程源码详细分析(14)----依据AMQP通信架构实现消息接收机制解析之一
这篇博文开始解析NOVA中的AMQP架构下消息的消费者如何从特定的消息队列中读取发送给自己的消息,并进行执行操作。总体来讲,Nova中的各个服务在启动的时候就会初始化会用到的队列,而且会启动一个绿色线程,不断的循环验证新的消息的到来,一旦有新的消息,将会由合适的consumer进行读取,并进一步进行消息的解析和执行操作。下面,我将会以compute服务的启动作为实例,重点解析AMQP架构下
2013-10-02 12:40:08 7318
原创 OpenStack建立实例完整过程源码详细分析(13)----依据AMQP通信架构实现消息发送机制解析之二
这篇博文来继续对方法def cast(conf, context, topic, msg)进行解析,首先来看这个方法的源码:def cast(conf, context, topic, msg, connection_pool): """ 发送一个topic主题的消息,不用等待任何信息的返回; """ LOG.debug(_('Making asynchro
2013-10-02 08:07:12 4996
原创 OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
我们来继续分析方法_create_instance的实现,先来回顾方法_create_instance的代码实现: def _create_instance(self, context, instance_type, image_href, kernel_id, ramdisk_id, min_count, max_count,
2013-10-02 04:41:32 8651 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人