Use registry get_defaults() to return built-in hosting services.
Review Request #12209 — Created March 24, 2022 and submitted
Entry points are fantastic, and they're a great way for us to allow
third parties to integrate their own plugins with Review Board.
Unfortunately, if there's a VersionConflict present in the install, no
entry points will load, even if things will otherwise work. The result
of this is that none of our built-in services will work properly.This change moves our built-ins directly into the registry's
get_defaults()
method, rather than using entry points. Any third-party
services will still be loaded from entry points afterwards.
Started with a fresh database and virtualenv. Saw that built-in services
were available in the "Add Repository" form.
Summary | ID |
---|---|
597170903e6fbda892905bc6485d03846152d808 |
Description | From | Last Updated |
---|---|---|
Most of our get_defaults() just returns a list (in fact, that's the default in Registry itself). I don't think we … |
chipx86 | |
Aside from the above, we can simplify this considerably with: return [ getattr(import_module('reviewboard.hostingsvcs.%s' % _module), _service_cls_name) for _module, _service_cls_name in … |
chipx86 |
-
-
Most of our
get_defaults()
just returns a list (in fact, that's the default inRegistry
itself). I don't think we need toyield
anything, just return a full list of the items. The caller will always iterate through every one of them anyway. -
Aside from the above, we can simplify this considerably with:
return [ getattr(import_module('reviewboard.hostingsvcs.%s' % _module), _service_cls_name) for _module, _service_cls_name in ( ('assembla', 'Assembla'), ('beanstalk', 'Beanstalk'), ... ) ]
Pretty similar to how we built up entrypoints.
- Commits:
-
Summary ID a2f260f99afaaa88c82938da04ca1dbbca21aac2 597170903e6fbda892905bc6485d03846152d808 - Diff:
-
Revision 2 (+124 -52)