Skip to content

Commit

Permalink
cleaner ready status checking
Browse files Browse the repository at this point in the history
  • Loading branch information
byewokko committed Jan 14, 2025
1 parent 3b97b31 commit e1241fc
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
2 changes: 1 addition & 1 deletion asab/web/tenant/providers/abc.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ def is_ready(self) -> bool:

def _set_ready(self, ready: bool = True):
self._IsReady = ready
self.TenantService.set_ready(self)
self.TenantService.check_ready()
32 changes: 21 additions & 11 deletions asab/web/tenant/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def __init__(self, app, service_name: str = "asab.TenantService", auto_install_w
raise RuntimeError("Please initialize TenantService before AuthService.")

self.Providers: typing.List[TenantProviderABC] = [] # Must be a list to be deterministic
self._IsReady = False
self._prepare_providers()

if auto_install_web_wrapper:
Expand Down Expand Up @@ -163,29 +164,38 @@ def is_ready(self) -> bool:
Returns:
bool: Are all tenant providers ready?
"""
for provider in self.Providers:
if not provider.is_ready():
return False
return True
self.check_ready()
return self._IsReady


def set_ready(self, provider: TenantProviderABC):
def check_ready(self):
"""
Update tenant service ready status.
Args:
provider: Tenant provider that updated its ready status.
Check and update tenant service ready status.
"""
if len(self.Providers) == 0:
return

if self.is_ready():
# Check if all providers are ready
is_ready_now = False
for provider in self.Providers:
if not provider.is_ready():
break
else:
is_ready_now = True

if self._IsReady == is_ready_now:
return

# Ready status changed
if is_ready_now:
L.log(LOG_NOTICE, "is ready.")
self.App.PubSub.publish("Tenants.ready!", self)
elif not provider.is_ready():
else:
L.log(LOG_NOTICE, "is NOT ready.")
self.App.PubSub.publish("Tenants.not_ready!", self)

self._IsReady = is_ready_now


def get_web_wrapper_position(self, web_container) -> typing.Optional[int]:
"""
Expand Down

0 comments on commit e1241fc

Please sign in to comment.