.. Reminder for header structure:
  Parts (H1)          : #################### with overline
  Chapters (H2)       : ******************** with overline
  Sections (H3)       : ====================
  Subsections (H4)    : --------------------
  Subsubsections (H5) : ^^^^^^^^^^^^^^^^^^^^
  Paragraphs (H6)     : """""""""""""""""""""

.. meta::
  :description: Frequent problems and questions
  :keywords: lost password, lost private key, stolen private key, BIOS bug, waptdeploy, WAPT, documentation, the WAPT Deployment utility

.. _wapt_faq_other:

##################
FAQ - Other Issues
##################

Known Issue: Diskpart failed ("hard drive not found") on DELL computers
=======================================================================

Some users experience a "Diskpart failed (hard drive not found)" error when using the Diskpart tool on DELL machines configured in RAID or VMD mode.

Probable Cause: This issue is related to the built-in AHCI drivers, which can conflict with RAID or VMD configurations, preventing drives from being detected.

*Suggested solutions:*

**Disable AHCI drivers (temporary method):**

- Access your machine's BIOS.

- Manually change the disk mode from RAID/VMD to AHCI.

.. note::
  
  Note: This solution may result in a slight loss of performance, but solves the detection problem.

**Wait for an update from DELL:**

- DELL is aware of the problem and is working on corrected drivers. You can follow or create a ticket to them.


How to move my repository to another partition
==============================================

For any reason, you may to need move the repository to another partition.

Your repository contains **3** folders which can be quite large:

  * :file:`wapt`;

  * :file:`wapt-host`;

  * :file:`waptwua`.

.. TABS

Linux
-----

On Linux, create a mount point on :file:`fstab`.

For this example, the second partition is named `part2`.

`part2` is an **ext4 formated partition**.

Debian and derivatives
^^^^^^^^^^^^^^^^^^^^^^

* Create a temporary folder.

.. code-block:: bash

  mkdir /mnt/tmp

* Create a temporary mount point.

.. code-block:: bash

  mount /dev/part2 /mnt/tmp

* Move the folders.

.. code-block:: bash

  mv /var/www /mnt/tmp

* Unmont the partition.

.. code-block:: bash

  umount /dev/part2

* Edit the :file:`fstab` file.

.. code-block:: bash

  vi /etc/fstab

* Add the following line to the :file:`fstab` file.

.. code-block:: bash

  # <file system> <mount point> <type>  <options> <dump>  <pass>
  /dev/part2      /var/www      ext4    defaults  0       0

* Mount the partition.

.. code-block:: bash

  mount -a

.. hint::

  If there is no error, the partition is mounted.

* You can check by running.

.. code-block:: bash

  df -h

  #Result
  Filesystem     1K-blocks     Used Available Use% Mounted on
  dev/part2       15G          944M       14G   7% /var/www

* Remove the temporary folder.

.. code-block:: bash

  rm -rf mnt/tmp

RedHat and derivatives
^^^^^^^^^^^^^^^^^^^^^^

* Create a temporary folder for copying the folders.

.. code-block:: bash

  mkdir /mnt/tmp

* Create a temporary mount point.

.. code-block:: bash

  mount /dev/part2 /mnt/tmp

* Move the folders.

.. code-block:: bash

  mv /var/www/html /mnt/tmp

* Unmont the partition.

.. code-block:: bash

  umount /dev/part2

* Edit the :file:`fstab` file.

.. code-block:: bash

  vi /etc/fstab

* Add the following line to the :file:`fstab` file.

.. code-block:: bash

  # <file system> <mount point> <type>  <options> <dump>  <pass>
  /dev/part2      /var/www/html      ext4    defaults  0       0

* Mount the partition.

.. code-block:: bash

  mount -a

.. hint::

  If there is no error, the partition is mounted.

* You can check by running.

.. code-block:: bash

  df -h

  #Result
  Filesystem     1K-blocks     Used Available Use% Mounted on
  dev/part2       15G          944M       14G   7% /var/www

* Remove the temporary folder.

.. code-block:: bash

  rm -rf mnt/tmp

Windows
-------

On Windows, the best method is to :ref:`backup <windows_backup_server>` and :ref:`restore <windows_restore_server>` the WAPT Server on the new partition.

.. note::

  It is possible to install the WAPT Server on another partition than :file:`C:`.

Using a network drive to store and deliver WAPT packages
========================================================

The standard way WAPT works is with a secure web server delivering WAPT packages to the WAPT Clients.

**Tranquil IT advises against using a network drive for delivering WAPT packages** for several reasons:

* A web server is extremely easy to setup, secure, maintain, backup and monitor.

* To work correctly, a WAPT package needs to be self-contained.
  Indeed, we do not know if the network will be available at the time of the installation launch (for example if we have a :program:`waptexit` that starts when the workstation is shutting down on a network with 802.1x user authentication, there will no longer be a network available at the time of installation).
  The self-contained nature of WAPT makes it more deterministic than other deployment solutions.

* Network congestion may result from downloading large packages on large fleets of devices because you have less control over bandwidth rates or you may not be able to finish a partial download.

* This method breaks or at least weakens the security framework of WAPT.

* This method does not allow you to expose your repositories to Internet for your traveling personnel.

.. attention::

  Even though WAPT *can work* independently of the transport mode, **Tranquil IT will not officially support using a network drive to store and deliver WAPT packages**.

Using the register() function in your audit scripts
===================================================

The register() function forces the sending to the WAPT Server of the WAPT Agent's hardware and software inventory.

This function is very taxing on the WAPT Server's performance because it forces the WAPT Server to parse a relatively large :abbr:`JSON (Java Script Object Notation)` :abbr:`BLOB (Binary Large OBject)` and to inject the result into the PostgreSQL database.

The function is by default triggered manually or when a new WAPT package upgrade is applied.

When you use the :code:`register()` function in a WAPT audit script, it will run every time the audit script is triggered so it will load the WAPT Server with no apparent benefit.

Therefore, **we do not recommend the use of the :code:`register()` function in audit scripts**.

EWaptBadControl: 'utf8' codec can not decode byte
=================================================

If you get this message, it may mean that you have not set up correctly your development environment.
Visit this :ref:`section of the documentation on setting up UTF-8 (no BOM) <utf8_no_bom>`.

I have a lot more hosts in the WAPT Console than I have host packages on my Server?
===================================================================================

Following a remark from Philippe LEMAIRE from the `Lycée Français Alexandre Yersin <https://lfay.com.vn/>`_ in Hanoï, if you use the Enterprise version of WAPT and you make heavy use of the :ref:`unit packages <wapt_unit_package>` or :ref:`profile packages <profile_packages>`, you may realize that you will have many more hosts in your WAPT Console than :ref:`host packages <host_packages>` on you WAPT sSrver. **This is normal**.

In fact, WAPT *unit* and *profile* packages are not explicitly assigned to the host (i.e. as dependencies in the *host package*) but are implicitly taken into account by the WAPT Agent dependency engine during the WAPT upgrade.

So one might have no *host* package on the WAPT Server if only *unit packages* are used for managing a fleet of devices.

I have removed the dependency but the package is still installed on my computer
===============================================================================

If a package is installed on a workstation, removing a dependency will not uninstall the package itself.
To uninstall a package from multiple workstations, you must explicitly uninstall it.

To do so, right-click on the package in the Overview tab of the WAPT console and select Uninstall.

If you need to uninstall the package from multiple workstations, you can mark it as a conflict.
To do this, right-click on the Organizational Unit, go to the Conflict tab, and add the package to be uninstalled.
