Skip to content
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

Web-based configuration changes #753

Closed
bbockelm opened this issue Feb 3, 2024 · 0 comments · Fixed by #909
Closed

Web-based configuration changes #753

bbockelm opened this issue Feb 3, 2024 · 0 comments · Fixed by #909
Assignees
Labels
critical High priority for next release enhancement New feature or request
Milestone

Comments

@bbockelm
Copy link
Collaborator

bbockelm commented Feb 3, 2024

We should allow edits of the Pelican configuration through the web UI.

Beyond the obvious browser UI changes to allow admins to edit and hit "save", the other parts of this infrastructure should be:

  1. Add a generated configuration file - clearly stating it is automatically overwritten and named accordingly - that is loaded LAST after all the existing configuration.
  2. Add a SetConfig API to set multiple variables (the backend equivalent of a "save"). When invoked, it should atomically write out a new set of generated config overrides.
  3. After the SetConfig API is invoked, we should have Pelican restart itself. A CancelWithCause should be invoked with a well-known cause. The very top level handler should inspect the cause of the cancel and, if it's a config restart, re-exec the process. To have the UI know when the settings are in effect, we should have an API that indicates the time of last start and poll for it to change.

Restarting the server is a bit ugly. However, our param subsystem isn't currently thread-safe (fixable) and we would need to review it use to see if some of the values are cached long-term (hard). The really tough aspect is XRootD, however: we'd need to track which variables are xrootd-related and be able to bounce those services.

That might be doable in the future: for now, let's simply restart.

@bbockelm bbockelm added critical High priority for next release enhancement New feature or request labels Feb 3, 2024
@bbockelm bbockelm added this to the v7.6.0 milestone Feb 3, 2024
@CannonLock CannonLock linked a pull request Mar 7, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
critical High priority for next release enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants