Ejemplo n.º 1
0
    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 
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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 
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
 def init_on_load(self):
     VNode.init_on_load(self)
     self._dom0 = None
     self.metrics_helper = MetricsHelper(self)
Ejemplo n.º 9
0
 def get_VM_count(self):
     return (VNode.get_VM_count(self) - 1)  # adjust for dom0
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
 def init_on_load(self):
     VNode.init_on_load(self)
Ejemplo n.º 12
0
 def init_on_load(self):
     VNode.init_on_load(self)
     self._dom0 = None
     self.metrics_helper = MetricsHelper(self)
Ejemplo n.º 13
0
 def get_VM_count(self):
     return (VNode.get_VM_count(self) -1) # adjust for dom0
Ejemplo n.º 14
0
 def init_on_load(self):
     VNode.init_on_load(self)