GRACC Transition Visualization
The OSG is in the progress of transitioning from an older ElasticSearch (ES) cluster to a new version. Part of this process is reindexing (copying) data fro...
The web interface shows the connected clients and servers. The web interface also connects to the web server with an persistent connection to update the list of connected clients.
Client communcation is handled through a Socket.IO connection. Socket.IO is a library that will at create a bi-directional event based communcation between the client and the server. The communcation is over websockets if possible, but will fall back to HTTP long polling. A good discussion of long polling vs. websockets is available from Ably. The Socket.IO connection is established between each worker, server, and web client and the web server.
The difficult part is authenticating the Socket.IO connections. We discuss this in the security session.
Securing the commands and web interface is required since the web interface is sending commands to the connected worker nodes and servers.
The Socket.IO connection is secured with a shared key. The communication flow for a non-web client (worker/server):
client_idthat will be used to authenticate the Socket.IO connection. The registration is valid for 30 seconds before the
client_idis no longer valid.
client_idin the request arguments.
The web interface is secured with an OAuth login from GitHub. There is a whitelist of allowed GitHub users that can access the interface.
The flow for web clients connecting with Socket.IO is much easier since they are already authenticated with OAuth from GitHub.
Storage of the tests and results are still being designed. Most likely, the tests and results will be stored in a database such as Postgres.
Heroku provides a great playing ground to prototype these web applications. I hope that I can find an alternative eventually that will run on OSG’s production kubernetes installation.
The web application is still be developed, and there is much to be done before it can be fully utilized for the scale validation. But, many of the difficult components are completed, including the communcation and eventing, secure web interface, and clients.
The GitHub repos are available at: