adhdtech / drp Goto Github PK
View Code? Open in Web Editor NEWDRP - A websocket subprotocol for declaring and consuming resources
License: ISC License
DRP - A websocket subprotocol for declaring and consuming resources
License: ISC License
Broken during class merge; resolution is dependent on the previous command relay issue.
The test client hasn't been updated since the node class merge. Need to update.
Create a VDM applet that displays the DRP topology
User authentication is currently supported by the VDM module (Basic Auth), but not directly in WebSockets Consumer connections. Need to add support for this.
Add a function to the DRP_Node class that will give users a way to test connectivity to target services.
Found that if a non-listening node connects to listening node and has to re-connect, it will not do so because the listening node is still present in the non-listening node's NodeEndpoints hash.
The listening node will send a callback request via the registry, but the non-listening node will decline to make the attempt because it think's it's already connected.
FIX 1 - Update the DRP_NodeClient.CloseHandler function to remove the stale entry from the NodeObj.NodeEndpoints hash.
FIX 2- Update the DRP_Node.ConnectToNode function so that when it receives what it thinks is a duplicate back request, it checks to see if it is indeed has or is in the process of making a connection.
Stream unsubscribe function not working for Consumer clients. First noticed after the most recent restructuring.
Need to see if this affects Node clients as well.
Broke stream subscription with the latest major update.
Need to make the DRP Service visible via PSDrive on each Node. The DRP service should never be advertised by any Node since it's present by default on all Nodes.
Example:
PS C:\Temp> gi drp:\local\Services\DRP\ClientCmds\getTopology > drpTopology.json
This should NOT work:
PS C:\Temp> gi drp:\local\Mesh\Services\DRP\ClientCmds\getTopology > drpTopology.json
The VDM command testing was doing a pathCmd listing on \Services to get the service names and command list. This was broken due to a pair of changes:
Need to either:
Update connection logic so that non-Registry Nodes can join the mesh by specifying the domain FQDN (for SRV lookup) instead of a static registry endpoint.
When a Consumer makes a service request, the ConsumerEndpoint's AuthInfo object should be attached to the request by default. The target service can perform authorization based on this.
Last update caused PS Drive to stop working. Calls return immediate response without data.
Registries that did not receive a message from the source are re-broadcasting to other registries.
The DRP functions getDeclarations and getRegistry do the same thing. Need to replace all the getDeclaration entries with getRegistry.
If a Provider receives multiple back requests before the first one is complete, it will attempt multiple. Need to update so that if a Provider is currently attempting a back request to a Broker, it will not attempt another.
When a Node becomes disconnected from a Registry host, it should not automatically purge the records learned from that host. Instead it should do the following.
Add functionality that will allow Registry nodes to redirect non-Registry nodes to local zone Registry nodes.
Adjust the DRP_RouteHandler so that instead of being a DRP_Endpoint itself, it creates a DRP_Endpoint for each wsConn and attaches the drpEndpoint attribute to each wsConn.
This way the drpEndpoint can be updated to expose different sets of commands to different endpoints.
Add sample package.yaml and activation.json files for building on Cisco IOx.
Node and Consumer endpoints do not need to have the same methods available for execution. Consumers do not need to be able to send certain command that Nodes send to each other.
Allow nodes to be grouped by zones. Advertisements and calls should be able to be prioritized or restricted by zones.
Currently, if service A relies on service B and the latter isn't available, service A will simply terminate.
Need to add functionality so services can declare their dependencies and, in the absence or loss of dependencies, will enter a pending state. Once the requirements are fulfilled, the service will go ready.
Currently, the VerifyConsumerConnection function returns a wsConn. Need to update this to return a DRP_Endpoint object as with the VerifyNodeConnection function.
When a VDM client is disconnected from a broker, it will automatically reconnect but not automatically subscribe to the streams it had on disconnect. This should be corrected.
If a node connects to a Broker without the Registry role, it's effectively a dead node. The Broker accepts the registration but it doesn't get relayed to the registry.
Options:
Add commands to allow agents to authenticate via DRP. Developers should be able to route requests to their preferred authentication/authorization mechanism on the backend. LDAP, SQL, REST, etc.
If a broker is cycled, consumers seem to be getting an extra copy of streaming data they've subscribed to.
Need to update demo scripts to accept environment variables for bindings and URL advertisement.
When a remote provider disconnects from the public test site, it's not removed from the broker
Expose registry update events via topic
Broke service definition gathering with the latest major update.
Add command relay support using new base parameter in cmd object
First observed on a non-listening provider. A consumer with a global sub through a broker is receiving messages, but the SentMessages value on the topic remains at 0. Also checked topics on the broker and registry node. None seem to incrementing.
Nodes should have the option to either specify an Authentication source (as it is currently) or leave it empty and allow any Authentication source in the mesh to be used. There will be other use cases for this as well (logging).
Traffic between non-listening Provider nodes is failing. Need to add logic to ServiceCommand to proxy requests through a Broker.
Need a way to pull the current DRP topology. Add a getTopology function to the Node object.
Add debug flag to DRP_Node class to enable output for topology updates, etc
When multiple Consumers subscribe to a topic through a Broker, multiple streams are established from the Broker to the Provider. This should be updated so that the Broker only subscribes to the Provider once.
Previously, only registry clients would retry on disconnect. Now all node clients will retry on disconnect. This should be configurable.
Need to require user/pass or token for REST requests. Like the VDM, these should be authenticated using the Broker Node's Authenticate function.
Need to implement a function that will periodically crawl the mesh and check for stale Node & Service entries.
Topic subscription not working after drpNode class merge
Currently the mesh only supports a single registry instance and each node must supply that registry's full URL to connect to it. An option needs to be added so that nodes can be given a domain name and do a DNS SRV lookup (similar to Active Directory domain controllers). Registry nodes will use this to form a full mesh; all other nodes should connect to the nearest registry node.
Initially, the nearest registry node will be found by pinging all registry nodes. Whichever one yields the lowest average response time after a few pings will be selected. Maybe apply the same logic to service selection. Will come up with something more elegant later.
When a consumer sends a pathCmd to a Broker that requires a call to a Provider, the call to the Provider is failing. Due to recent class merge.
Need to update the TopologyTracker's GetRegistry function to allow the retrieval of all services records for a given host. This is needed to display each Node's services in the Topology Viewer, including those scoped "local".
Create sample service that can both authenticate users against an LDAP service or approve tokens.
After restarting a streaming Provider, Consumers stopped receiving traffic. The Broker did not immediately request a connection from the Provider.
It's a serious mess. Need to dedupe function assignments on the DRP_NodeClient and DRP_ServerRoute classes.
Add option for a mesh security token to be provided when nodes connect to the mesh. Roughly analogous to an SNMP community string. Hate to even call this security, but it's better than nothing for now. Will add a more secure option later.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.