3.2.4. Command line interface

Server

This section explains which commands are available to manage your server. It also explains how to set up a test server locally.

Quick start

To create a new server, run the command below. A menu will be started that allows you to set up a server configuration file.

v6 server new

For more details, check out the Configure section.

To run a server, execute the command below. The --attach flag will copy log output to the console.

v6 server start --name <your_server> --attach

Warning

When the server is run for the first time, the following user is created:

  • username: root

  • password: root

It is recommended to change this password immediately.

Finally, a server can be stopped again with:

v6 server stop --name <your_server>

Available commands

The following commands are available in your environment. To see all the options that are available per command use the --help flag, e.g. v6 server start --help.

Command

Description

v6 server new

Create a new server configuration file

v6 server start

Start a server

v6 server stop

Stop a server

v6 server files

List the files that a server is using

v6 server attach

Show a server’s logs in the current terminal

v6 server list

List the available server instances

v6 server import

Import server entities such as organizations, users and collaborations

v6 server version

Shows the versions of all the components of the running server

Batch import

You can easily create a set of test users, organizations and collaborations by using a batch import. To do this, use the v6 server import /path/to/file.yaml command. An example yaml file is provided below.

You can download this file here.

Example batch import
organizations:

  - name:       IKNL
    domain:     iknl.nl
    address1:   Godebaldkwartier 419
    address2:   ""
    zipcode:    3511DT
    country:    Netherlands
    users:
      - username: admin
        password: Password123!
      - username: frank
        password: Password123!
      - username: bart
        password: Password123!
    public_key: LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF2eU4wWVZhWWVZcHVWRVlpaDJjeQphTjdxQndCUnB5bVVibnRQNmw2Vk9OOGE1eGwxMmJPTlQyQ1hwSEVGUFhZQTFFZThQRFZwYnNQcVVKbUlseWpRCkgyN0NhZTlIL2lJbUNVNnViUXlnTzFsbG1KRTJQWDlTNXVxendVV3BXMmRxRGZFSHJLZTErUUlDRGtGSldmSEIKWkJkczRXMTBsMWlxK252dkZ4OWY3dk8xRWlLcVcvTGhQUS83Mm52YlZLMG9nRFNaUy9Jc1NnUlk5ZnJVU1FZUApFbGVZWUgwYmI5VUdlNUlYSHRMQjBkdVBjZUV4dXkzRFF5bXh2WTg3bTlkelJsN1NqaFBqWEszdUplSDAwSndjCk80TzJ0WDVod0lLL1hEQ3h4eCt4b3cxSDdqUWdXQ0FybHpodmdzUkdYUC9wQzEvL1hXaVZSbTJWZ3ZqaXNNaisKS2VTNWNaWWpkUkMvWkRNRW1QU29rS2Y4UnBZUk1lZk0xMWtETTVmaWZIQTlPcmY2UXEyTS9SMy90Mk92VDRlRgorUzVJeTd1QWk1N0ROUkFhejVWRHNZbFFxTU5QcUpKYlRtcGlYRWFpUHVLQitZVEdDSC90TXlrRG1JK1dpejNRCjh6SVo1bk1IUnhySFNqSWdWSFdwYnZlTnVaL1Q1aE95aE1uZHU0c3NpRkJyUXN5ZGc1RlVxR3lkdE1JMFJEVHcKSDVBc1ovaFlLeHdiUm1xTXhNcjFMaDFBaDB5SUlsZDZKREY5MkF1UlNTeDl0djNaVWRndEp5VVlYN29VZS9GKwpoUHVwVU4rdWVTUndGQjBiVTYwRXZQWTdVU2RIR1diVVIrRDRzTVQ4Wjk0UVl2S2ZCanU3ZXVKWSs0Mmd2Wm9jCitEWU9ZS05qNXFER2V5azErOE9aTXZNQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=

  - name:       Small Organization
    domain:     small-organization.example
    address1:   Big Ambitions Drive 4
    address2:   ""
    zipcode:    1234AB
    country:    Nowhereland
    users:
      - username: admin-small-organization
        password: Password123!
      - username: stan
        password: Password123!
    public_key: LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF2eU4wWVZhWWVZcHVWRVlpaDJjeQphTjdxQndCUnB5bVVibnRQNmw2Vk9OOGE1eGwxMmJPTlQyQ1hwSEVGUFhZQTFFZThQRFZwYnNQcVVKbUlseWpRCkgyN0NhZTlIL2lJbUNVNnViUXlnTzFsbG1KRTJQWDlTNXVxendVV3BXMmRxRGZFSHJLZTErUUlDRGtGSldmSEIKWkJkczRXMTBsMWlxK252dkZ4OWY3dk8xRWlLcVcvTGhQUS83Mm52YlZLMG9nRFNaUy9Jc1NnUlk5ZnJVU1FZUApFbGVZWUgwYmI5VUdlNUlYSHRMQjBkdVBjZUV4dXkzRFF5bXh2WTg3bTlkelJsN1NqaFBqWEszdUplSDAwSndjCk80TzJ0WDVod0lLL1hEQ3h4eCt4b3cxSDdqUWdXQ0FybHpodmdzUkdYUC9wQzEvL1hXaVZSbTJWZ3ZqaXNNaisKS2VTNWNaWWpkUkMvWkRNRW1QU29rS2Y4UnBZUk1lZk0xMWtETTVmaWZIQTlPcmY2UXEyTS9SMy90Mk92VDRlRgorUzVJeTd1QWk1N0ROUkFhejVWRHNZbFFxTU5QcUpKYlRtcGlYRWFpUHVLQitZVEdDSC90TXlrRG1JK1dpejNRCjh6SVo1bk1IUnhySFNqSWdWSFdwYnZlTnVaL1Q1aE95aE1uZHU0c3NpRkJyUXN5ZGc1RlVxR3lkdE1JMFJEVHcKSDVBc1ovaFlLeHdiUm1xTXhNcjFMaDFBaDB5SUlsZDZKREY5MkF1UlNTeDl0djNaVWRndEp5VVlYN29VZS9GKwpoUHVwVU4rdWVTUndGQjBiVTYwRXZQWTdVU2RIR1diVVIrRDRzTVQ4Wjk0UVl2S2ZCanU3ZXVKWSs0Mmd2Wm9jCitEWU9ZS05qNXFER2V5azErOE9aTXZNQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=

  - name:       Big Organization
    domain:     big-organization.example
    address1:   Offshore Accounting Drive 19
    address2:   ""
    zipcode:    54331
    country:    Nowhereland
    users:
      - username: admin-big-organization
        password: Password123!
    public_key: LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF2eU4wWVZhWWVZcHVWRVlpaDJjeQphTjdxQndCUnB5bVVibnRQNmw2Vk9OOGE1eGwxMmJPTlQyQ1hwSEVGUFhZQTFFZThQRFZwYnNQcVVKbUlseWpRCkgyN0NhZTlIL2lJbUNVNnViUXlnTzFsbG1KRTJQWDlTNXVxendVV3BXMmRxRGZFSHJLZTErUUlDRGtGSldmSEIKWkJkczRXMTBsMWlxK252dkZ4OWY3dk8xRWlLcVcvTGhQUS83Mm52YlZLMG9nRFNaUy9Jc1NnUlk5ZnJVU1FZUApFbGVZWUgwYmI5VUdlNUlYSHRMQjBkdVBjZUV4dXkzRFF5bXh2WTg3bTlkelJsN1NqaFBqWEszdUplSDAwSndjCk80TzJ0WDVod0lLL1hEQ3h4eCt4b3cxSDdqUWdXQ0FybHpodmdzUkdYUC9wQzEvL1hXaVZSbTJWZ3ZqaXNNaisKS2VTNWNaWWpkUkMvWkRNRW1QU29rS2Y4UnBZUk1lZk0xMWtETTVmaWZIQTlPcmY2UXEyTS9SMy90Mk92VDRlRgorUzVJeTd1QWk1N0ROUkFhejVWRHNZbFFxTU5QcUpKYlRtcGlYRWFpUHVLQitZVEdDSC90TXlrRG1JK1dpejNRCjh6SVo1bk1IUnhySFNqSWdWSFdwYnZlTnVaL1Q1aE95aE1uZHU0c3NpRkJyUXN5ZGc1RlVxR3lkdE1JMFJEVHcKSDVBc1ovaFlLeHdiUm1xTXhNcjFMaDFBaDB5SUlsZDZKREY5MkF1UlNTeDl0djNaVWRndEp5VVlYN29VZS9GKwpoUHVwVU4rdWVTUndGQjBiVTYwRXZQWTdVU2RIR1diVVIrRDRzTVQ4Wjk0UVl2S2ZCanU3ZXVKWSs0Mmd2Wm9jCitEWU9ZS05qNXFER2V5azErOE9aTXZNQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=

