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)
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
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()