Merge remote-tracking branch 'origin/pr/110'
* origin/pr/110: Added pool.usage_details API method Fixed error with import
This commit is contained in:
commit
81b3152fa8
@ -270,6 +270,16 @@ class Pool(object):
|
|||||||
return self.name < other.name
|
return self.name < other.name
|
||||||
return NotImplemented
|
return NotImplemented
|
||||||
|
|
||||||
|
@property
|
||||||
|
def usage_details(self):
|
||||||
|
''' Storage pool usage details (current - not cached) '''
|
||||||
|
pool_usage_data = self.app.qubesd_call(
|
||||||
|
'dom0', 'admin.pool.UsageDetails', self.name, None)
|
||||||
|
pool_usage_data = pool_usage_data.decode('utf-8')
|
||||||
|
assert pool_usage_data.endswith('\n')
|
||||||
|
pool_usage_data = pool_usage_data[:-1]
|
||||||
|
return dict(l.split('=', 1) for l in pool_usage_data.splitlines())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def config(self):
|
def config(self):
|
||||||
''' Storage pool config '''
|
''' Storage pool config '''
|
||||||
@ -287,7 +297,7 @@ class Pool(object):
|
|||||||
def size(self):
|
def size(self):
|
||||||
''' Storage pool size, in bytes'''
|
''' Storage pool size, in bytes'''
|
||||||
try:
|
try:
|
||||||
return int(self.config['size'])
|
return int(self.usage_details['data_size'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# pool driver does not provide size information
|
# pool driver does not provide size information
|
||||||
return None
|
return None
|
||||||
@ -296,7 +306,7 @@ class Pool(object):
|
|||||||
def usage(self):
|
def usage(self):
|
||||||
''' Space used in the pool, in bytes '''
|
''' Space used in the pool, in bytes '''
|
||||||
try:
|
try:
|
||||||
return int(self.config['usage'])
|
return int(self.usage_details['data_usage'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# pool driver does not provide usage information
|
# pool driver does not provide usage information
|
||||||
return None
|
return None
|
||||||
|
@ -27,6 +27,7 @@ import multiprocessing
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
import unittest.mock as mock
|
import unittest.mock as mock
|
||||||
|
from unittest.mock import call
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import mock
|
import mock
|
||||||
from mock import call
|
from mock import call
|
||||||
|
@ -303,6 +303,36 @@ class TestPool(qubesadmin.tests.QubesTestCase):
|
|||||||
})
|
})
|
||||||
self.assertAllCalled()
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_011_usage(self):
|
||||||
|
self.app.expected_calls[('dom0', 'admin.pool.List', None, None)] = \
|
||||||
|
b'0\x00file\nlvm\n'
|
||||||
|
self.app.expected_calls[('dom0', 'admin.pool.UsageDetails', 'lvm', None)] = \
|
||||||
|
b'0\x00data_size=204800\n' \
|
||||||
|
b'data_usage=102400\n' \
|
||||||
|
b'metadata_size=1024\n' \
|
||||||
|
b'metadata_usage=50\n'
|
||||||
|
pool = self.app.pools['lvm']
|
||||||
|
self.assertEqual(pool.usage_details, {
|
||||||
|
'data_size': '204800',
|
||||||
|
'data_usage': '102400',
|
||||||
|
'metadata_size': '1024',
|
||||||
|
'metadata_usage': '50',
|
||||||
|
})
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_012_size_and_usage(self):
|
||||||
|
self.app.expected_calls[('dom0', 'admin.pool.List', None, None)] = \
|
||||||
|
b'0\x00file\nlvm\n'
|
||||||
|
self.app.expected_calls[('dom0', 'admin.pool.UsageDetails', 'lvm', None)] = \
|
||||||
|
b'0\x00data_size=204800\n' \
|
||||||
|
b'data_usage=102400\n' \
|
||||||
|
b'metadata_size=1024\n' \
|
||||||
|
b'metadata_usage=50\n'
|
||||||
|
pool = self.app.pools['lvm']
|
||||||
|
self.assertEqual(pool.size, 204800)
|
||||||
|
self.assertEqual(pool.usage, 102400)
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
def test_020_volumes(self):
|
def test_020_volumes(self):
|
||||||
self.app.expected_calls[('dom0', 'admin.pool.List', None, None)] = \
|
self.app.expected_calls[('dom0', 'admin.pool.List', None, None)] = \
|
||||||
b'0\x00file\nlvm\n'
|
b'0\x00file\nlvm\n'
|
||||||
|
Loading…
Reference in New Issue
Block a user