linux系统管理自动化工具集

pybofh的Python项目详细描述


pybofh
==


Linux系统管理自动化工具集。


pybofh import xen

操作
----

“/media/tmp2”]
mountpool=blockdevice.mountpool(tmp_mnts)
使用mountpool.mount('/dev/sda1')作为sda1_mountpoint:
/dev/sda1现在已安装
使用mountpoint.mount('/dev/sda2')作为sda2 mountpoint:
/dev/sda2现在已安装
使用mountpoint.mount('/dev/sda3')作为sda3_挂载点:
失败,不再有可用的挂载点
pass
/dev/sda1和/dev/sda2现在已卸载

例如,从lvm上的磁盘创建新的vm:

lvm.createlv(“my_vg”,“my_vm”,“10gb”)
blockdevice.create_filesystem('/dev/my_vg/my_vm')


您可能会在lv上留下一个不一致的文件系统。更糟糕的是,一旦修复了问题并再次尝试运行此操作,“create lv”将失败,因为lv已经存在,因此您必须手动创建vm或修复脚本。

在这种情况下,上下文管理器没有任何意义:如果所有操作都成功,则不希望删除lv。必须跟踪所执行的操作,如果出现故障,则回滚。当然,您可以手动完成,但这并不好玩:


atomic()作为atomic:
atomic.lvm.create lv(“my_vg”,“my_vm”,“10gb”)
blockdevice.create_filesystem('/dev/my_vg/my_vm')

现在,只有当上下文管理器中的**操作失败时,才会删除lv。如果您有多个“atomic”调用,它将跟踪它们,并按执行它们的相反顺序回滚它们。

虽然“atomic”预先打包了一些知识,“atomicoperationsequence”是操作不可知的-它通过定义回滚函数来工作:

def f1():
print“f1 executed”

def reverse(f,args,Kwargs):
如果f==f1:
打印“f1 reversed”

那是什么名字?
----------
这是对[来自地狱的混蛋运营商](http://en.wikipedia.org/wiki/bastart_operator_from_hell)故事的致敬


------------
https://github.com/goncalopp/pybofh

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件