OASIS TOSCA Language Server
Description
Eclipse Winery is a web-based environment to graphically model OASIS TOSCA topologies and plans managing these topologies. OASIS TOSCA is a vendor-neutral initiative to describe application topologies and enable them to be deployed on different clouds (e.g., AWS, Google Cloud, Azure). [Video]
Roughly, Winery consists of following components:
- Topology Modeler (Angular-based) - here, the application topology is modeled (boxes and arrows)
- Type creation and management component (define the available box and arrow types)
- Backend (JAX-RS-based, Jersey)
- File-based storage (local and "remote" using git)
OASIS TOSCA moves forward to version 2.0 of the standard.
Currently, Winery purely focuses on providing a graphical editing environment.
In this project, Winery should be enhanced to be a LSP provider for OASIS TOSCA YAML files.
Related work exists. They are either not maintained or do not cover dynamic type additions.
Links to Eclipse Project
- Eclipse Project: https://www.eclipse.org/winery
- Development repository (including issue tracker): https://github.com/eclipse/winery/
- Testing repository XML: https://github.com/winery/test-repository
- Testing repository YAML: https://github.com/winery/test-repository-yaml
Expected outcomes
- LSP server supporting the latest OASIS TOSCA 2.0, Committee Specification Draft
- LSP server being aware when types are introduced (e.g., if the type
Nodeis introduced, it needs to be available in theservice_template. - LSP server being aware of multiple files
- Demonstration using an IDE supporting LSP (Eclipse Theia, VS.Code, Eclipse IDE, ...)
- Clean code
It would be great if the project was implement ended in modern Java (21 or later). In case it is more feasible to implement a new component with a new model storage, clean Kotlin, Python, or TypeScript code is acceptable.
Example:
node_types:
Node:
properties:
velocity:
type: float
service_template:
node_templates:
node:
type: Node
properties:
velocity: 10.0
At properties, the available sub fields are velocity, because they are defined at the Node.
NOT expected:
- Support of XML
- Support for TOSCA Activities - which are kind of a workflow
Skills required/preferred
- Java, especially Java 21 (or later)
Project size
350 hours
Possible mentors:
Rating
Medium (because the code of Winery might be hard to understand - and not "hard", because locally debugging is possible)