コード例 #1
0
def virsh_memtune(params, env):
    """
    Use virsh memtune to set memtune of guest
    """
    options = ""
    if params.memtune.hardlimit:
        options += "--hard-limit %d " % params.memtune.hardlimit
    if params.memtune.softlimit:
        options += "--soft-limit %d " % params.memtune.softlimit
    if params.memtune.swaphardlimit:
        options += "--swap-hard-limit %d " % params.memtune.swaphardlimit
    params.doc_logger.info(STEPS + "# virsh memtune %s %s --live" %
                           (params.guest_name, options))
    params.doc_logger.info(RESULT + "")
    if params.restart_libvirtd:
        start = [Provider('$guest_name.active.memtune', Provider.SET)]
        end = [Provider('$guest_name.active.memtune', Provider.SET)]

        def restart_and_memtune(name, func, params, env):
            params.doc_logger.info(STEPS + """
        # service libvirtd restart
        Stopping libvirtd daemon: [ OK ]
        Starting libvirtd daemon: [ OK ]
                """)
            func(params, env)
            raise MistClearException

        return Mist({"x": (start, end)}, restart_and_memtune)
コード例 #2
0
class setmem_mist(StaticMist):
    """
    TODO
    """
    _area = {"set_mem": ([Provider('$guest_name.active', Provider.SET),
                          Provider('$guest_name.active.curmem', Provider.CLEAR)],
                          [Provider('$guest_name.active', Provider.SET),
                           Provider('$guest_name.active.curmem', Provider.SET)])}
    _doc_func = no_memballon

    def custom_func(self, func, params, env):
        pass
コード例 #3
0
def check_mem_device_audit(params, env):
    """
    Check the audit system
    """
    params.doc_logger.info(STEPS + "Make sure the auditd is running")

    start1 = [
        Provider('$guest_name.active', Provider.SET),
        Provider('$guest_name.active.memdevice', Provider.CLEAR)
    ]
    end1 = [Provider('$guest_name.active.memdevice', Provider.SET)]

    start2 = [
        Provider('$guest_name.active', Provider.CLEAR),
        Provider('$guest_name.active.memdevice', Provider.CLEAR)
    ]
    end2 = [Provider('$guest_name.active.memdevice', Provider.SET)]

    start3 = [Provider('$guest_name.active.memdevice', Provider.SET)]
    end3 = [
        Provider('$guest_name.active.memdevice', Provider.CLEAR),
        Provider('$guest_name.active', Provider.SET)
    ]

    def check_mem_audit_log(name, func, params, env):
        """
        Check the memory device audit log
        """
        if name is not 'start':
            old_mem = env.get_data('$guest_name.active').data.get('memory')
        else:
            old_mem = 0
        func(params, env)

        active_info = env.get_data('$guest_name.active').data
        new_mem = active_info.get('memory')
        params.doc_logger.info("")
        params.doc_logger.info(STEPS +
                               "# ausearch -m VIRT_RESOURCE -ts recent")
        params.doc_logger.info(RESULT + """
...
type=VIRT_RESOURCE ... msg='virt=kvm resrc=mem reason=%s vm="%s" uuid=%s old-mem=%d new-mem=%d exe="/usr/sbin/libvirtd" hostname=? addr=? terminal=? res=success'
...
        """ % ('start' if name is 'start' else 'update', active_info.get(
            'name'), active_info.get('uuid'), old_mem, new_mem))

    return Mist(
        {
            "attach": (start1, end1),
            "start": (start2, end2),
            "detach": (start3, end3)
        }, check_mem_audit_log)
コード例 #4
0
def host_hugepage_config(params, env):
    """
    set environment on host
    """
    if params.hugetlbfs_mount is None:
        params.hugetlbfs_mount = '/dev/hugepages'

    params.doc_logger.info(STEPS + '# cat /etc/libvirt/qemu.conf\n' + \
                               'hugetlbfs_mount = "%s"\n' % params.hugetlbfs_mount)
    params.doc_logger.info("""
    # service libvirtd restart
    Stopping libvirtd daemon: [ OK ]
    Starting libvirtd daemon: [ OK ]
        """)

    if params.hugetlbfs_mount is not '':
        params.doc_logger.info("""
    Then guest memory backing files will be put in %s/libvirt/qemu/.
    #mount -t hugetlbfs hugetlbfs %s 

    2> reserve memory for huge pages, e.g:
    #sysctl vm.nr_hugepages=600
            """ % (params.hugetlbfs_mount, params.hugetlbfs_mount))
    else:
        # We need do some other things after env reached or require
        start = [
            Provider('$guest_name.active', Provider.CLEAR),
            Provider('$guest_name.config.hugepage', Provider.SET)
        ]
        end = [
            Provider('$guest_name.active', Provider.SET),
            Provider('$guest_name.config.hugepage', Provider.SET)
        ]

        def mist_host_hugepage(name, func, params, env):
            params.doc_logger.info(STEPS +
                                   "# virsh start %s" % params.guest_name)
            params.doc_logger.info(RESULT +
                                   "error: Failed to start domain %s" %
                                   params.guest_name)
            params.doc_logger.info(
                "error: internal error hugepages are disabled by administrator config"
            )
            raise MistDeadEndException()

        return Mist({'active': (start, end)}, mist_host_hugepage)
コード例 #5
0
 def __init__(self):
     self._test_entry.add(Provider('$guest_name.config', Provider.SET))