Merge "Add return value for collect_usage()"
This commit is contained in:
commit
07db108fad
|
@ -47,6 +47,10 @@ class BaseCollector(object):
|
|||
raise NotImplementedError
|
||||
|
||||
def collect_usage(self, project, start, end):
|
||||
"""Collect usage for specific tenant.
|
||||
|
||||
:return: True if no error happened otherwise return False.
|
||||
"""
|
||||
LOG.info('collect_usage by %s for project: %s(%s)' %
|
||||
(self.__class__.__name__, project['id'], project['name']))
|
||||
|
||||
|
@ -92,13 +96,15 @@ class BaseCollector(object):
|
|||
project['name'], window_start, window_end)
|
||||
except Exception as e:
|
||||
LOG.exception(
|
||||
"IntegrityError for %s(%s) in window: %s - %s, reason: %s",
|
||||
project['id'], project['name'],
|
||||
"Collection failed for %s(%s) in window: %s - %s, reason: "
|
||||
"%s", project['id'], project['name'],
|
||||
window_start.strftime(constants.iso_time),
|
||||
window_end.strftime(constants.iso_time),
|
||||
str(e)
|
||||
)
|
||||
return
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def _filter_and_group(self, usage, usage_by_resource):
|
||||
trust_sources = set(CONF.collector.trust_sources)
|
||||
|
|
|
@ -129,9 +129,8 @@ class CollectorService(service.Service):
|
|||
db_project = db_api.project_add(project, last_collect)
|
||||
start = db_project.last_collected
|
||||
|
||||
self.collector.collect_usage(project, start, end)
|
||||
|
||||
count = count + 1
|
||||
if self.collector.collect_usage(project, start, end):
|
||||
count = count + 1
|
||||
except Exception:
|
||||
LOG.warning('Get lock failed. Process: %s' % self.identifier)
|
||||
|
||||
|
|
|
@ -11,11 +11,14 @@
|
|||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
import os
|
||||
|
||||
import mock
|
||||
|
||||
from distil.collector import base as collector_base
|
||||
from distil.service import collector
|
||||
from distil.tests.unit import base
|
||||
|
||||
|
||||
|
@ -136,3 +139,17 @@ class CollectorBaseTest(base.DistilWithDbTestCase):
|
|||
os_distro = collector._get_os_distro(entry)
|
||||
|
||||
self.assertEqual('unknown', os_distro)
|
||||
|
||||
@mock.patch('distil.common.openstack.get_ceilometer_client')
|
||||
def test_collect_usage_meter_exception(self, mock_cclient):
|
||||
mock_cclient.new_samples.list.side_effect = Exception(
|
||||
'get_meter exception!')
|
||||
|
||||
srv = collector.CollectorService()
|
||||
ret = srv.collector.collect_usage(
|
||||
{'name': 'fake_project', 'id': '123'},
|
||||
datetime.utcnow() - timedelta(hours=1.5),
|
||||
datetime.utcnow()
|
||||
)
|
||||
|
||||
self.assertFalse(ret)
|
||||
|
|
Loading…
Reference in New Issue