Exemplo n.º 1
0
def recover_vm_xml(vms):
    """Recover to utc clock"""
    for vm in vms:
        logging.debug("Recover xml for %s", vm.name)
        vmclockxml = vm_xml.VMClockXML()
        vmclockxml.from_dumpxml(vm.name)
        del vmclockxml.adjustment
        del vmclockxml.timezone
        vmclockxml.offset = "utc"
        vmclockxml.timers = []
        try:
            vmclockxml.sync()
        except xcepts.LibvirtXMLError, detail:
            logging.error(detail)
Exemplo n.º 2
0
def set_clock_xml(test, vm, params):
    """
    Config VM clock XML.

    :param vm: VM instance
    :param params: Test parameters
    """
    timer_elems = []
    if "yes" == params.get("specific_timer", "no"):
        timers = params.get("timer_name", "").split(',')
        timer_present = params.get("timer_present", "no")
        if len(timers):
            new_present = timer_present
            for timer in timers:
                if timer_present == 'mix':
                    if new_present == "yes":
                        new_present = "no"
                    else:
                        new_present = "yes"
                timer_attrs = {'name': timer, 'present': new_present}
                timer_elems.append(timer_attrs)
        else:
            test.error("No timer provided")

    offset = params.get("clock_offset", "utc")
    adjustment = params.get("clock_adjustment")
    timezone = params.get("clock_timezone")

    vmxml = vm_xml.VMXML.new_from_dumpxml(vm.name)
    vmclockxml = vm_xml.VMClockXML(offset=offset)
    del vmclockxml.adjustment
    del vmclockxml.timezone
    if adjustment is not None:
        vmclockxml.adjustment = adjustment
    if timezone is not None:
        vmclockxml.timezone = timezone
    # Clear timers for re-creating
    vmclockxml.timers = []
    newtimers = []
    for element in timer_elems:
        newtimer = vm_xml.VMClockXML.TimerXML()
        newtimer.update(element)
        newtimers.append(newtimer)
    vmclockxml.timers = newtimers
    vmxml.clock = vmclockxml
    logging.debug("New vm XML:\n%s", vmxml)
    vmxml.sync()
    # Return timer elements for test verify
    return timer_elems
Exemplo n.º 3
0
def set_xml_clock(vms, params):
    """
    Config libvirt XML for clock.
    """
    # Get a dict include operations to timer
    timer_elems = []
    if ("yes" == params.get("xml_timer", "no")) is True:
        timers = params.get("timers_attr", "").split('|')
        if len(timers):
            for timer in timers:
                timer_attrs = {}
                attrs = timer.split(';')
                for attr in attrs:
                    pairs = attr.split('=')
                    if len(pairs) != 2:
                        logging.error("timer attribute pairs '%s' do not"
                                      " match!SKIP...", pairs)
                        continue
                    key = pairs[0]
                    value = pairs[1]
                    timer_attrs[key] = value
                timer_elems.append(timer_attrs)
        else:
            logging.warn("xml_timer set to 'yes' but no timers provided!")

    offset = params.get("clock_offset", "utc")
    adjustment = params.get("clock_adjustment")
    timezone = params.get("clock_timezone")
    for vm in vms:
        vmclockxml = vm_xml.VMClockXML()
        vmclockxml.from_dumpxml(vm.name)
        vmclockxml.offset = offset
        del vmclockxml.adjustment
        del vmclockxml.timezone
        if adjustment is not None:
            vmclockxml.adjustment = adjustment
        if timezone is not None:
            vmclockxml.timezone = timezone
        # Clear timers for re-creating
        vmclockxml.timers = []
        newtimers = []
        for element in timer_elems:
            newtimer = vm_xml.VMClockXML.TimerXML()
            newtimer.update(element)
            newtimers.append(newtimer)
        vmclockxml.timers = newtimers
        logging.debug("New vm config:\n%s", vmclockxml)
        vmclockxml.sync()