diff options
-rw-r--r-- | heat/common/service_utils.py | 12 | ||||
-rw-r--r-- | heat/engine/service.py | 12 | ||||
-rw-r--r-- | heat/tests/test_common_service_utils.py | 12 |
3 files changed, 17 insertions, 19 deletions
diff --git a/heat/common/service_utils.py b/heat/common/service_utils.py index b5cf00485..a59fef8e8 100644 --- a/heat/common/service_utils.py +++ b/heat/common/service_utils.py @@ -51,14 +51,10 @@ def format_service(service): return status = 'down' - if service.updated_at is not None: - if ((timeutils.utcnow() - service.updated_at).total_seconds() - <= service.report_interval): - status = 'up' - else: - if ((timeutils.utcnow() - service.created_at).total_seconds() - <= service.report_interval): - status = 'up' + last_updated = service.updated_at or service.created_at + check_interval = (timeutils.utcnow() - last_updated).total_seconds() + if check_interval <= 2 * service.report_interval: + status = 'up' result = { SERVICE_ID: service.id, diff --git a/heat/engine/service.py b/heat/engine/service.py index 3b5b7c1d7..7cac61d2b 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -663,11 +663,13 @@ class EngineService(service.ServiceBase): if stack_object.Stack.get_by_name(cnxt, stack_name): raise exception.StackExists(stack_name=stack_name) - tenant_limit = cfg.CONF.max_stacks_per_tenant - if stack_object.Stack.count_all(cnxt) >= tenant_limit: - message = _("You have reached the maximum stacks per tenant, " - "%d. Please delete some stacks.") % tenant_limit - raise exception.RequestLimitExceeded(message=message) + # Do not stack limit check for admin since admin can see all stacks. + if not cnxt.is_admin: + tenant_limit = cfg.CONF.max_stacks_per_tenant + if stack_object.Stack.count_all(cnxt) >= tenant_limit: + message = _("You have reached the maximum stacks per tenant, " + "%d. Please delete some stacks.") % tenant_limit + raise exception.RequestLimitExceeded(message=message) self._validate_template(cnxt, parsed_template) def _validate_template(self, cnxt, parsed_template): diff --git a/heat/tests/test_common_service_utils.py b/heat/tests/test_common_service_utils.py index 6bad2a83d..0745e8f85 100644 --- a/heat/tests/test_common_service_utils.py +++ b/heat/tests/test_common_service_utils.py @@ -51,23 +51,23 @@ class TestServiceUtils(common.HeatTestCase): self.assertEqual(service_dict['status'], 'up') - # check again within first report_interval time (60) + # check again within first report_interval time service_dict = service_utils.format_service(service) self.assertEqual(service_dict['status'], 'up') - # check update not happen within report_interval time (60+) + # check update not happen within 2*report_interval time service.created_at = (timeutils.utcnow() - - datetime.timedelta(0, 70)) + datetime.timedelta(0, 130)) service_dict = service_utils.format_service(service) self.assertEqual(service_dict['status'], 'down') - # check update happened after report_interval time (60+) + # check update happened after 2* report_interval time service.updated_at = (timeutils.utcnow() - - datetime.timedelta(0, 70)) + datetime.timedelta(0, 130)) service_dict = service_utils.format_service(service) self.assertEqual(service_dict['status'], 'down') - # check update happened within report_interval time (60) + # check update happened within report_interval time service.updated_at = (timeutils.utcnow() - datetime.timedelta(0, 50)) service_dict = service_utils.format_service(service) |