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在OSGi felix scr注释中将运行时参数传递给服务   java如何按字母顺序将对象插入ArrayList?   在Netbeans中调试Java   java从json文件中获取不同的照片   通过迭代和打印将java插入2个哈希表的运行时间   java如何替换JUnit 5中的WireMock@Rule注释?   shell在javajsch程序中使用'been'命令访问受限目录   java RMI是什么类型的?   javajooq别名构造   java如何通过在testNG中创建对象来调用测试方法   java下载从安卓 URL加载到imageview中的图像   从java运行bat文件   带有客户端证书的java嵌入式Jetty   java Ajax将JSON数组发送到servlet   创建数据并将数据添加到SQLite数据库时发生java错误   添加CV的javascript HRMS项目过程   java AspectJ加载时编织不起作用   java动态更改(使用JMX)正在监视的文件夹中的新文件   java岛数迭代矩阵并将节点标记为已访问