忽略jinja2的UndefinedError

Posted on 2012年5月27日 02:43

背景:

jinja2模板中,如果有变量为None,而又有获取其属性的行为,则会产生UndefinedError异常。

解决方案:

此方案针对flask框架的情况。

subclass默认的Undefined类为Myundefined,并重新定义_fail_with_undefined_error这个方法为什么都不做。设定app采用自定义的Myundefined类。

代码如下:

 

import jinja2

...

class Myundefined(jinja2.Undefined):
    def _fail_with_undefined_error(self, *args, **kwargs):
        pass

app.jinja_env.undefined = Myundefined

Case: 空间释放

Posted on 2011年11月25日 01:05

背景

客户业务测试已完成,需要释放空间(eva 6400),并将释放出来的空间分给两台windows主机。

大概步骤

#bdf 查看 /test mount 点所在 vg

#vgexport -p -v -s -m <vgname>.map <vgname> 备份 vg map

#vgdisplay -v <vgname> 查看 vg 详细信息,得到该 vg 所占用的 disk

scsimgr lun_map -D /dev/rdisk/disk<#> 查看该 disk 的 UUID

登录 eva command view,找到需删除的 disk,核对UUID

确认 UUID 无误后

#umount /test 卸载 /test

#vgchange -a n <vgname> vg 去激活

#vgexport <vgname> 删除 vg

在 eva 中删除该 disk

#ioscan -fnCdisk

#ioscan -m lun 查看 disk 状态

若要将 disk 从虚拟机资源中删除 则使用

hpvmstatus [待补充]

空间释放完成后,要将新的空间分配给两台 windows 主机,需要:

因客户每个主机各有两个光纤卡分别连接两个光纤交换机,则需要将各个光纤卡与 eva 划单独的 zone,共 4 个。

然后在 eva 管理界面新建 host,通过 wwn 找到两台主机。

再在 eva 管理界面新建 disks,并将它们 present 给两台主机。

由于每台主机可看到 8 条光纤通道,windows 主机上可能需要安装 MPIO 多路径软件。

 

 

brocade光纤交换机划zone

Posted on 2011年11月15日 22:09

步骤如下:

  1. telnet到交换机上,用chassisshow查看交换机序列号,确认交换机。
  2. 用switchshow,zoneshow查看当前交换机状态。
  3. 登录到交换机管理页面,点击zone管理,进入zone管理界面。
  4. 将需要划zone的端口命别名
  5. 添加新zone,将别名添加到zone,一般都是主机加存储(EVA,XP等),磁带库(MSL等)或者虚拟带库(VLS)。
  6. 将新加的zone添加到config里
  7. 保存config,启用config

hp Integrity VM 命令

Posted on 2011年11月15日 00:05

简单命令罗列如下:

hpvmstatus #查看系统上所有虚拟机状态
hpvmconsole -P <vmname> #连接到虚拟机控制台
hpvmstart/hpvmstop -P <vmname> #启动/停止虚拟机

Case: DP不能自动unload磁带

Posted on 2011年11月14日 23:54

11i v3加D2D环境,磁带机备份完成之后无法unload磁带,需要打patch phkl_42060

打补丁步骤:

scp 或 ftp 将补丁包放到目标机器上
tar xvf patch.tar #解压补丁包
./create_depot #创建depot
swinstall -s /tmp/..../depot #这里要写全路径,install时option里选从本地安装,自动选择依赖,去掉mount选项。
安装完成重启之后...
swlist -l patch | grep ... #查看补丁安装状态

Case: BL860c内存被deconfigure掉

Posted on 2011年11月14日 23:43

一台BL860c i2机器,其中一个bay的一组内存(4条)被deconfigure掉了。

起初怀疑是其中的一根内存条坏掉了,经过整组替换测试,发现仍然是那四个槽位的内存被deconfigure掉。

当时机器上每个CPU控制6根内存,只有其中的4根被deconfigure掉,CPU坏掉的可能性较小。

故叫RC派了个主板备件,替换之后,硬件问题解决。

主板换掉之后,新主板RAID控制器(p410i)被默认设置成HBA模式。而原系统配置的是RAID1模式。

Service guide里提到需要在EFI里用saupdate命令将RAID控制器设置为RAID模式,但系统(11i v3)上却找不到那个命令,RC称之为一个issue。

后来在hp上下载了IPF离线诊断工具包,将其中的saupdate.efi解压出来,放到u盘里挂上系统,执行即可。

该case用到的命令有

sautil #support utility for HP SmartArray Raid Controller
saupdate #set_mode/get_mode设置模式
map
drvcfg #配置驱动
setboot #-p 添加主路径 -a 添加可选路径
ioscan

MySQL-python 在 Ubuntu 上的安装

Posted on 2011年8月23日 22:33

MySQL-python 倚赖于 setuptools,而 setuptools 又需要 zlib。具体安装步骤如下:

  1. 下载 zlib, python2.6, setuptools, MySQL-python 源码包
  2. 编译安装 zlib, configure 参数使用 --prefix=PATH --shared
  3. 编译安装 python, configure 参数使用 --prefix=PATH --with-zlib=PATH
  4. 安装 setuptools
  5. 安装 MySQL-python。若提示缺少 mysql_config 文件,用 apt-get 安装 libmysqld-dev

Pymongo技巧

Posted on 2011年7月02日 19:49

用_id查询

from pymongo.objectid import ObjectId

...


posts.find_one({'_id':ObjectId(_id)})

降序排列

 

posts.find().sort([('_id',-1)])

openSuse 11.4 system tray 的 bug

Posted on 2011年7月02日 10:15

很多天以来一直困扰我的问题终于解决了。

操作系统是openSuse 11.4。大概一个星期之前,我发现笔记本上的音量调节按键会导致kmix巨慢,直至崩溃。但我清楚地记得之前使用这几个按键调节音量是没有任何问题的。当时Google了下,也没有人反应同样的问题。

今天启动系统的时候,发现KNetworkManager在system tray的隐藏区域显示不正常,并且无法点击。于是就将它的显示属性从hide改为auto,一切正常。然后,再试着将kmix的显示属性改为auto……,是的,一切正常了。看起来像是系统托盘部件的一点bug,图标是隐藏了,可功能也残了。

wget使用

Posted on 2011年6月26日 21:15

用flask写的一个网站,想生成静态网页传到空间上。研究了下Frozen-Flask这个扩展,没有弄得很明白。干脆就用wget来镜像整个网站。

 

wget -r -p -np -k http://localhost:5000/
  • -r 递归
  • -p 页面必须元素
  • -np 不要回溯到父目录
  • -k 链接转换

其他常用的参数有:

  • --accept=[文件类型] 只下载某一类型的文件
  • -i [file] 下载file文件中所有的地址
  • -c 断点续传
  • -m 镜像网站
  • -H 递归时可转到外部主机