Skip to content

Commit

Permalink
V3 proposal (#231)
Browse files Browse the repository at this point in the history
  • Loading branch information
edaniszewski committed Feb 4, 2019
1 parent 3391411 commit 30ac38a
Show file tree
Hide file tree
Showing 23 changed files with 4,204 additions and 0 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ docs
**/*.md
**/*.rst
NOTICE
proposals/

# Scripts
bin/ci
Expand Down
44 changes: 44 additions & 0 deletions proposals/v3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Synse v3 Proposals
This directory contains proposals and specifications for Synse v3.

## Overview
Synse v3 is the next iteration of the Synse platform that will bring simplifications
and generalizations to the platform, doing away with design patterns from older versions
that are no longer needed. These changes should make the HTTP API more intuitive, make
plugin development simpler, expand the platform's capabilities, and allow for better
visibility and monitoring of the services themselves.

The documents in this directory focus on particular aspects of Synse v3 -- all of
them together are considered the proposal/spec for Synse v3.

### Primary Goals
- Replace the *rack/board/device* routing hierarchy with a tag-based routing system
- Maintain having deterministic device IDs with the IDs being globally unique (instead of only
being unique to the rack/board)
- Expand API capabilities
- Provide better support for container management/monitoring
- Improve performance, where possible
- Maintain high test coverage

## Table of Contents
0. **[Device Tags](tags.md)** - tag-based routing for Synse devices
0. **[Device IDs](ids.md)** - globally unique device ID generation
0. **[API](api.md)** - the Synse v3 HTTP API
0. **[Reads](reads.md)** - updates to device read behavior in Synse
0. **[Writes](writes.md)** - updates to device write behavior in Synse
0. **[Health Check](health.md)** - implementing service health checks
0. **[Synse Server](server.md)** - general updates and changes to Synse Server
0. **[Synse SDK](sdk.md)** - general updates and changes to Synse SDK
0. **[Synse CLI](cli.md)** - updates and new features for the Synse CLI
0. **[GRPC API](grpc.md)** - updates to the GRPC API for communicating with plugins
0. **[Monitoring & Metrics](monitoring.md)** - exposing Synse server metrics
0. **[Third Party Usage](third-party.md)** - goals and requirements for direct third party usage
0. **[Security](security.md)** - updates and enhancements to security capabilities
0. **[Scaffolding](scaffolding.md)** - project tooling and scaffolding
0. **[Tests](tests.md)** - updates to Synse tests and testing methodologies
0. **[API Clients](api-clients.md)** - updates to the various Synse HTTP API clients
0. **[Blackbox](blackbox.md)** - updates to the internal Blackbox project
0. **[Versioning](versioning.md)** - project versioning and component comaptibility

## Appendix
0. [Appendix A](appendix-a.md): Configuration Examples
36 changes: 36 additions & 0 deletions proposals/v3/api-clients.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# API Clients
## Summary
Existing API clients will need to be updated for Synse v3.

## High Level Work Items
- Update the API client libraries for the Synse HTTP API
- python: (https://github.com/vapor-ware/synse-client-python)
- golang: (https://github.com/vapor-ware/synse-client-go)
- Update the API client libraries for the [Blackbox](blackbox.md) HTTP API
- python: (https://github.com/vapor-ware/blackbox-client-python)

## Proposal
The existing API clients need to be updated to comply with the Synse v3 [HTTP API spec](api.md).
These clients are either actively used in other projects or will be actively used.

There may be work items for these clients which fall out of discussions on
[third party access](third-party.md).

Support for WebSockets as the transport layer will be added to [Synse Server](server.md#websocket-support),
so API clients will need to be able to support both HTTP and WebSocket transport.

### Existing Clients
Below is a list of existing clients which will need to be updated.

#### HTTP
- [Synse Python Client](https://github.com/vapor-ware/synse-client-python)
- Auto Fan (internal)
- Edge Monitor (internal)
- [Synse Go Client](https://github.com/vapor-ware/synse-client-go/)
- Blackbox (internal)
- [Synse CLI](https://github.com/vapor-ware/synse-cli)

#### GRPC
- [Synse GRPC](https://github.com/vapor-ware/synse-server-grpc)
- [Synse Server](https://github.com/vapor-ware/synse-server)
- [Synse SDK](https://github.com/vapor-ware/synse-sdk) (plugins)

0 comments on commit 30ac38a

Please sign in to comment.