#4598 backend cannot use other backends during startup
Opened 9 years ago by edewata. Modified 7 years ago

Some backends might need to use the services provided by other backends during initialization/server startup. For example, the KRA backend might need to use the ldap2 backend to retrieve the KRA hostname stored in LDAP. However, this is currently not possible because the API object is not finalized yet at that point, so the api.Backend.* is not available to use.

Possible solutions:
1. Add a support for backend initialization ordering and replace the API finalization mechanism to allow incremental backend addition. This will allow a backend to use another backend that's already initialized.
2. Add a Backend.initialize() life cycle (in addition to the Backend.init() constructor) such that the backend can perform the proper initialization steps using the finalized API object.

The preferred solution is #2.

The current workarounds are:
1. Bypass/duplicate the service provided by other backends. For example, the KRA backend might be able to use ipapython.ipaldap.IPAdmin instead of api.Backend.ldap2.
2. Delay the initialization steps to the first operation initiated by the client and cache the result. This may significantly slow down the initial response time.


Valid bug. Not entirely related to 4.2 installer refactoring, but we can make it a stretch goal.

Processing 4.2 backlog. This ticket was found as something that is not a priority for the nearest releases.

But as usual, please feel free to discuss your use cases or contribute patches, to make that happen sooner!

Metadata Update from @edewata:
- Issue assigned to someone
- Issue set to the milestone: Future Releases

7 years ago

Login to comment on this ticket.

Metadata