-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/library readiness check #670
base: master
Are you sure you want to change the base?
Conversation
Hello @mithunbharadwaj, please update ASAB documentation, and provide an example of how the exception should be handled in the code. |
You should raise this error in the cases, where you provide "API" - when a microservice is using a library. However, if there are methods used by the library itself, you should not raise the error and let it be unhadled. You need to solve this situation inside asab. |
@@ -378,6 +390,9 @@ async def _list(self, path, providers): | |||
async def _read_disabled(self): | |||
# `.disabled.yaml` is read from the first configured library | |||
# It is applied on all libraries in the configuration. | |||
if not self.is_ready(): | |||
raise LibraryNotReadyError("Library is not ready yet.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just ran the example you provided as it is and got an error inside asab after start:
eliska@eliska-TUXEDO:~/teskalabs/asab$ python examples/library.py
20-Mar-2025 16:45:10.443923 NOTICE asab.application is ready.
20-Mar-2025 16:45:11.445390 ERROR asab.task Error 'Library is not ready yet.' during task:
Traceback (most recent call last):
File "/home/eliska/teskalabs/asab/asab/task.py", line 161, in main
await task
File "/home/eliska/teskalabs/asab/asab/library/providers/abc.py", line 47, in _set_ready
await self.Library._set_ready(self)
File "/home/eliska/teskalabs/asab/asab/library/service.py", line 168, in _set_ready
await self._read_disabled()
File "/home/eliska/teskalabs/asab/asab/library/service.py", line 394, in _read_disabled
raise LibraryNotReadyError("Library is not ready yet.")
asab.exceptions.LibraryNotReadyError: Library is not ready yet.
20-Mar-2025 16:45:12.306997 NOTICE asab.library.service [sd name="LibraryService"] is ready.
# Library
* LibraryItem(name='/CONTRIBUTING.md', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=1977)
- content: 1977 bytes
* LibraryItem(name='/Dashboards/', type='dir', layers=[0], providers=[<asab.library.providers.filesystem.FileSystemLibraryProvider object at 0x71cbc5fde0d0>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/Dockerfile', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=653)
- !!! Cannot open item /Dockerfile: Invalid Library path '/Dockerfile': Item path must end with an extension (e.g. '/Templates/item.json')
* LibraryItem(name='/LICENSE', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=1509)
- !!! Cannot open item /LICENSE: Invalid Library path '/LICENSE': Item path must end with an extension (e.g. '/Templates/item.json')
* LibraryItem(name='/README.rst', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=4859)
- content: 4859 bytes
* LibraryItem(name='/asab-manifest.py', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=2693)
- content: 2693 bytes
* LibraryItem(name='/asab/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/docs.Dockerfile', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=238)
- content: 238 bytes
* LibraryItem(name='/docs/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/etc/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/examples/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/mkdocs.yml', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=7190)
- content: 7190 bytes
* LibraryItem(name='/old_docs/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
* LibraryItem(name='/setup.cfg', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=255)
- content: 255 bytes
* LibraryItem(name='/setup.py', type='item', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=3234)
- content: 3234 bytes
* LibraryItem(name='/test.json', type='item', layers=[0], providers=[<asab.library.providers.filesystem.FileSystemLibraryProvider object at 0x71cbc5fde0d0>], disabled=False, override=0, target='global', size=17)
- content: 17 bytes
* LibraryItem(name='/test/', type='dir', layers=[1], providers=[<asab.library.providers.git.GitLibraryProvider object at 0x71cbc5ae4410>], disabled=False, override=0, target='global', size=None)
===
20-Mar-2025 16:45:12.317788 NOTICE asab.application [sd exit_code="0"] is exiting ...
No description provided.