Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xmidt-org/mimisbrunnr
Provides device specific event delivery. Part of Codex.
https://github.com/xmidt-org/mimisbrunnr
comcast-codex go golang xmidt
Last synced: about 2 months ago
JSON representation
Provides device specific event delivery. Part of Codex.
- Host: GitHub
- URL: https://github.com/xmidt-org/mimisbrunnr
- Owner: xmidt-org
- License: apache-2.0
- Created: 2020-05-18T17:59:41.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T03:07:43.000Z (about 2 months ago)
- Last Synced: 2024-10-29T04:21:03.622Z (about 2 months ago)
- Topics: comcast-codex, go, golang, xmidt
- Language: Go
- Size: 197 KB
- Stars: 0
- Watchers: 14
- Forks: 1
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Mimisbrunnr
(Pronounced "mims-brun-er")
[![Build Status](https://github.com/xmidt-org/mimisbrunnr/actions/workflows/ci.yml/badge.svg)](https://github.com/xmidt-org/mimisbrunnr/actions/workflows/ci.yml)
[![Dependency Updateer](https://github.com/xmidt-org/mimisbrunnr/actions/workflows/updater.yml/badge.svg)](https://github.com/xmidt-org/mimisbrunnr/actions/workflows/updater.yml)
[![codecov.io](http://codecov.io/github/xmidt-org/mimisbrunnr/coverage.svg?branch=main)](http://codecov.io/github/xmidt-org/mimisbrunnr?branch=main)
[![Go Report Card](https://goreportcard.com/badge/github.com/xmidt-org/mimisbrunnr)](https://goreportcard.com/report/github.com/xmidt-org/mimisbrunnr)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=xmidt-org_mimisbrunnr&metric=alert_status)](https://sonarcloud.io/dashboard?id=xmidt-org_mimisbrunnr)
[![Apache V2 License](http://img.shields.io/badge/license-Apache%20V2-blue.svg)](https://github.com/xmidt-org/mimisbrunnr/blob/main/LICENSE)
[![GitHub Release](https://img.shields.io/github/release/xmidt-org/mimisbrunnr.svg)](CHANGELOG.md)## Summary
Mimisbrunnr provides device level event delivery. It registers a webhook to Caduceus. Upon receiving Caduceus events, Mismisbrunnr fans out those events to any current device registrations it has. Mismisbrunnr has an API to allow consumers to register to receive events for a specific device. This registration object is called a norn.
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Details](#details)
- [Install](#install)
- [Contributing](#contributing)## Code of Conduct
This project and everyone participating in it are governed by the [XMiDT Code Of Conduct](https://xmidt.io/code_of_conduct/).
By participating, you agree to this Code.## Details
This service is still being developed, so some details are currently unknown.
### API
- `POST` on `/norns` - creates the norn, stores it in argus, and returns norn id; if a norn with the
same destination and device id exists, it updates it as long as the client owns it)
- `PUT` on `/norns/` - updates an existing norn, as long as the client owns it
- `DELETE` on `/norns/` - deletes the norn from argus, as long as the client owns it
- `GET` on `/norns` - returns a list of norns that the client owns
- `GET` on `/norns/` - returns the norn attached to the id given, as long as the client owns it
- `POST` on `/events` - mimisbrunnr validates the event and possibly sends it to applicable norns### Norn
A consumer will request events from a particular device to be sent to a destination.
The request is called a Norn and MUST contain the following information:
- deviceID
- destination and required information to successfully send the message such as auth or access keys.
- duration for how long to listen to the event. (details of this still being discussed)
- a filter function to determine if the event should be sent. *Note: not a part of the MVP.*For the remainder of that duration, events will be delivered to the destination
specified with best effort.(aka not guaranteed)### Additional Design Decisions:
- All incoming and outgoing events must be [WRPs](https://xmidt.io/docs/wrp/overview/)
- There should be a maximum duration a norn can last, which will be configurable in the yaml.
- Destinations for the MVP will only support http and sqs
- An internal buffering system will be used, one per norn.
- No two norns will share the exact same device ID and destination.
- If the channel for the destination is full, the destinations will be notified
and message will be dropped.## Install
Add details here.
## Contributing
Refer to [CONTRIBUTING.md](CONTRIBUTING.md).