Remove storage size and usage methods from QubesVM
This commit is contained in:
parent
7f85ba1f13
commit
930fe417a8
@ -129,16 +129,6 @@ class Storage(object):
|
||||
result += volume.usage
|
||||
return result
|
||||
|
||||
# TODO Remove this wrapper
|
||||
def get_disk_utilization_private_img(self):
|
||||
# pylint: disable=invalid-name,missing-docstring
|
||||
return self.vm.volume['private'].usage
|
||||
|
||||
# TODO Remove this wrapper
|
||||
def get_private_img_sz(self):
|
||||
# :pylint: disable=missing-docstring
|
||||
return self.vm.volume['private'].size
|
||||
|
||||
def resize(self, volume, size):
|
||||
''' Resize volume '''
|
||||
self.get_pool(volume).resize(volume, size)
|
||||
|
@ -38,7 +38,7 @@ class TC_00_AdminVM(qubes.tests.QubesTestCase):
|
||||
self.app = qubes.tests.vm.TestApp()
|
||||
self.vm = qubes.vm.adminvm.AdminVM(self.app,
|
||||
xml=None, qid=0, name='dom0')
|
||||
except: # pylint: disable=bare-except
|
||||
except: # pylint: disable=bare-except
|
||||
if self.id().endswith('.test_000_init'):
|
||||
raise
|
||||
self.skipTest('setup failed')
|
||||
@ -69,17 +69,16 @@ class TC_00_AdminVM(qubes.tests.QubesTestCase):
|
||||
self.assertGreater(self.vm.get_mem_static_max(), 0)
|
||||
|
||||
def test_304_get_disk_utilization(self):
|
||||
self.assertEqual(self.vm.get_disk_utilization(), 0)
|
||||
self.assertRaises(self.vm.storage.get_disk_utilization(), 0)
|
||||
|
||||
def test_305_get_disk_utilization_private_img(self):
|
||||
# pylint: disable=invalid-name
|
||||
self.assertEqual(self.vm.get_disk_utilization_private_img(), 0)
|
||||
def test_305_has_no_private_volume(self):
|
||||
self.assertEqual(KeyError, self.vm.volumes['private'])
|
||||
|
||||
def test_306_get_private_img_sz(self):
|
||||
self.assertEqual(self.vm.get_private_img_sz(), 0)
|
||||
def test_306_has_no_root_volume(self):
|
||||
self.assertEqual(KeyError, self.vm.volumes['root'])
|
||||
|
||||
def test_307_verify_files(self):
|
||||
self.assertEqual(self.vm.get_private_img_sz(), 0)
|
||||
def test_307_has_no_volatile_volume(self):
|
||||
self.assertEqual(KeyError, self.vm.volumes['volatile'])
|
||||
|
||||
def test_310_start(self):
|
||||
with self.assertRaises(qubes.exc.QubesException):
|
||||
|
@ -31,7 +31,6 @@ from __future__ import print_function
|
||||
import __builtin__
|
||||
import argparse
|
||||
import collections
|
||||
import math
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
@ -122,8 +121,10 @@ class Column(object):
|
||||
if isinstance(ret, (qubes.vm.BaseVM, qubes.Label)):
|
||||
return ret.name
|
||||
|
||||
return ret
|
||||
if isinstance(ret, int):
|
||||
return str(ret)
|
||||
|
||||
return ret
|
||||
|
||||
def __repr__(self):
|
||||
return '{}(head={!r}, width={!r})'.format(self.__class__.__name__,
|
||||
@ -389,6 +390,29 @@ class StatusColumn(Column):
|
||||
return ''.join((flag(self, vm) or '-') for flag in self.get_flags())
|
||||
|
||||
|
||||
def calc_size(vm, volume_name):
|
||||
''' Calculates the volume size in MB '''
|
||||
try:
|
||||
return vm.volumes[volume_name].size // 1024 // 1024
|
||||
except KeyError:
|
||||
return 0
|
||||
|
||||
def calc_usage(vm, volume_name):
|
||||
''' Calculates the volume usage in MB '''
|
||||
try:
|
||||
return vm.volumes[volume_name].usage // 1024 // 1024
|
||||
except KeyError:
|
||||
return 0
|
||||
|
||||
def calc_used(vm, volume_name):
|
||||
''' Calculates the volume usage in percent '''
|
||||
size = calc_size(vm, volume_name)
|
||||
if size == 0:
|
||||
return 0
|
||||
usage = calc_usage(vm, volume_name)
|
||||
return usage * 100 // size
|
||||
|
||||
|
||||
# todo maxmem
|
||||
|
||||
Column('GATEWAY', width=15,
|
||||
@ -396,45 +420,37 @@ Column('GATEWAY', width=15,
|
||||
doc='Network gateway.')
|
||||
|
||||
Column('MEMORY', width=5,
|
||||
attr=(lambda vm: vm.get_mem()/1024 if vm.is_running() else None),
|
||||
attr=(lambda vm: vm.get_mem() / 1024 if vm.is_running() else None),
|
||||
doc='Memory currently used by VM')
|
||||
|
||||
Column('DISK', width=5,
|
||||
attr=(lambda vm: vm.get_disk_utilization()/1024/1024),
|
||||
attr=(lambda vm: vm.storage.get_disk_utilization() / 1024 / 1024),
|
||||
doc='Total disk utilisation.')
|
||||
|
||||
|
||||
Column('PRIV-CURR', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_disk_utilization_private_img()/1024/1024))),
|
||||
attr=(lambda vm: calc_usage(vm, 'private')),
|
||||
doc='Disk utilisation by private image (/home, /usr/local).')
|
||||
|
||||
Column('PRIV-MAX', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_private_img_sz()/1024/1024))),
|
||||
attr=(lambda vm: calc_size(vm, 'private')),
|
||||
doc='Maximum available space for private image.')
|
||||
|
||||
Column('PRIV-USED', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_disk_utilization_private_img() * 100
|
||||
/ vm.get_private_img_sz()))),
|
||||
attr=(lambda vm: calc_used(vm, 'private')),
|
||||
doc='Disk utilisation by private image as a percentage of available space.')
|
||||
|
||||
|
||||
Column('ROOT-CURR', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_disk_utilization_private_img()/1024/1024))),
|
||||
attr=(lambda vm: calc_usage(vm, 'root')),
|
||||
doc='Disk utilisation by root image (/usr, /lib, /etc, ...).')
|
||||
|
||||
Column('ROOT-MAX', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_private_img_sz()/1024/1024))),
|
||||
attr=(lambda vm: calc_size(vm, 'root')),
|
||||
doc='Maximum available space for root image.')
|
||||
|
||||
Column('ROOT-USED', width=5,
|
||||
attr=(lambda vm:
|
||||
int(math.floor(vm.get_disk_utilization_private_img() * 100
|
||||
/ vm.get_private_img_sz()))),
|
||||
attr=(lambda vm: calc_used(vm, 'root')),
|
||||
doc='Disk utilisation by root image as a percentage of available space.')
|
||||
|
||||
|
||||
|
@ -95,7 +95,7 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
|
||||
:py:meth:`qubes.vm.qubesvm.QubesVM.get_mem`
|
||||
'''
|
||||
|
||||
#return psutil.virtual_memory().total/1024
|
||||
# return psutil.virtual_memory().total/1024
|
||||
for line in open('/proc/meminfo'):
|
||||
if line.startswith('MemTotal:'):
|
||||
return int(line.split(':')[1].strip().split()[0])
|
||||
@ -110,23 +110,6 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
|
||||
'''
|
||||
return self.app.vmm.libvirt_conn.getInfo()[1]
|
||||
|
||||
|
||||
def get_disk_utilization(self):
|
||||
'''Always ``0``.
|
||||
|
||||
.. seealso:
|
||||
:py:meth:`qubes.vm.qubesvm.QubesVM.get_disk_utilization`
|
||||
'''
|
||||
return 0
|
||||
|
||||
def get_disk_utilization_private_img(self):
|
||||
'''Always ``0``.
|
||||
|
||||
.. seealso:
|
||||
:py:meth:`qubes.vm.qubesvm.QubesVM.get_disk_utilization_private_img`
|
||||
'''
|
||||
return 0
|
||||
|
||||
def get_private_img_sz(self):
|
||||
'''Always ``0``.
|
||||
|
||||
@ -135,7 +118,6 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
|
||||
'''
|
||||
return 0
|
||||
|
||||
|
||||
def verify_files(self):
|
||||
'''Always :py:obj:`True`
|
||||
|
||||
@ -150,7 +132,7 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
|
||||
|
||||
.. seealso:
|
||||
:py:meth:`qubes.vm.qubesvm.QubesVM.start`
|
||||
''' # pylint: disable=unused-argument
|
||||
''' # pylint: disable=unused-argument
|
||||
raise qubes.exc.QubesVMError(self, 'Cannot start Dom0 fake domain!')
|
||||
|
||||
|
||||
|
@ -1547,82 +1547,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
||||
'libvirt error code: {!r}'.format(e.get_error_code()))
|
||||
raise
|
||||
|
||||
|
||||
|
||||
# XXX shouldn't this go only to vms that have root image?
|
||||
def get_disk_utilization_root_img(self):
|
||||
'''Get space that is actually ocuppied by :py:attr:`volumes['root']`.
|
||||
|
||||
This is a temporary wrapper for backwards compatibility. You should
|
||||
call directly :py:attr:`volumes[name].utilization`
|
||||
:returns: domain's real disk image size [FIXME unit]
|
||||
:rtype: FIXME
|
||||
|
||||
.. seealso:: :py:meth:`get_root_img_sz`
|
||||
'''
|
||||
|
||||
warnings.warn("get_disk_utilization_root_img is deprecated,"
|
||||
" use volumes['root'].utilization", DeprecationWarning)
|
||||
return qubes.storage.file.get_disk_usage(
|
||||
self.volumes['root'].utilization)
|
||||
|
||||
|
||||
# XXX shouldn't this go only to vms that have root image?
|
||||
def get_root_img_sz(self):
|
||||
'''Get the size of the :py:attr:`volumes['root']`.
|
||||
|
||||
This is a temporary wrapper for backwards compatibility. You should
|
||||
call directly :py:attr:`volumes[name].size`
|
||||
:returns: domain's virtual disk size [FIXME unit]
|
||||
:rtype: FIXME
|
||||
|
||||
.. seealso:: :py:meth:`get_disk_utilization_root_img`
|
||||
'''
|
||||
|
||||
warnings.warn(
|
||||
"get_disk_root_img_sz is deprecated, use volumes['root'].size",
|
||||
DeprecationWarning)
|
||||
return qubes.storage.file.get_disk_usage(self.volumes['root'].size)
|
||||
|
||||
def get_disk_utilization_private_img(self):
|
||||
'''Get space that is actually ocuppied by :py:attr:`volumes['private']`.
|
||||
|
||||
This is a temporary wrapper for backwards compatibility. You should
|
||||
call directly :py:attr:`volumes[name].utilization`
|
||||
:returns: domain's real disk image size [FIXME unit]
|
||||
:rtype: FIXME
|
||||
''' # pylint: disable=invalid-name
|
||||
|
||||
warnings.warn("get_disk_utilization_private_img is deprecated,"
|
||||
" use volumes['private'].utilization", DeprecationWarning)
|
||||
return qubes.storage.file.get_disk_usage(self.volumes[
|
||||
'private'].utilization)
|
||||
|
||||
def get_private_img_sz(self):
|
||||
'''Get the size of the :py:attr:`volumes['private']`.
|
||||
|
||||
This is a temporary wrapper for backwards compatibility. You should
|
||||
call directly :py:attr:`volumes[name].size`
|
||||
:returns: domain's virtual disk size [FIXME unit]
|
||||
:rtype: FIXME
|
||||
|
||||
.. seealso:: :py:meth:`get_disk_utilization_private_img`
|
||||
'''
|
||||
|
||||
warnings.warn("get_disk_private_img_sz is deprecated,"
|
||||
" use volumes['private'].size", DeprecationWarning)
|
||||
return qubes.storage.file.get_disk_usage(self.volumes['private'].size)
|
||||
|
||||
def get_disk_utilization(self):
|
||||
'''Return total space actually occuppied by all files belonging to \
|
||||
this domain.
|
||||
|
||||
:returns: domain's total disk usage [FIXME unit]
|
||||
:rtype: FIXME
|
||||
'''
|
||||
|
||||
return qubes.storage.file.get_disk_usage(self.dir_path)
|
||||
|
||||
# TODO move to storage
|
||||
def verify_files(self):
|
||||
'''Verify that files accessed by this machine are sane.
|
||||
|
Loading…
Reference in New Issue
Block a user