GithubHelp home page GithubHelp logo

j-mai / mimisbrunnr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xmidt-org/mimisbrunnr

0.0 1.0 0.0 124 KB

Provides device specific event delivery. Part of Codex.

License: Apache License 2.0

Go 100.00%

mimisbrunnr's Introduction

Mimisbrunnr

(Pronounced "mims-brun-er")

Build Status codecov.io Code Climate Issue Count Go Report Card Apache V2 License GitHub release GoDoc Quality Gate Status

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

This project and everyone participating in it are governed by the XMiDT 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/<id> - updates an existing norn, as long as the client owns it
  • DELETE on /norns/<id> - 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/<id> - 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
  • 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.

mimisbrunnr's People

Contributors

gargidb avatar kristinapathak avatar schmidtw avatar

Watchers

 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.