def METHOD_NAME(test, params, env):
    """
    Test steps:
    1. create a vhba, by 'echo' or 'virsh nodedev-create'
    2. restart libvirtd
    3. check the vhba xml info which created in step 1
    4. destroy the vhba, by 'echo' or 'virsh nodedev-destroy'
    """
    wwnn = params.get("wwnn", "ENTER.YOUR.WWNN")
    wwpn = params.get("wwpn", "ENTER.YOUR.WWPN")
    create_vhba_method = params.get("create_vhba_method", "vish")
    destroy_vhba_method = params.get("destroy_vhba_method", "virsh")
    fc_host_dir = params.get("fc_host_dir", "/sys/class/fc_host")
    online_hbas = []
    first_online_hba = ""
    old_vhbas = []
    new_vhba = ""
    new_vhbas = []
    cur_vhbas = []
    try:
        online_hbas = npiv.find_hbas("hba")
        if not online_hbas:
            test.cancel("NO ONLINE VHBAs!")
        first_online_hba = online_hbas[0]
        old_vhbas = npiv.find_hbas("vhba")
        # Create vhba
        create_vhba(test, wwnn, wwpn, first_online_hba, create_vhba_method,
                    fc_host_dir)
        if not utils_misc.wait_for(lambda: npiv.is_vhbas_added(old_vhbas),
                                   timeout=_TIMEOUT):
            test.fail("vhba not successfully created")
        time.sleep(2)
        tmp_list = list(set(npiv.find_hbas("vhba")).difference(set(old_vhbas)))
        if len(tmp_list) != 1:
            test.fail("Not 1 vhba created, something wrong.")
        new_vhba = tmp_list[0]
        logging.debug("Newly added vhba is: %s" % new_vhba)
        new_vhbas.append(new_vhba)
        # Restart libvirtd, and check vhba's xml after it.
        check_result = restart_libvirtd_and_check_vhbaxml(new_vhba, test)
        if not check_result:
            test.fail("vhba %s's xml changed after libvirtd "
                      "restarted." % new_vhba)
        # Destroy vhba
        cur_vhbas = npiv.find_hbas("vhba")
        delete_vhba(test, new_vhba, wwnn, wwpn, first_online_hba,
                    destroy_vhba_method, fc_host_dir)
        if not utils_misc.wait_for(lambda: npiv.is_vhbas_removed(cur_vhbas),
                                   timeout=_TIMEOUT):
            test.fail("Failed to destroy vhba.")
        if npiv.check_nodedev_exist(new_vhba):
            test.fail("Failed to destroy vhba %s" % new_vhba)
        else:
            new_vhbas.remove(new_vhba)
    finally:
        if new_vhbas:
            for vhba in new_vhbas:
                npiv.nodedev_destroy(vhba)
        cmd_status = process.system('service multipathd restart', verbose=True)
        if cmd_status:
            logging.error("Something wrong when restart multipathd.")