Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #2576
The PR adds support for server-side dstack plugins. Plugins are enabled via server/config.yml:
To implement a plugin, plugin authors create a Python package with a
dstack.plugins.Plugin
subclass and export it as a package entrypoint:Currently, the only plugins functionality is
ApplyPolicy
that change apply specs (run/fleet/volume/gateway).Notes:
ApplyPolicy.on_apply()
will usually be called twice: on getting a plan and on apply. So ifon_apply()
is non-deterministic, the spec displayed in the plan can be different from the actual applied spec. Discussed with @peterschmidt85 that this is a desired behavior as otherwise plugin authors would need to double-check the modified spec.A plugin guide is TBD.