There are two separate ways that a tool can be added on the CPS-VO website.
- The first is to simply list a tool in one of the tool libraries hosted on the portal.
- The second is to functionally integrate a tool into the CPS-VO
In all cases, your tool a) must be adequately documented for a novice, b) contain at least one sample problem that a new user can easily run and understand & c) the tool should have at least one person registered with the CPS-VO staff to contact for maintenance issues and to answer questions from the CPS user community.
See below for a breakdown of each category:
A D D I N G A T O O L T O T H E C P S - V O T O O L L I B R A R Y
Tool libraries on the CPS-VO document several of the most mature tools available to the cyber-physical systems community.
A tool library consists of a search engine that suggests specific tools for various types of problems, as well as library listing of pertinent tools.
Each individual tool is annotated by metadata that comes from several pre-defined "taxonomies". These taxonomies are used when searching for candidate tools to solve certain problems.
For a tool to be listed on the VO, a webform must be completed. In the webform we ask for the following:
- a link to the tool website
- sufficient tool documentation
- taxonomies associated with the tool
- exemplars for users
A D D I N G A N I N T E G R A T E D T O O L T O T H E C P S - V O
The CPS-VO seeks to provide users with the capability of creating, performing, and sharing repeatable experiments, tools and results with others.
Running a variety of user tools on a production web server would be a poorly conceived notion for many reasons. To address this, the VO interfaces with other servers where the resources actually run. These servers can be any publicly accessible Linux machine with SSH access capability - whether they are cloud servers or individual machines, hosted by the VO or by another organization.
Once the server is provisioned with the tool and configured to work with the VO, the user parameters for the experiment can be defined in a YAML file that the VO will host.
There are two key parts to enabling tool provision on the CPS-VO
- Configuring the tool server and scripts necessary for launching by the CPS-VO
- Defining tool parameters for the VO to generate the appropriate launch form for the end user.
Use the button below to submit your tool.
Any design studio that is embedded on the VO must be served over SSL with a valid certificate signed by a certificate authority (no self-signed certs). We also require that there be documentation with an exemplar to help a user new to the tool get started and familiarize themselves with the features. Lastly, as an open-source platform that exists to promote and share technologies with the goal of advancing science, we ask that source materials for reproducing and validating the setup of the tool are made available so others can setup a local copy if they so desire for offline use.The following steps are necessary specifically for integrating a WebGME-based design studio:
1. Key Generation
Before enabling authentication we must generate the RSA Keys. These are used by the server to encrypt (the private key) and decrypt (the public key) the tokens containing the user-id. If we do not generate our own keys and set the configuration to use these new keys, the example keys checked into the webgme repo will be used (which of course is a pretty bad idea).
- Create a new directory, token_keys, outside of the repository (if not guarded against all files under the cwd of the express server can accessed).
- Using openssl (available for windows, the first step is to generate a private key
openssl genrsa -out token_keys/private_key 1024
and from it generated a public key
openssl rsa -in token_keys/private_key -pubout > token_keys/public_key
2. WebGME Configuration
Once the keys are generated on the webgme server, send the private key to the CPSVO team for WebGME-CPSVO authentication integration.
Add following configuration options on the WebGME for CPS-VO integration example in the file : webgme/config/config.default.js
config.authentication.enable = true;
#allow users to create projects from V2.12 webgme version
config.authentication.inferredUsersCanCreate = true;
#disable guest authentication
config.authentication.allowGuests = false;
#disable user registration
config.authentication.allowUserRegistration = false;
#Login and logout URLs should point to the CPS_VO_GROUP
config.authentication.logInUrl = 'http://cps-vo.org/group/CPS_VO_GROUP_NAME'
config.authentication.logOutUrl = 'http://cps-vo.org/group/CPS_VO_GROUP_NAME'
#This assumes the keys are placed outside the webgme-app folder. i.e. in the `../../token_keys` directory
config.authentication.jwt.privateKey = path.join(__dirname, '..', '..', 'token_keys', 'private_key');
config.authentication.jwt.publicKey = path.join(__dirname, '..', '..', 'token_keys', 'public_key');
Documentation for developing design studios with WebGME is available here.
Use the button below to submit your design studio.