collaborations:

  - name: ZEPPELIN
    participants:
      - name: IKNL
      - name: Small Organization
      - name: Big Organization
    encrypted: false

  - name: PIPELINE
    participants:
      - name: IKNL
      - name: Big Organization
    encrypted: false

  - name: SLIPPERS
    participants:
      - name: Small Organization
      - name: Big Organization
    encrypted: false

Warning

All users that are imported using v6 server import receive the superuser role. We are looking into ways to also be able to import roles. For more background info refer to this issue.

Testing

You can test the infrastructure via the v6 sandbox and v6 test commands. The purpose of v6 sandbox is to easily setup and run a test server accompanied by N nodes locally (default is 3 nodes). For example, if you have N = 10 datasets to test a particular algorithm on, then you can spawn a server and 10 nodes with a single command. By default, the nodes are given access to a test dataset of olympic medal winners, containing data on e.g. their age, height, length, weight, medal type and sport.

The v6 test command is used to run the v6-diagnostics algorithm. You can run it on an existing network or create a v6 sandbox network and run the test on that in one go.

You can view all available commands in the table below, or alternatively, use v6 sandbox --help. By using --help with the individual commands (e.g. v6 sandbox start --help), you can view more details on how to execute them.

Command

Description

v6 sandbox new

Create a new network, and start it

