Git Product home page Git Product logo

c-troll's Introduction

C-Troll

Build Status GitHub Issues Average time to resolve an issue GitHub Releases GitHub Downloads

C-Troll is a suite of Windows-only applications that make it possible to controls applications in a distributed computing environment, for example a planetarium dome. It provides the ability for a central Control computer to control a number of Nodes and start configurable programs on these clusters.

The suite consists of four applications. The Tray, C-Troll, the Editor, and the Starter.

Applications

Tray

Tray

The Tray application is running on each Node on which you would want to be able to start applications. The Tray is opening a port and receives commands from the C-Troll application via JSON-formatted messages.

C-Troll

C-Troll

The C-Troll application is running on a central Control computer and controls an arbitrary number of Tray applications. From this user interface, the user selects the applications and configurations that they want to start or stop on the Nodes. C-Troll acts as a central hub to communicate with the clusters that it connects to and can also optionally receive REST messages through an open port that report back information about the status of the cluster, start programs, stop programs, etc.

Editor

Editor

The Editor application allows the quick editing and creation of JSON configuration files for the C-Troll application. These configuration files define which Nodes are available, which Nodes are combined to form Clusters, and which Programs can be executed on which Cluster.

Starter

The Starter application is a simple commandline tool that will send a REST message to a C-Troll instance to start a specific program. The program and its configuration are provided using commandline arguments. This application is specifically useful to generate easy-to-use desktop shortcuts that cause an application startup on the cluster

Getting started

The example folder contains a full working example including nodes, clusters, and programs. If you want to create your own setup, the recommended way is to start with configuration the nodes, then grouping them into clusters, and then define programs to execute on the clusters. The Wiki contains additional information about allowed parameters for the various configuration and JSON files. The Editor application contains all tools necessary to create these configurations without manually editing the JSON configuration files.

  1. On the client computers that should be able to start programs
  2. Install the Tray application
  3. (optional) Configure the operating system to start the Tray automatically at startup
  4. On the master computer that is controlling the cluster
  5. Using the Editor create "Node" configuration files for each of the clients that have the Tray installed
  6. Using the Editor create a "Cluster" configuration file
  7. Using the Editor create as many "Program" configuration files as needed

c-troll's People

Contributors

alexanderbock avatar emiax avatar eriksunden avatar dependabot[bot] avatar mik-pe avatar

Stargazers

George Adamopoulos avatar Sascha Kriegel avatar Descendo The Monkei avatar Jonathas Costa avatar Gabriel Stoeckle avatar  avatar Andreas Lindemark avatar

Watchers

James Cloos avatar Gene Payne avatar  avatar  avatar Andreas Lindemark avatar Sascha Kriegel avatar Gabriel Stoeckle avatar

c-troll's Issues

C-troll doesn't always close OpenSpace properly

C-troll doesn't always shut down OpenSpace on the nodes when using a multi node setup. That means you have to manually remote into them to shut down the process that runs OpenSpace. This happens both when you press x and when you click the Stop: ... button in C-troll.

Ability to restart cluster

Currently on my cluster I use the WWT controller to restart the nodes. If the WWT app can do it, I think we should be able to also.

C-Troll provide acccess to process std::out

Copy from OpenSpace/OpenSpace#2184

Right now when launching openspace with c-troll, if openspace exits too early, there is no way to see that logging that happens. So in the case of a bad configuration file, there is no way to find that out.

It would be nice to get access to this in the tray or maybe somewhere in the main C-Troll app

Process list needs a scrollbar

When creating / removing a large number of processes, the list gets very long, so it would be necessary to scroll that list

Add syncronozation / robocopy support

I would be nice to have an option for applications to have the option to syncronize files before launching an application.

Currently there is no concept of a control/renderer connection in ctroll, this might have to be added, or some option to choose which node in the cluster has the files

Proccess list is not purged

When starting and stopping the same application over and over again, the process list is filled with remains of the previously exited processes, cluttering the list

Tray - Startup with errors is slient

When I startup the tray application, if it has an error binding to the socket, it logs it in the console, but gives no indication in the tray or alert message.

I think we should maybe provide a gray version of the icon for the tray and change it to gray when not connected, I have seen other applications do that.

CMD/Powershell "shutdown /s" does not work

When running powershell with arguments shutdown /s it doesn't work.
When checking output it looks like powershell was not able to understand the input (as in you've not given proper arguments).

I think something in C-Troll parses the /s incorrectly and thus the command does not work.

Allow different command line parameters depending on node

Suggestion: Let the user specify command line parameters in the application JSON configuration where specific cluster nodes can receive different parameters.

e.g. we have an executable that takes a different calibration file on each node as a command line parameter.
That means the command to be run on the nodes would be

Node 1:
<path/to/shared/drive>/program.exe  P1_A3.mpcdi

Node 2:
<path/to/shared/drive>/program.exe  P2_A3.mpcdi

Add support for Zabbix monitoring system

I would like to have support for Zabbix i C-Troll.
To be able to monitor if the diffrent components (core, tray...) are running or not.
It's also possible to send data to Zabbix, such as if programs controlled by C-Troll is started (also which program, if you want to get detailed information).
This would be great for supoort staff, to see if the system is healthy and for managers to see usage of diffrent programs/shows. It's also possible in Zabbix to act on triggers, to send an e-mail or SMS if something is wrong.

OS specific monitoring, is best done with the Zabbix agents, which can gather information about CPU, Mem, Disk, Network usage to name a few items.

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.