Python之ESXi虚拟机分配

      ESXi Server上的虚拟机分布于不同的Datastores,现有的服务器能够很好的按照如下的方式进行:每个Datastore运行一个Image,这个程序就是实现这样一个功能!因为是在现有框架增加一些功能,所以这个小程序并没有那么的合理,没法,为了加入到现有框架中,所有的方法,数据结构都得按照以前框架中的一套来处理。

'''
Created on May 27, 2013

@author: Berlin
'''
class VMDispatcher():
    vms = []
    datastores_dics = {}
    vms_mapping = {}
    
    def __init__(self, vms_to_run, datastores_mapping):
        self.vms = vms_to_run
        self.datastores_dics = datastores_mapping
        
    def __ParseVmsToRun(self):
        for datastore in self.datastores_dics.keys():
            vms_list = []
            for vm_datastore in self.datastores_dics[datastore]:
                for vm_path in self.vms:
                    if vm_path == vm_datastore:
                        vms_list.append(vm_path)
                    self.vms_mapping[datastore] = vms_list
        #print self.vms_mapping
    
    def __FirstRunVMs(self):
        self.__ParseVmsToRun()
        vms_to_run = []
        for datastore, vms_path in self.vms_mapping.iteritems():
            if len(vms_path):
                vms_to_run.append(vms_path.pop())
                self.vms_mapping[datastore] = vms_path
        return vms_to_run
    
    def __IsAnyVMsOfSameDatastore(self, datastore):
        if len(self.vms_mapping[datastore]) == 0:
            return False
        else:
            return True
    
    #get datastore of vm according to the vm_path
    def __GetDatastore(self, vm):
        for datastore in self.datastores_dics.keys():
            if vm in self.datastores_dics[datastore]:
                return datastore
    
    def AllocateVMsToRun(self, vm_path):
        datastore = self.__GetDatastore(vm_path)
        vm_to_run = []
        if self.__IsAnyVMsOfSameDatastore(datastore):
            vms_path = self.vms_mapping[datastore]
            vm_to_run = vms_path.pop()
            self.vms_mapping[datastore] = vms_path
        
        return vm_to_run
    
    def DispatchToVMs(self):
        vms_path = self.__FirstRunVMs()
        return vms_path

谢谢阅读!

转载于:https://www.cnblogs.com/berlin-sun/archive/2013/05/28/3103495.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要备份ESXi虚拟机使用Bacula,你可以按照以下步骤进行配置: 1. 安装Bacula:按照前面提到的步骤,在备份服务器上安装和配置Bacula软件。 2. 安装Bacula File Daemon:在ESXi主机上安装Bacula File Daemon(也称为Bacula Client)。你可以从Bacula官方网站下载适用于ESXi的Bacula File Daemon软件包,并按照官方文档进行安装和配置。 3. 配置Bacula Director:编辑Bacula Director的配置文件,添加一个新的FileSet(文件集)来指定要备份的ESXi虚拟机。在FileSet中,你可以指定要备份的虚拟机的名称、路径和文件类型等。 4. 配置Bacula Storage Daemon和存储介质:根据你的需求,配置Bacula Storage Daemon和存储介质,指定备份数据的存储位置和参数。 5. 创建备份策略:使用Bacula Console或Web界面,创建一个新的备份策略。在备份策略中,指定备份的目标为ESXi虚拟机,并设置备份计划和保留策略等。 6. 执行备份操作:启动Bacula服务,并按照预定计划自动执行备份任务。你也可以手动触发备份操作来验证配置是否正确。 请注意,备份ESXi虚拟机可能涉及到虚拟机的快照和存储访问等问题。在进行配置前,请确保你对ESXi虚拟化环境和Bacula的操作有一定的了解,以免造成数据丢失或其他不可预料的问题。建议在实际操作前,先在测试环境中进行验证。同时,参考Bacula官方文档和ESXi相关文档,以获得更详细和准确的配置指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值