v6 sandbox start

Start the network

v6 sandbox stop

Stop the network

v6 sandbox remove

Remove the network completely

v6 test feature-test

Run the feature-tester algorithm on an existing network

v6 test integration-test

Create a dev network and run feature-tester on that network

An overview of the tests that the v6-diagnostics algorithm runs is given below.

  • Environment variables: Reports the environment variables that are set in the algorithm container by the node instance. For example the location of the input, token and output files.

  • Input file: Reports the contents of the input file, usually the algorithm method and its arguments. You can verify that the input set by the client is actually received by the algorithm.

  • Output file: Writes ‘test’ to the output file and reads it back.

  • Token file: Prints the contents of the token file. It should contain a JWT that you can decode and verify the payload. The payload contains information like the organization and collaboration ids.

  • Temporary directory: Creates a file in the temporary directory. The temporary directory is a directory that is shared between all containers that share the same run id. This checks that the temporary directory is writable.

  • Local proxy: Sends a request to the local proxy. The local proxy is used to reach the central server from the algorithm container. This is needed as parent containers need to be able to create child containers (=subtasks). The local proxy also handles encryption/decryption of the algorithm arguments and results as the algorithm container is not allowed to know the private key.

  • Subtask creation: Creates a subtask (using the local proxy) and waits for the result.

  • Isolation test: Checks if the algorithm container is isolated such that it can not reach the internet. It tests this by trying to reach google.nl, so make sure this is not a whitelisted domain when testing.

  • Database readable: Check if the file-based database is readable.

Store

This section explains which commands are available to manage your algorithm store. These can be used to set up a test server locally. To deploy a store, see the general deployment section.

Quick start

To create a new algorithm store, run the command below. A menu will be started that allows you to set up an algorithm store configuration file.

v6 algorithm-store new

For more details, check out the Configuration options section.

To run an algorithm store, execute the command below. The --attach flag will copy log output to the console.

v6 algorithm-store start --name <your_store> --attach

Finally, a server can be stopped again with:

v6 algorithm-store stop --name <your_store>

Available commands

The following commands are available in your environment. To see all the options that are available per command use the --help flag, e.g. v6 server start --help.

Table 3.1 Available commands

Command

Description

v6 algorithm-store new

Create a new algorithm store configuration file

v6 algorithm-store start

Start an algorithm store

v6 algorithm-store stop

Stop an algorithm store

v6 algorithm-store files

List the files that an algorithm store is using

v6 algorithm-store attach

Show an algorithm store’s logs in the current terminal

v6 algorithm-store list

List the available algorithm store instances