Skip to content

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

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 Node is introduced, it needs to be available in the service_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:

Skills required/preferred

  • Java, especially Java 21 (or later)

Project size

350 hours

Possible mentors:

Oliver Kopp

Rating

Medium (because the code of Winery might be hard to understand - and not "hard", because locally debugging is possible)

Edited by Oliver Kopp