D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
modules
/
Filename :
win_disk.py
back
Copy
""" Module for gathering disk information on Windows :depends: - win32api Python module """ import ctypes import string import salt.utils.platform try: import win32api except ImportError: pass # Define the module's virtual name __virtualname__ = "disk" UPPERCASE = string.ascii_uppercase def __virtual__(): """ Only works on Windows systems """ if salt.utils.platform.is_windows(): return __virtualname__ return (False, "Module win_disk: module only works on Windows systems") def usage(): """ Return usage information for volumes mounted on this minion CLI Example: .. code-block:: bash salt '*' disk.usage """ drives = [] ret = {} drive_bitmask = ctypes.windll.kernel32.GetLogicalDrives() for letter in UPPERCASE: if drive_bitmask & 1: drives.append(letter) drive_bitmask >>= 1 for drive in drives: try: ( available_bytes, total_bytes, total_free_bytes, ) = win32api.GetDiskFreeSpaceEx("{}:\\".format(drive)) used = total_bytes - total_free_bytes capacity = used / float(total_bytes) * 100 ret["{}:\\".format(drive)] = { "filesystem": "{}:\\".format(drive), "1K-blocks": total_bytes / 1024, "used": used / 1024, "available": total_free_bytes / 1024, "capacity": "{:.0f}%".format(capacity), } except Exception: # pylint: disable=broad-except ret["{}:\\".format(drive)] = { "filesystem": "{}:\\".format(drive), "1K-blocks": None, "used": None, "available": None, "capacity": None, } return ret