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

Calm Hub Initial Prototype #543

Open
jpgough-ms opened this issue Oct 31, 2024 · 1 comment
Open

Calm Hub Initial Prototype #543

jpgough-ms opened this issue Oct 31, 2024 · 1 comment
Assignees

Comments

@jpgough-ms
Copy link
Member

jpgough-ms commented Oct 31, 2024

Feature Request

Initial prototype of CALM Hub, a tool that will enable the local and remote store of the various schemas and artefacts associates with CALM.

API Design

To give an example of what will be in CALM Hub, I plan to implement the following API in the initial version. This will be backed by MongoDB, to persist the information:

Schemas

GET calm/schema/ - list all versions of the CALM schema
GET calm/schema/{version}/meta - list all resources of the schema
GET calm/schema/{version}/meta/{resource}

Namespaces

GET calm/namespaces/ - list all namespaces

Patterns

GET calm/namespaces/{namespace}/patterns - return all patterns in the namespace
POST calm/namespaces/{namespace}/patterns - create a new pattern in the namespace
GET calm/namespaces/{namespace}/patterns/{pattern-id}/versions/ - The list of versions
GET calm/namespaces/{namespace}/patterns/{pattern-id}/versions/{version} - return the actual pattern
POST/PUT calm/namespaces/{namespace}/patterns/{pattern-id}/versions/{version} - create a new pattern, PUT will not be supported where config mode is set to write once

Architectures

GET calm/namespaces/{namespace}/instances - return all instances of architectures
POST calm/namespaces/{namespace}/instances - create a new architecture
GET calm/namespaces/{namespace}/instances/{instance-id}/versions - return all the versions of an architecture
POST/PUT calm/namespaces/{namespace}/instances/{instance-id}/versions - create a new architecture with a specific version, PUT will not be supported where config mode set to write once

Architecture

The CALM Hub will be a Java based implementation of a REST API (specified above) and a MongoDB back end. For this first issue, the CALM Hub will be stand alone, however as we build incremental features it will be possible to chain CALM Hubs together.

We will run a central FINOS instance, companies may run their own, architects may run their own (for example). The CLI will be extended to support interacting with the CALM Hub.

The Java application will be packaged as a Docker image. This docker image will also be shipped with a UI, that will not be functional outside of a demo that there is one there in the first release.

Features Out of Scope for First Release

We can't build everything at once and future issues will be raised to capture these features based on input. However things that we would want to add beyond the above:

  • Support for flows
  • Support for controls
  • Chaining mode
  • Security for locking down to CLI interaction and for chaining instances together
  • A full UI for exploring what is in a CALM Hub
  • A place to store ADRs in a given namespace
  • The ability to promote architectures to another hub, using the CLI
@Thels
Copy link
Member

Thels commented Nov 26, 2024

I'd be interested in follow-up architecture discussions around this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants