-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[meta.yaml / Che plug-ins]: Add dependencies section #15376
Copy link
Copy link
Open
Labels
area/plugin-registrykind/taskInternal things, technical debt, and to-do tasks to be performed.Internal things, technical debt, and to-do tasks to be performed.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.severity/P2Has a minor but important impact to the usage or development of the system.Has a minor but important impact to the usage or development of the system.
Metadata
Metadata
Assignees
Labels
area/plugin-registrykind/taskInternal things, technical debt, and to-do tasks to be performed.Internal things, technical debt, and to-do tasks to be performed.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.severity/P2Has a minor but important impact to the usage or development of the system.Has a minor but important impact to the usage or development of the system.
Is your task related to a problem? Please describe.
We have some runtime dependencies for plug-ins.
For example
VS Code java debugVS Code extension is depending onVS Code java(we have other examples)
So we should add that information in meta.yaml, so if user is selecting
VS Code java debugit would notify thatVS Code javawill be selected as well.Also, at runtime, it can check if the configuration is consistent and prevent to start a workspace or remove failed plug-ins.
Describe the solution you'd like
Add
dependenciessection in meta.yaml, where we can depend on one/several other Che plug-ins.or
Additional context
From UX, if a che plug-in is selected with dependencies, it should show that new plug-ins will come with it.
if a plug-in is depending on another plug-in and is not defining any container, it will use the dependency container.
But if a container is specified, the dependency plug-in will use this pre-defined container.
example:
vscode-javadefinesjava11image containervscode-quarkusdepends onvscode-javaand specify a spec/container image `quarkus``then, there is a graph
quarkus --> javaand then,vscode-quarkus.vsixandvscode-java.vsixwill use the same container which will be usingquarkusimageSo, there are graphs, and the root node image should always be used (instead of the leaf container)
If there are multiple graphs, some options:
each root node will have its own container
for example let say
quarkus --> javaandspring-boot --> java, if quarkus is definingquarkus-imageandspring-bootis definingspringboot-image, two containers will be deployed, one withquarkus-imageand with both java and spring vsix. The same withspringboot-imagewith bothjava and spring vsixanother option: there is an error. We can either use
quarkusorspring bootplug-ins but not the same.Note that due to merge of containers with the same image, if
quarkusis usingjava11image andspring-bootis also usingjava11image, despite that there are two graphs, as the image definition is the same, both quarkus, java, spring-boot vsix will be added in the same container usingjava11imagerelated to #15272