symmetry
Cluster management tool for the MC2.
Build
To create a virtual environment and install the requirements, run (by default it uses python3.7, you can change that
in the Makefile variable VENV_BIN)
make venv
Run Symmetry components manually
Prerequisites
Make sure the virtualenv is activated
source .venv/bin/activate
Symmetry publishes and reads telemetry data to and from redis, so you need a running redis instance first:
redis-server
Start the telemetry deamon
Download and start the telemetry daemon
./telemd
You can verify that the telemetry daemon sends data by suscribing to the topic via the redis CLI:
redis-cli psubscribe "telem/*"
Start the cluster deamon
Start the cluster daemon (which controls the cluster state)
python -m symmetry.cli.clusterd
Websocket server
To start the websocket server for the dashboard:
python -m symmetry.cli.websocket
The websocket is running on port 8082 and automatically connects to the local redis-server on localhost:6379.
Connect with ws://ip:8082/topic to receive all published messages for the given topic.
Run the dashboard
Serve the app with gunicorn
gunicorn -w 4 --preload -b 0.0.0.0:5000 \
-c symmetry/webapp/gunicorn.conf.py \
symmetry.webapp.wsgi:api
Point your browser to http://localhost:5000/ui/dashboard.
Using Symmetry
Creating services
To create a new service in the cluster a POST request must be sent to the
api/services/{service_id} endpoint, with service_id being the new service.
The POST request has one optional
(tar-exported docker image) and one mandatory (service
description) body element.
The service description is structured this way:
%YAML 1.2
---
id: #must be same id as in endpoint
maintainer: #the uploader of the service
name: #"Pretty" version of the name
version: #any version number
description: #simple description
image_tag: #if docker image uploaded then this tag must be provided by the image. otherwise it is pulled
port: #the port which is exposed by the service
After correct execution the answer should look somewhat like this:
{
"name": "Test Service",
"version": "1.0.0",
"desc": "This is a simple test_service",
"maintainer": "silvio",
"10.0.0.3": "1"
}
Other Client Scripts
Recording telemetry data
You can use the telemetry client cli.telemc to consume telemetry data in
various ways.
# prints to system out
python -m symmetry.cli.telemc
# writes to a csv file
python -m symmetry.cli.telemc --file /tmp/telemetry-results.csv
Metadata
Release files for mc2-symmetry 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mc2-symmetry-0.6.0.tar.gz | 41.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mc2_symmetry-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.8 kB
Release files / mc2-symmetry-0.6.0.tar.gz
| Download URL | mc2-symmetry-0.6.0.tar.gz |
|---|---|
| Size | 41.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0cebc2304f7a0dfa34eadb56ccf465cb61dbecefbb894762f11b23a7436625e5
|
|
BLAKE2b-256 checksum How to use checksums |
4e8846f9c1f5558478dc7eaa22cbf8447a1b60dd8d61e529911c78ce0fa59cb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.4
|
Release files / mc2_symmetry-0.6.0-py3-none-any.whl
| Download URL | mc2_symmetry-0.6.0-py3-none-any.whl |
|---|---|
| Size | 61.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01bba1f2246b35f9e334d7244b5642b0ace5f9aff295ee550d85cc8d4ab1fc84
|
|
BLAKE2b-256 checksum How to use checksums |
7cf96017b6d999cf71ff83a22451305ef858dadd202fb2b1d4ece706da6d5139
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.4
|