} } }

    Python之ESXi虚拟机分派

    添加时间:2013-5-28 点击量:

          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


    感谢浏览!

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: