Coder Social home page Coder Social logo

kahu's Introduction

Kahu

Replica management and monitoring service.

About

Kahu is a service that manages replica configurations for my research. Each replica has a small client that uses the Kahu API to report its status as well as receive configuration updates. The Kahu web interface is used to monitor the replicas and push configuration changes for various experiments or applications.

Resources

kahu's People

Contributors

bbengfort avatar

Stargazers

 avatar

Watchers

 avatar  avatar

kahu's Issues

inactive hosts can't send heartbeats

Right now the machine auth checks to make sure the replica is active; but this prevents inactive hosts from sending heartbeat messages. Instead the following should happen:

  1. Create ActiveMachine vs Machine permission classes
  2. Allow all machines regardless of active or not post to heartbeat
  3. Allow only active machines to post to latencies
  4. In neighbors, if the machine is inactive, then send back no targets

Implement user/machine token auth + permissions

Right now we're using X-API-KEY headers in kind of a janky way. Instead, we should subclass TokenAuthentication and provide for both user and machine user authentication.

Instead of doing "validate machine user" --- we should create a permissions class to define machine vs. user permissions to the API.

Reset latency

Add ability to reset the latency between a source and a target as follows:

  1. Archive the current latency distribution (either in new table or with an archived field)
  2. Reset the current latency distribution to all zeros

Other requirements:

  • Create an API endpoint on the LatencyViewSet to reset on request
  • Reset in an HTML view?

fetch tokens

Create fetch tokens via username and password method for geonet to update instances.

geonet tests

Write tests for the geonet app.

  1. Test the boto api by mocking boto
  2. Test deserialization of describe instances responses
  3. model tests and cacheing (only one model per replica, etc)
  4. test apply and apply to regions
  5. views tests (refresh is called on post, modified timestamps, etc).

simulator

Create a multiprocessing script that can simulate api requests from replicas for testing purposes.

AWS instances listing

Create a status mechanism to see what instances are running or not running on AWS.

Add a "promote" button to store the instance as a replica.

This will be one point of integration with GeoNet

replicas tests

Implement tests:

  1. Geoip tests (mock maxmind api)
  2. location is only looked up on no ip or when ip changed
  3. concurrent latency update tests
  4. recompute latency distribution tests
  5. health timing tests
  6. signals tests
  7. views tests (login required, machine required, query string ordering)
  8. only admins can fetch tokens from /api/replicas/tokens/
  9. models tests
  10. authentication tests
  11. permissions tests on api (user, machine, active machine)
  12. utils tests
  13. only admins can create or update replicas from the api
  14. on api: replica list, only active replicas are displayed

Ping latency bar chart

Instead of a table listing ping latencies, instead add a bar chart that shows average latency to each location.

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.