def __init__(self, hostname = None, username= Node.DEFAULT_USER, password=None, isRemote=False, ssh_port = 22, migration_port = 8002, helper = None, #store = None, use_keys = False, address = None): VNode.__init__(self, to_unicode("kvm"), #store, hostname, username, password, isRemote, ssh_port, helper, use_keys, address) self.migration_port = migration_port
def __init__( self, hostname=None, username=Node.DEFAULT_USER, password=None, isRemote=False, protocol="tcp", tcp_port=8006, ssh_port=22, migration_port=8002, helper=None, #store = None, use_keys=False, address=None): VNode.__init__( self, to_unicode("xen"), #platform, I'm xen node #store, hostname, username, password, isRemote, ssh_port, helper, use_keys, address) self._dom0 = None self.metrics_helper = MetricsHelper(self) self.tcp_port = tcp_port self.migration_port = migration_port self.protocol = protocol
def __init__(self, hostname = None, username= Node.DEFAULT_USER, password=None, isRemote=False, protocol = "tcp", tcp_port = 8006, ssh_port = 22, migration_port = 8002, helper = None, #store = None, use_keys = False, address = None): VNode.__init__(self, to_unicode("xen"), #platform, I'm xen node #store, hostname, username, password, isRemote, ssh_port, helper, use_keys, address) self._dom0 = None self.metrics_helper = MetricsHelper(self) self.tcp_port = tcp_port self.migration_port = migration_port self.protocol = protocol
def migration_op_checks(self, vm_list, dest_node, live): (err_list, warn_list) = VNode.migration_op_checks(self, vm_list, dest_node, live) # src is not same as dest self._compare_node_info(dest_node, "xen_major", err_list) self._compare_node_info(dest_node, "xen_minor", err_list) # find total mem requirements and check against avail mem if len(vm_list) < 2: return (err_list, warn_list) if not live: return (err_list, warn_list) total_vm_mem = 0 for vm in vm_list: if vm.is_running(): total_vm_mem += int(vm["memory"]) if dest_node.is_up(): node_free_mem = self.guess_free_mem(dest_node) if total_vm_mem > node_free_mem: err_list.append(("Memory", "Insufficient memory on destination node. " \ "Total VM memory %s, free memory on destination node %s " % (total_vm_mem, node_free_mem))) return (err_list, warn_list)
def migration_vm_checks(self, vm_name, dest_node, live): """ Implements a series of compatiblity checks required for successful migration. """ (err_list, warn_list) = VNode.migration_vm_checks(self, vm_name, dest_node, live) if self.is_up(): vm = self.get_dom(vm_name) else: vm = DBHelper().find_by_name(VM,vm_name) if vm == None : err_list.append(("VM", "VM %s not found."% vm_name)) return (err_list, warn_list) # mem assumed to be in MB (same unit) vm_memory = 0 if vm.is_running(): vm_memory = vm["memory"] if dest_node.is_up(): node_free_mem = self.guess_free_mem(dest_node) if int(vm_memory) > node_free_mem: err_list.append(("Memory","Insufficient memory on destination node. " \ "VM memory %s, free memory on destination node %s " % (vm["memory"], node_free_mem))) # TBD : compare CPUs. This needs to encode compatibility list. # check AMD/INTEL # X86/X32 # 32 bit vs 64 bit kernel # critical files available or not. vm_conf = vm.get_config() if vm_conf is not None and dest_node.is_up(): bootloader = vm_conf["bootloader"] if bootloader and bootloader.strip() is not "": if not dest_node.node_proxy.file_exists(bootloader.strip()): err_list.append(("Bootloader","Bootloader %s for %s vm not found on destination node." % (bootloader.strip(), vm.name))) kernel = vm_conf["kernel"] if kernel and kernel.strip() is not "": if not dest_node.node_proxy.file_exists(kernel.strip()): err_list.append(("Kernel","Kernel %s for %s vm not found on destination node." % (kernel.strip(), vm.name))) ramdisk = vm_conf["ramdisk"] if ramdisk and ramdisk.strip() is not "": if not dest_node.node_proxy.file_exists(ramdisk.strip()): err_list.append(("Ramdisk", "Ramdisk %s for %s vm not found on destination node." % (ramdisk.strip(), vm.name))) # hvm availablity if vm_conf and vm_conf.is_hvm() \ and dest_node.get_platform_info().get("xen_caps","").find("hvm")==-1: err_list.append(("HVM","VM %s requires hvm capabilities which are not found on destination node." % (vm.name))) # TBD : PAE kernel check return (err_list, warn_list)
def migration_op_checks(self, vm_list, dest_node,live): (err_list, warn_list) = VNode.migration_op_checks(self, vm_list, dest_node, live) # src is not same as dest self._compare_node_info(dest_node, "xen_major", err_list) self._compare_node_info(dest_node, "xen_minor", err_list) # find total mem requirements and check against avail mem if len(vm_list) < 2: return (err_list, warn_list) if not live: return (err_list, warn_list) total_vm_mem = 0 for vm in vm_list: if vm.is_running(): total_vm_mem += int(vm["memory"]) if dest_node.is_up(): node_free_mem = self.guess_free_mem(dest_node) if total_vm_mem > node_free_mem: err_list.append(("Memory", "Insufficient memory on destination node. " \ "Total VM memory %s, free memory on destination node %s " % (total_vm_mem, node_free_mem))) return (err_list, warn_list)
def init_on_load(self): VNode.init_on_load(self) self._dom0 = None self.metrics_helper = MetricsHelper(self)
def get_VM_count(self): return (VNode.get_VM_count(self) - 1) # adjust for dom0
def migration_vm_checks(self, vm_name, dest_node, live): """ Implements a series of compatiblity checks required for successful migration. """ (err_list, warn_list) = VNode.migration_vm_checks(self, vm_name, dest_node, live) if self.is_up(): vm = self.get_dom(vm_name) else: vm = DBHelper().find_by_name(VM, vm_name) if vm == None: err_list.append(("VM", "VM %s not found." % vm_name)) return (err_list, warn_list) # mem assumed to be in MB (same unit) vm_memory = 0 if vm.is_running(): vm_memory = vm["memory"] if dest_node.is_up(): node_free_mem = self.guess_free_mem(dest_node) if int(vm_memory) > node_free_mem: err_list.append(("Memory","Insufficient memory on destination node. " \ "VM memory %s, free memory on destination node %s " % (vm["memory"], node_free_mem))) # TBD : compare CPUs. This needs to encode compatibility list. # check AMD/INTEL # X86/X32 # 32 bit vs 64 bit kernel # critical files available or not. vm_conf = vm.get_config() if vm_conf is not None and dest_node.is_up(): bootloader = vm_conf["bootloader"] if bootloader and bootloader.strip() is not "": if not dest_node.node_proxy.file_exists(bootloader.strip()): err_list.append(( "Bootloader", "Bootloader %s for %s vm not found on destination node." % (bootloader.strip(), vm.name))) kernel = vm_conf["kernel"] if kernel and kernel.strip() is not "": if not dest_node.node_proxy.file_exists(kernel.strip()): err_list.append( ("Kernel", "Kernel %s for %s vm not found on destination node." % (kernel.strip(), vm.name))) ramdisk = vm_conf["ramdisk"] if ramdisk and ramdisk.strip() is not "": if not dest_node.node_proxy.file_exists(ramdisk.strip()): err_list.append(( "Ramdisk", "Ramdisk %s for %s vm not found on destination node." % (ramdisk.strip(), vm.name))) # hvm availablity if vm_conf and vm_conf.is_hvm() \ and dest_node.get_platform_info().get("xen_caps","").find("hvm")==-1: err_list.append(( "HVM", "VM %s requires hvm capabilities which are not found on destination node." % (vm.name))) # TBD : PAE kernel check return (err_list, warn_list)
def init_on_load(self): VNode.init_on_load(self)
def get_VM_count(self): return (VNode.get_VM_count(self) -1) # adjust for dom0