def get_datastore_info(ds_obj): """ Gets a human-readable summary of a Datastore. :param ds_obj: The datastore to get information on :type ds_obj: vim.Datastore :return: The datastore's information :rtype: str """ if not ds_obj: logging.error("No Datastore was given to get_datastore_info") return "" from adles.utils import sizeof_fmt info_string = "\n" summary = ds_obj.summary ds_capacity = summary.capacity ds_freespace = summary.freeSpace ds_uncommitted = summary.uncommitted if summary.uncommitted else 0 ds_provisioned = ds_capacity - ds_freespace + ds_uncommitted ds_overp = ds_provisioned - ds_capacity ds_overp_pct = (ds_overp * 100) / ds_capacity if ds_capacity else 0 info_string += "Name : %s\n" % summary.name info_string += "URL : %s\n" % summary.url info_string += "Capacity : %s\n" % sizeof_fmt(ds_capacity) info_string += "Free Space : %s\n" % sizeof_fmt(ds_freespace) info_string += "Uncommitted : %s\n" % sizeof_fmt(ds_uncommitted) info_string += "Provisioned : %s\n" % sizeof_fmt(ds_provisioned) if ds_overp > 0: info_string += "Over-provisioned : %s / %s %%\n" \ % (sizeof_fmt(ds_overp), ds_overp_pct) info_string += "Hosts : %d\n" % len(ds_obj.host) info_string += "Virtual Machines : %d" % len(ds_obj.vm) return info_string
def test_sizeof_fmt(): from adles.utils import sizeof_fmt assert sizeof_fmt(0) == '0.0bytes' assert sizeof_fmt(10.12345) == '10.1bytes' assert sizeof_fmt(10.19) == '10.2bytes' assert sizeof_fmt(1023) == '1023.0bytes' assert sizeof_fmt(1024) == '1.0KB' assert sizeof_fmt(10000) == '9.8KB' assert sizeof_fmt(1000000000) == '953.7MB' assert sizeof_fmt(100000000000000000) == '90949.5TB'
def snapshot_disk_usage(self): """Determines the total disk usage of a VM's snapshots. :return: Human-readable disk usage of the snapshots :rtype: str """ from re import search disk_list = self._vm.layoutEx.file size = 0 for disk in disk_list: if disk.type == 'snapshotData': size += disk.size ss_disk = search(r'0000\d\d', disk.name) if ss_disk: size += disk.size return utils.sizeof_fmt(size)