自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 使用getopt解析命令行参数

python中可以使用getopt来解析命令行参数,其定义如下:getopt(args, shortopts, longopts=[])其中,args是要解析的参数列表shortopts是短选项字符串(短选项,以-开头的选项,例如-a, -abc)longopts是长选项列表(长选项,以--开头的选项,例如--x, --xyz)getopt返回opts, args元

2016-10-12 15:17:16 873

原创 py3环境bytes转换unicode注意

在py3环境上,bytes字符串往unicode字符串转换不能像py2那样直接用unicode直接转换。例如:>>> str(b'abc')"b'abc'"可以看到,转换后的unicode字符串增加了一些字符(标红部分)。这并不是我们希望看到的。这里需要通过decode来转换。>>> b'abc'.decode()'abc'如上才是我们希望的结果。至于为什么

2016-09-13 16:53:48 2494

原创 HiBench运行spark用例报Initial job has not accepted any resources错误

最近使用HiBench基准测试工具测试Spark性能。但每当启动测试过程后不救,HiBench就提示错误:WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and h

2016-07-01 16:15:30 2438

原创 DELL服务器IPMI管理界面无法登录问题解决

一台DELL服务器,由于没有安装光盘,只能选择从IPMI挂载ISO镜像安装。配置好服务器管理口的IP和用户密码后,能PING通管理口,但通过浏览器登录输入用户名密码后始终登录不上。确认用户名密码没有输错。于是在网上查了一下,有人也遇到相同问题,并给出了参考解决方法。先将服务器下电,并拔掉电源线,让服务器彻底断电。过几分钟后,重新插上电源并上电。再次进

2016-05-03 19:54:23 11988 1

原创 tachyon配置项

本来想自己写,但思来想去怎么写都不如官网的详细准确,所以就直接引用链接了。http://alluxio.org/documentation/master/cn/Configuration-Settings.html

2016-04-27 16:59:20 496

原创 heat创建stack时为何要在keystone新建一个临时project

查看heat的stack创建流程,在create_stack接口中,可以看到如下一段代码: def _create_stack_user(stack): if not stack.stack_user_project_id: try: stack.create_stack_user_p

2016-03-02 15:07:23 1545 2

原创 collections.defaultdict类的使用

