Browse Source

Merge "fix bug in consume from share" into stable/queens

stable/queens
Zuul 1 month ago
committed by Gerrit Code Review
parent
commit
c62cdde3b7
3 changed files with 27 additions and 1 deletions
  1. +4
    -0
      manila/scheduler/host_manager.py
  2. +15
    -1
      manila/tests/scheduler/test_host_manager.py
  3. +8
    -0
      releasenotes/notes/bug-1872873-fix-consume-from-share-eea5941de17a5bcc.yaml

+ 4
- 0
manila/scheduler/host_manager.py View File

@@ -366,6 +366,10 @@ class HostState(object):

def consume_from_share(self, share):
"""Incrementally update host state from an share."""
if self.provisioned_capacity_gb is not None:
self.provisioned_capacity_gb += share['size']

self.allocated_capacity_gb += share['size']

if (isinstance(self.free_capacity_gb, six.string_types)
and self.free_capacity_gb != 'unknown'):


+ 15
- 1
manila/tests/scheduler/test_host_manager.py View File

@@ -792,10 +792,13 @@ class HostStateTestCase(test.TestCase):
fake_context = context.RequestContext('user', 'project', is_admin=True)
share_size = 10
free_capacity = 100
provisioned_capacity_gb = 50
fake_share = {'id': 'foo', 'size': share_size}
share_capability = {
'total_capacity_gb': free_capacity * 2,
'free_capacity_gb': free_capacity,
'provisioned_capacity_gb': provisioned_capacity_gb,
'allocated_capacity_gb': provisioned_capacity_gb,
'reserved_percentage': 0,
'timestamp': None
}
@@ -806,11 +809,17 @@ class HostStateTestCase(test.TestCase):
fake_host.consume_from_share(fake_share)
self.assertEqual(fake_host.free_capacity_gb,
free_capacity - share_size)
self.assertEqual(fake_host.provisioned_capacity_gb,
provisioned_capacity_gb + share_size)
self.assertEqual(fake_host.allocated_capacity_gb,
provisioned_capacity_gb + share_size)

def test_consume_from_share_unknown_capability(self):
share_capability = {
'total_capacity_gb': 'unknown',
'free_capacity_gb': 'unknown',
'provisioned_capacity_gb': None,
'allocated_capacity_gb': 0,
'reserved_percentage': 0,
'timestamp': None
}
@@ -824,13 +833,18 @@ class HostStateTestCase(test.TestCase):
fake_host.consume_from_share(fake_share)
self.assertEqual(fake_host.total_capacity_gb, 'unknown')
self.assertEqual(fake_host.free_capacity_gb, 'unknown')
self.assertIsNone(fake_host.provisioned_capacity_gb)
self.assertEqual(fake_host.allocated_capacity_gb, share_size)

def test_consume_from_share_invalid_capacity(self):
fake_host = host_manager.PoolState('host1', {}, '_pool0')
fake_host.free_capacity_gb = 'invalid_foo_string'
fake_host.provisioned_capacity_gb = None
fake_host.allocated_capacity_gb = 0
fake_share = {'id': 'fake', 'size': 10}

self.assertRaises(exception.InvalidCapacity,
fake_host.consume_from_share, 'fake')
fake_host.consume_from_share, fake_share)

def test_repr(self):



+ 8
- 0
releasenotes/notes/bug-1872873-fix-consume-from-share-eea5941de17a5bcc.yaml View File

@@ -0,0 +1,8 @@
---

fixes:
- Updated the scheduler pool attributes ``provisioned_capacity_gb`` and
``allocated_capacity_gb`` to accommodate shares being created. This
helps maintain an approximate tally of these attributes in between back end
scheduler updates.


Loading…
Cancel
Save