From 76132dbab20c304fb5e1f58879b9dd5f1aa52b1f Mon Sep 17 00:00:00 2001 From: Chris Church Date: Thu, 16 Apr 2015 12:27:58 -0400 Subject: [PATCH] Update license check when adding hosts. Fixes https://trello.com/c/Llol9BCJ --- awx/main/access.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/awx/main/access.py b/awx/main/access.py index 5245750574..b8ebe0a895 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -144,7 +144,7 @@ class BaseAccess(object): def can_unattach(self, obj, sub_obj, relationship): return self.can_change(obj, None) - def check_license(self): + def check_license(self, add_host=False): reader = TaskSerializer() validation_info = reader.from_file() if 'test' in sys.argv or 'jenkins' in sys.argv: @@ -156,9 +156,16 @@ class BaseAccess(object): raise PermissionDenied("license is missing") if validation_info.get("grace_period_remaining") <= 0: raise PermissionDenied("license has expired") - if validation_info.get('free_instances', 0) < 0: - #raise PermissionDenied("Host Count exceeds available instances") - raise PermissionDenied("license range of %s instances has been exceeded" % validation_info.get('available_instances', 0)) + + free_instances = validation_info.get('free_instances', 0) + available_instances = validation_info.get('available_instances', 0) + if add_host and free_instances == 0: + raise PermissionDenied("license count of %s instances has been reached" % available_instances) + elif add_host and free_instances < 0: + raise PermissionDenied("license count of %s instances has been exceeded" % available_instances) + elif not add_host and free_instances < 0: + raise PermissionDenied("host count exceeds available instances") + class UserAccess(BaseAccess): ''' @@ -382,7 +389,7 @@ class HostAccess(BaseAccess): return False # Check to see if we have enough licenses - self.check_license() + self.check_license(add_host=True) return True def can_change(self, obj, data):