Use total entries from pyrax to get shard capacity
Change-Id: I5bb4ac0989ba9341b292c5d3a1bb059ca6c548d7
This commit is contained in:
parent
0458de585d
commit
f25180bcc3
@ -801,23 +801,16 @@ class ServicesController(base.ServicesBase):
|
||||
target_url=new_cert, shared_ssl_flag=False)
|
||||
|
||||
def is_shard_full(self, shard_name):
|
||||
count = 0
|
||||
try:
|
||||
shard_domain = self.client.find(name=shard_name)
|
||||
except exc.NotFound:
|
||||
LOG.error("Shards not configured properly, could not find {0}.")
|
||||
return True
|
||||
|
||||
records = shard_domain.list_records(limit=100)
|
||||
count += len(records)
|
||||
# populates dns client with metadata
|
||||
shard_domain.list_records()
|
||||
|
||||
# Loop until all records are printed
|
||||
while True:
|
||||
try:
|
||||
records = self.client.list_records_next_page()
|
||||
count += len(records)
|
||||
except exc.NoMoreResults:
|
||||
break
|
||||
count = int(self.client._manager._paging['record']['total_entries'])
|
||||
|
||||
LOG.info(
|
||||
"There were a total of {0} record(s) for {1}.".format(
|
||||
|
@ -697,7 +697,9 @@ class DefaultServicesController(base.ServicesController):
|
||||
except StopIteration:
|
||||
delattr(self, store)
|
||||
raise errors.SharedShardsExhausted(
|
||||
'Domain {0} has already been taken'.format(domain_name))
|
||||
'Domain {0} has already been taken or '
|
||||
'all shards are at maximum capacity when '
|
||||
'trying to provision.'.format(domain_name))
|
||||
|
||||
def _pick_shared_ssl_domain(self, domain, service_id, store):
|
||||
shared_ssl_domain = self._generate_shared_ssl_domain(
|
||||
|
@ -1060,7 +1060,11 @@ class TestServicesUpdate(base.TestCase):
|
||||
find_mock.list_records.return_value = range(100)
|
||||
self.client.find.return_value = find_mock
|
||||
|
||||
self.client.list_records_next_page.side_effect = exc.NoMoreResults
|
||||
self.client._manager._paging = {
|
||||
'record': {
|
||||
'total_entries': 100
|
||||
}
|
||||
}
|
||||
|
||||
self.assertFalse(self.controller.is_shard_full('shard_name'))
|
||||
|
||||
@ -1068,19 +1072,10 @@ class TestServicesUpdate(base.TestCase):
|
||||
find_mock = mock.Mock()
|
||||
find_mock.list_records.return_value = range(600)
|
||||
self.client.find.return_value = find_mock
|
||||
|
||||
self.client.list_records_next_page.side_effect = exc.NoMoreResults
|
||||
|
||||
self.assertTrue(self.controller.is_shard_full('shard_name'))
|
||||
|
||||
def test_is_shard_full_paginate_true(self):
|
||||
find_mock = mock.Mock()
|
||||
find_mock.list_records.return_value = range(300)
|
||||
self.client.find.return_value = find_mock
|
||||
|
||||
self.client.list_records_next_page.side_effect = [
|
||||
range(300),
|
||||
exc.NoMoreResults,
|
||||
]
|
||||
self.client._manager._paging = {
|
||||
'record': {
|
||||
'total_entries': 600
|
||||
}
|
||||
}
|
||||
|
||||
self.assertTrue(self.controller.is_shard_full('shard_name'))
|
||||
|
Loading…
Reference in New Issue
Block a user