Git Product home page Git Product logo

charm-relation-interfaces's Introduction

Charm Relation Interfaces

A catalogue of opinionated and standardized interface specifications for charmed operator relations.

Mattermost badge

Purpose

The purpose of the repository is to outline the behavior and requirements for key interface names, ensuring that charms claiming to implement a certain interface actually are capable of being integrated with each other.

Contributing

To contribute a new interface specification, open a pull request containing:

  • a new directory: /interfaces/{your-interface-name}. In it, there should be:
    • a README.md explaining the purpose of the interface and the protocol
    • a schema.py file containing pydantic models that specify the app and unit databag model for either side of the interface.
    • charms.yaml file consisting of a list of any providers and requirers known to adhere to the specification.
    • a interface_tests directory in which you can put python files containing interface tests. Read more about interface tests here
  • under docs/, the json schemas generated from the pydantic schemas. You can use command tox -e build-json-schemas to generate them automatically. Do not edit those files manually.
  • in this repo's root README.md, add the interface to the table, if applicable.

To quickly get started, see the template interface for a template of what to include and how it should be structured.

Interfaces

Category Interface Status
Data mysql_client Status: Draft
postgresql_client Status: Draft
mongodb_client Status: Draft
kafka_client Status: Draft
opensearch_client Status: Draft
database_backup Status: Draft
Identity oauth Status: Draft
auth_proxy Status: Draft
openfga Status: Live
saml Status: Live
Observability grafana_auth Status: Draft
prometheus_remote_write Status: Live
prometheus_scrape Status: Live
tracing Status: Draft
Networking ingress/v1 Status: Live
ingress/v2 Status: Live
ingress_per_unit Status: Live
nginx_route Status: Draft
ip_router Status: Draft
Security certificate_transfer Status: Draft
tls_certificates/v0 Status: Live
tls_certificates/v1 Status: Draft
vault-kv Status: Draft
Metadata k8s-service Status: Draft
Storage s3 Status: Draft

Project-internal Interfaces

Charmed Kubeflow

Category Interface Status
Metadata k8s-service Status: Draft
Metadata kubeflow-dashboard-sidebar Status: Live

Identity

Category Interface Status
Identity hydra_endpoints Status: Draft
kratos_external_idp Status: Draft
kratos_endpoints Status: Draft
login_ui_endpoints Status: Draft
forward_auth Status: Draft

Observability

Category Interface Status
Observability cos_agent Status: Draft

Telco

Category Interface Status
Charmed 5G fiveg_gnb_identity Status: Draft
fiveg_nrf Status: Draft
fiveg_n2 Status: Draft
fiveg_n3 Status: Draft
fiveg_n4 Status: Draft
sdcore_management Status: Draft

For a more detailed explanation of statuses and how they should be used, see the legend.

Relation interface testers

In order to automatically validate whether a charm satisfies a given relation interface, the relation interface maintainer(s) need to write one or more relation interface tests. A relation interface test is a scenario-based test case which checks that, given an intitial context, when a relation event is triggered, the charm will do what the interface specifies. For example, most interface testers will check that, on relation changed, the charm will write a certain value into its (app/unit) databag and that that value matches a certain (Pydantic) schema.

See the tester documentation for more.

charm-relation-interfaces's People

Contributors

pietropasotti avatar simskij avatar abuelodelanada avatar saltiyazan avatar delgod avatar gruyaume avatar gboutry avatar weiiwang01 avatar marcoppenheimer avatar natalian98 avatar nsklikas avatar gmerold avatar shayancanonical avatar bencekov avatar lucabello avatar juditnovak avatar jnsgruk avatar nuccitheboss avatar ca-scribner avatar alesstimec avatar ghislainbourgeois avatar wrfitch avatar deusebio avatar arturo-seijas avatar carlcsaposs-canonical avatar patriciareinoso avatar mthaddon avatar sed-i avatar domfleischmann avatar javacruft avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.