defaultdict可以通过传入一个可执行对象,为不存在的key赋予默认值。举例:>>> def f(): yield 1 yield 2 yield 3 >>> it=f()>>> test=defaultdict(lambda:next(it))>>> testdefaultdict( at 0x02C195B0>, {})>>> test.items()[

2016-02-22 16:34:56 1266

原创 git review自动添加change-id

使用git review提交patch时,要求在commit message里面包含change-id字段。可以通过在.git/hook目录下放置commit-msg达到自动添加change-id的目的,这样就不用手动在commit message里面编辑了。下载地址:https://review.openstack.org/tools/hooks/commit-msg

2016-02-18 19:54:58 3656

原创 python内置map和six.moves.map的区别

python内置map返回的是列表,而six.moves.map返回的是iter。>>> map(lambda a: a*2, [1, 2, 3])[2, 4, 6]>>> m = six.moves.map(lambda a: a*2, [1, 2, 3])>>> type(m)>>> next(m)2>>> next(m)4>>> m.next()6

2016-02-16 15:38:23 4648

原创 namedtuple使用

namedtuple顾名思义,就是可以通过名字访问成员的tuple。我们知道,要访问普通tuple类型的成员,只能通过索引,例如:>>> t = ('a', 'b', 'c')>>> print(t[0], t[1], t[2])a b c而namedtuple在此基础上还提供了通过名称访问的方式,其定义是:namedtuple(typename, field_names, v

2016-02-16 14:55:43 837

原创 git下载协议配置

devstack默认使用的下载路径是git://git.openstack.org,也就是git协议。在stackrc文件中可以看到:GIT_BASE=${GIT_BASE:-git://git.openstack.org}这一语句的意思是如果GIT_BASE没有设置,就默认使用git://git.openstack.org。devstack使用默认git协议下载代码,

2016-02-15 10:26:41 614

原创 sqlalchemy DB表关系研究

大家知道OpenStack项目的DB表是定义在db\sqlalchemy\models.py文件中。如果看过该文件中定义的这些DB表,会发现表之间的关系主要有两种:ForeignKey:外键relationship:关系其中外键就是数据库表外键的概念,其作用大家可以查阅相关资料。这里主要关注relationship的作用。下面通过一段测试代码来验证。代码

2015-10-31 14:51:00 1135

原创 heat中stack锁的实现原理

学习heat源码的过程,在EngineService很多处理函数中都能看到stack锁的身影。一般使用方式如下:lock = stack_lock.StackLock(cnxt, stack.id, engine_id)with lock.thread_lock(): # do something查看StackLock类的实现,可以看到stack锁实际上是利用数据库来实现的。

2015-10-31 10:19:27 933

原创 heat中资源hook的使用

这篇文章来讲一讲如何利用hook来暂停资源的执行流程。还记得以前讲到的environment文件吗?就是通过它来配置hook。参考heat源码中,doc\source\template_guide\environment.rst文件的Pause stack creation or update on a given resource一节。可以知道在resource_regist

2015-10-31 09:27:03 1318

原创 heat客户端的stack查询命令的stack_name/stack_id转换流程

使用过heat的朋友都应该利用过heatclient查询stack信息。例如stack-show命令,该命令的参数如下:heat stack-show 也就是既可以用stack名,也可以用stack ID,来指定要查询的stack。期初以为是heat engine在处理show_stack请求时进行了区分。但是通过查看相关代码,发现并不是这样。传递到Engine

2015-10-29 17:42:10 1725

原创 heat内部异常如何转换为HTTP异常返回给客户端

heat engine服务在处理请求时,遇到异常情况,抛出的是内部自定义的异常类型,定义在heat/common/exception.py。而heat api需要将这些异常转换为HTTP异常结果,也就是带有错误码的异常结果,再按照HTTP协议返回给客户端。例如,如果用heat -d stack-show命令查询一个不存在的stack,返回的HTTP消息结果如下:DEBUG

2015-10-13 19:55:16 669

原创 heat项目动态(2015-10-9)

1、L-rc2版本发布Liberty rc2版本已于10月8日发布,参考链接https://launchpad.net/heat/+milestone/liberty-rc22、单元测试使用mock后续的单元测试打桩都使用mock,mox由于已不再维护不能使用。现有使用mox的测试用例也都需要改为使用mox3。

2015-10-09 11:56:44 382

原创 heat项目动态(2015.9.25)

1、Liberty-rc1版本发布Liberty-rc1版本已于2015-9-23发布。后续还有一个rc2版本。2、Liberty版本合入的重要特性参考链接https://etherpad.openstack.org/p/heat-liberty-release-notes3、东京峰会议题目前已收集7个议题,参考链接https://ether

2015-09-25 10:10:06 550

原创 heat项目动态(2015.9.11)

1、liberty-3版本发布社区在2015-09-03发布了L3版本。https://launchpad.net/heat/+milestone/liberty-32、liberty-rc1里程碑heat liberty版本的下一里程碑是liberty-rc1,具体发布日期未定,预计是在9月底。3、PTL选举9月14号~9月18号是候选人自

2015-09-11 11:11:22 552

原创 使用devstack部署多节点openstack

在使用openstack环境的过程中,时常会根据服务需求调整部署的服务。这就涉及到添加新的节点到原有的openstack环境中。大家知道devstack一般用来部署All-In-One的环境,其实devstack也能用来部署多节点环境。通过local.conf文件的配置就能达到这一目的。下面给出一个简单例子:[[local|localrc]]DATABASE_PA

2015-09-08 14:24:06 2319

原创 heat ResourceGroup资源使用介绍

在heat中有一个ResourceGroup资源,类型是“OS::Heat::ResourceGroup”。从名称就能够大概猜到该资源的作用:资源组。

2015-08-31 15:23:56 3544

原创 heat项目动态(2015.8.28)

1、准备发布liberty-3版本L3版本预计发布日期2015-09-03,发布前一周为特性冻结期,新特性不再允许合入。参考链接:https://launchpad.net/heat/+milestone/liberty-3

2015-08-28 10:22:06 572

原创 Heat项目动态(2015.8.21)

1、测试convergence功能convergence是heat L版本开发的最重要的BP,开发工作已基本完成并且代码已上库,鼓励所有开发者对此功能进行测试。可以通过在heat.conf配置文件中增加convergence_engine=True配置项,打开convergence功能。2、典型BUG讨论https://bugs.launchpad.net/open

2015-08-21 10:37:09 586

原创 利用environment文件实现heat资源注册

前面一篇文章提到了,environment文件可以用来指定参数值,还有一个作用是用来实现资源注册。下面就来探讨一下environment文件在这方面的作用。

2015-08-20 17:32:27 1193

原创 利用environment文件配置heat模板参数

使用heat client命令创建或者更新stack,其中有一个可选参数-e/--environment-file,用于指定环境文件。这篇文章就来探讨一下environment文件的作用和使用。目前environment文件主要有两个方面的作用:配置模板需要的参数值重载资源类型定义

2015-08-19 17:58:04 2645 1

原创 heat项目动态(2015/8/14)

heat在处理耗时较长的请求时出现验证失败错误此问题的原因是,heat将相关处理请求发送给其他组件的时候,也需要携带token用以进行鉴权,而这个token是从keystone认证申请的,有时效限制。如果需要发送给其他组件的请求比较多,那就可能出现token已经超时失效了,但是请求还未处理完,那么在下一次发送请求的时候就会收到鉴权失败的错误。例如,向cinder请求创建50个卷

2015-08-13 20:04:49 477

原创 Python小技巧之——基类初始化

子类__init__初始化时,如果要对基类进行初始化,大家都知道可以用super:>>> class base(object): def __init__(self): print('base init') >>> class derived(base): def __init__(self): print('derived init') super(derived, se

2015-08-11 17:24:23 4359

原创 python2/3差异之——字符串差异

Python2默认字符串类型str,使用ascii编码。>>> type('123')>>> '123'.decode('ascii')u'123'而对于包含中文的字符串,使用gb2312编码,不过仍然是str类型。>>> type('中文')>>> '中文'.decode('gb2312')u'\u4e2d\u6587'当然,如果是明确以u修饰的字符串,那就是unicod

2015-08-10 19:16:16 1412

原创 Python小技巧之——巧用with语句实现异常处理

Python的异常处理语句try...except大家都很熟悉了,例如:try: 1/0except(Exception) as ex: print(ex) integer division or modulo by zero这种方式的好处是直观,对于逻辑简单的try...except语句比较有效。但是如果try逻辑比较复杂,或者有大段的except处理语句,这种方

2015-08-06 14:18:34 3966

原创 python小技巧之——in判断

in操作符测试

2015-08-05 10:56:54 2069

原创 Heat项目动态(2015/7/31)

周例会概要(2015/7/29):1、Liberty-2版本状态相关链接https://launchpad.net/heat/+milestone/liberty-2Liberty-2里程碑计划应该在7/30发布,但是目前仍然是not yet released,看来是延期了。2、代码检视老生常谈的问题,希望有更多的人参与到代码检视当中来,提升代码检视效率

2015-07-31 11:03:33 505

原创 Heat项目动态

周例会摘要(2015-6-24):1、liberty-1里程碑Heat liberty-1里程碑版本在2015年6月24日发布,参考链接https://launchpad.net/heat/+milestone/liberty-1。2、移除HOT模板Fn::SelectHOT的Fn::Select函数是用于从列表或者字典中选择指定项,参考链接http://doc

2015-06-26 10:04:22 470

原创 Heat项目动态

例会总结(2015-06-17):1. 版本5.0Heat的下一次发布版本(即Liberty版本)的版本号是5.0,需要将所有代码中所有“2015.2”字样的版本号替换为“5.0”。(注:OpenStack以前的版本号规则是“发布年份.主版本排序”,例如“2015.1”是今年发布的第一个主版本Kilo的版本号,而预计要发布的第二个主版本Liberty的版本号就应该是“201

2015-06-19 09:10:35 541

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除