sdcio / docs

Documentation for Schema Driven Configuration
Apache License 2.0
18 stars 4 forks source link

Schema Driven Configuration (SDCIO)

The paradigm of schema-driven API approaches is gaining increasing popularity as it facilitates programmatic interaction with systems by both machines and humans. While OpenAPI schema stands out as a widely embraced system, there are other notable schema approaches like YANG, among others. This project endeavors to empower users with a declarative and idempotent method for seamless interaction with API systems, providing a robust foundation for effective system configuration."

Architecture

The project consists of 4 components:

pic

Schema-server

The schema server component is a versatile repository for schemas from diverse vendors and versions. It features a GRPC API for seamless schema querying and dynamic management, allowing users to load and unload schemas in real time. The integration of a CLI enhances user interaction, providing a familiar command-line interface. Operating in a stateless architecture, it offers scalability, while optional schema persistence caters to users requiring persistent storage. In essence, the schema server combines flexibility, efficiency, and user-friendliness for effective schema management in dynamic API environments. Schema-server is developer in the schema-server repository.

Data-server

The data-server component serves as a versatile intermediary, connecting the config-server, schema-server, cache, and xNF/Device in a stateless design for scalability. It features a North-bound API for both imperative and declarative interactions and supports various South-bound protocols. With dedicated DataStores per target, flexible synchronization options, candidate-based interactions, and the ability to connect multiple data servers per device, it provides a resilient and adaptable foundation for managing and synchronizing data in dynamic system environments. The Data-server is developed in the data-server repository.

Cache

The cache component manages multiple datastores, including Config, State, and Intended, along with Intent metadata. It offers the option for persistent data storage, complemented by a GRPC API for seamless interaction. Additionally, the cache component provides a derived Command Line Interface (CLI) for user-friendly access and configuration. The Cache is developed in the cache repository.

Config-server

The config-server is a Kubernetes-based Operator and comprises of several controllers:

Additional repositories

yang-parser

A YANG parser.

docs

Home of the code of the project homepage.

sdctl

sdc-protos

Features

License and governance

Code in the SDCIO public repositories licensed with Apache License 2.0. At the moment the project is governed by the benevolent dictatorship of @henderiw @steiler @karimra and @hansthienpondt On the long run we plan to move to a meritocracy based governance model.

Presentations

Presentations about SDCIO:

Join us

Have questions, ideas, bug reports or just want to chat? Come join our discord server.