summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heat/common/service_utils.py12
-rw-r--r--heat/engine/service.py12
-rw-r--r--heat/tests/test_common_service_utils.py12
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)