{"id":20237537,"url":"https://github.com/qualisystems/teravm-controller-shell-2g","last_synced_at":"2026-03-06T12:32:34.375Z","repository":{"id":145182170,"uuid":"162553094","full_name":"QualiSystems/TeraVM-Controller-Shell-2G","owner":"QualiSystems","description":null,"archived":false,"fork":false,"pushed_at":"2019-05-06T14:31:05.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-03T14:41:02.632Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rich Text Format","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QualiSystems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-20T08:58:26.000Z","updated_at":"2019-05-06T14:29:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"c5ebc43f-a444-4a20-b26f-6c3cb4844902","html_url":"https://github.com/QualiSystems/TeraVM-Controller-Shell-2G","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/QualiSystems/TeraVM-Controller-Shell-2G","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QualiSystems%2FTeraVM-Controller-Shell-2G","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QualiSystems%2FTeraVM-Controller-Shell-2G/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QualiSystems%2FTeraVM-Controller-Shell-2G/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QualiSystems%2FTeraVM-Controller-Shell-2G/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QualiSystems","download_url":"https://codeload.github.com/QualiSystems/TeraVM-Controller-Shell-2G/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QualiSystems%2FTeraVM-Controller-Shell-2G/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30176239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T11:48:51.886Z","status":"ssl_error","status_checked_at":"2026-03-06T11:48:51.460Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T08:27:22.572Z","updated_at":"2026-03-06T12:32:34.359Z","avatar_url":"https://github.com/QualiSystems.png","language":"Rich Text Format","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://github.com/QualiSystems/cloudshell-shells-documentaion-templates/blob/master/cloudshell_logo.png)\n\n# **TeraVM Controller 2G Shell**  \n\nRelease date: January 2019\n\nShell version: 1.0.0\n\nDocument version: 1.0\n\n# In This Guide\n\n* [Overview](#overview)\n* [Downloading the Shell](#downloading-the-shell)\n* [Importing and Configuring the Shell](#importing-and-configuring-the-shell)\n* [Updating Python Dependencies for Shells](#updating-python-dependencies-for-shells)\n* [Associating a CloudShell Service to a Non-Global Domain](#associating-a-cloudshell-service-to-a-non-global-domain)\n* [Typical Workflow](#typical-workflow)\n* [References](#references)\n* [Release Notes](#release-notes)\n\n\n# Overview\nA shell integrates a device model, application or other technology with CloudShell. A shell consists of a data model that defines how the device and its properties are modeled in CloudShell, along with automation that enables interaction with the device via CloudShell.\n\n### Traffic Generator Shells\nCloudShell's traffic generator shells enable you to conduct traffic test activities on Devices Under Test (DUT) or Systems Under Test (SUT) from a sandbox. In CloudShell, a traffic generator is typically modeled using a chassis resource, which represents the traffic generator device and ports, and a controller service that runs the chassis commands, such as Load Configuration File, Start Traffic and Get Statistics. Chassis and controllers are modeled by different shells, allowing you to accurately model your real-life architecture. For example, scenarios where the chassis and controller are located on different machines.\n\nFor additional information on traffic generator shell architecture, and setting up and using a traffic generator in CloudShell, see the [Traffic Generators Overview](http://help.quali.com/Online%20Help/9.0/Portal/Content/CSP/LAB-MNG/Trffc-Gens.htm?Highlight=traffic%20generator%20overview) online help topic.\n\n### **TeraVM Controller 2G Shell**\nThe **TeraVM Controller 2G Shell** shell provides you with connectivity and management capabilities such as device structure discovery and power management for the **TeraVM Controller**. \n\nFor more information on the **TeraVM Controller**, see the official **TeraVM** product documentation.\n\nThe **TeraVM Controller** provides automation commands to run on the TeraVM Chassis, such as Load Configuration, Start/Stop Traffic, Get Statistics. For more information on the TeraVM Chassis shell, see the following:\n\n* [TeraVM Chassis 2G Shell](https://community.quali.com/repos/3286/teravm-chassis-2g-shell)\n\n\n### Standard version\nThe **TeraVM Controller 2G Shell** shell is based on the Traffic Generator Controller Standard version 2.0.0.\n\nFor detailed information about the shell’s structure and attributes, see the [Traffic Shell standard](https://github.com/QualiSystems/cloudshell-standards/blob/master/Documentation/Traffic%20Generator%20Controller%20Shell%20Standard.md) in GitHub.\n\n### Requirements\n\nRelease: **TeraVM Controller 2G**\n\n▪ TeraVM version: 13.4\n\n▪ CloudShell version: 8.3 Patch 3, 9.0 Patch 2, 9.1 and above\n\n### Data Model\n\nThe shell's data model includes all shell metadata, families, and attributes.\n\n### Automation\nThis section describes the automation (driver) associated with the data model. The shell’s driver is provided as part of the shell package. There are two types of automation processes, Autoload and Resource.  Autoload is executed when creating the resource in the **Inventory** dashboard, while resource commands are run in the sandbox.\n\nFor Traffic Generator shells, commands are configured and executed from the controller service in the sandbox, with the exception of the Autoload command, which is executed when creating the resource.\n\n|Command|Description|\n|:-----|:-----|\n|Autoload|Discovers the chassis, its hierarchy and attributes when creating the resource. The command can be rerun in the **Inventory** dashboard and not in the sandbox, as for other commands.|\n|Load Configuration|Loads configuration and reserves ports.\u003cbr\u003eSet the command input as follows:\u003cbr\u003e* **TeraVM config file** (config_file_name (String)): The configuration file name. Path should include the protocol type, for  example *tftp://10.10.10.10/asdf*.\u003cbr\u003e* **Use ports from reservation** (Enum): **True** or **False**. Updates the configuration file with ports from the current reservation based on their **Logical Name** attributes.\n|Start Test|Starts traffic test.|\n|Stop Test|Stops traffic test.|\n|Get Statistics|Gets the test result file and attaches it to the reservation.|\n\n# Downloading the Shell\nThe **TeraVM Controller 2G** shell is available from the [Quali Community Integrations](https://community.quali.com/integrations) page. \n\nDownload the files into a temporary location on your local machine. \n\nThe shell comprises:\n\n|File name|Description|\n|:---|:---|\n|TeravmControllerShell2G.zip|TeraVM Controller 2G shell package|\n|teravm-offline-dependencies-1.0.0.zip\t|Shell Python dependencies (for offline deployments only)|\n|Cleanup Reservation.zip|Teardown script for cleaning a reservation.|\n\n## Importing and Configuring the Shell\nThis section describes how to import the TeraVM Controller 2G shell and configure and modify the shell’s devices. \n\n### Importing the shell into CloudShell\n\n**To import the shell into CloudShell:**\n  1. Make sure you have the shell’s zip package. If not, download the shell from the [Quali Community's Integrations](https://community.quali.com/integrations) page.\n  2. In CloudShell Portal, as Global administrator, open the **Manage – Shells** page.\n  3. Click **Import**.\n  4. In the dialog box, navigate to the shell's zip package, select it and click **Open**.\n\nThe shell is displayed in the **Shells** page and can be used by domain administrators in all CloudShell domains to create new inventory resources, as explained in [Adding Inventory Resources](http://help.quali.com/Online%20Help/9.0/Portal/Content/CSP/INVN/Add-Rsrc-Tmplt.htm?Highlight=adding%20inventory%20resources). \n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;The service can now be added to a blueprint from the **Apps/Service** catalog's **Networking** category.  \n\n### Offline installation of a shell\n\n**Note:** Offline installation instructions are relevant only if CloudShell Execution Server has no access to PyPi. You can skip this section if your execution server has access to PyPi. For additional information, see the online help topic on offline dependencies.\n\nIn offline mode, import the shell into CloudShell and place any dependencies in the appropriate dependencies folder. The dependencies folder may differ, depending on the CloudShell version you are using:\n\n* For CloudShell version 8.3 and above, see [Adding Shell and script packages to the local PyPi Server repository](#adding-shell-and-script-packages-to-the-local-pypi-server-repository).\n\n* For CloudShell version 8.2, perform the appropriate procedure: [Adding Shell and script packages to the local PyPi Server repository](#adding-shell-and-script-packages-to-the-local-pypi-server-repository) or [Setting the python pythonOfflineRepositoryPath configuration key](#setting-the-python-pythonofflinerepositorypath-configuration-key).\n\n* For CloudShell versions prior to 8.2, see [Setting the python pythonOfflineRepositoryPath configuration key](#setting-the-python-pythonofflinerepositorypath-configuration-key).\n\n### Adding shell and script packages to the local PyPi Server repository\nIf your Quali Server and/or execution servers work offline, you will need to copy all required Python packages, including the out-of-the-box ones, to the PyPi Server's repository on the Quali Server computer (by default *C:\\Program Files (x86)\\QualiSystems\\CloudShell\\Server\\Config\\Pypi Server Repository*).\n\nFor more information, see [Configuring CloudShell to Execute Python Commands in Offline Mode](http://help.quali.com/Online%20Help/9.0/Portal/Content/Admn/Cnfgr-Pyth-Env-Wrk-Offln.htm?Highlight=Configuring%20CloudShell%20to%20Execute%20Python%20Commands%20in%20Offline%20Mode).\n\n**To add Python packages to the local PyPi Server repository:**\n  1. If you haven't created and configured the local PyPi Server repository to work with the execution server, perform the steps in [Add Python packages to the local PyPi Server repository (offlinemode)](http://help.quali.com/Online%20Help/9.0/Portal/Content/Admn/Cnfgr-Pyth-Env-Wrk-Offln.htm?Highlight=offline%20dependencies#Add). \n  \n  2. For each shell or script you add into CloudShell, do one of the following (from an online computer):\n      * Connect to the Internet and download each dependency specified in the *requirements.txt* file with the following command: \n`pip download -r requirements.txt`. \n     The shell or script's requirements are downloaded as zip files.\n\n      * In the [Quali Community's Integrations](https://community.quali.com/integrations) page, locate the shell and click the shell's **Download** link. In the page that is displayed, from the Downloads area, extract the dependencies package zip file.\n\n3. Place these zip files in the local PyPi Server repository.\n \n### Setting the python PythonOfflineRepositoryPath configuration key\nBefore PyPi Server was introduced as CloudShell’s python package management mechanism, the `PythonOfflineRepositoryPath` key was used to set the default offline package repository on the Quali Server machine, and could be used on specific Execution Server machines to set a different folder. \n\n**To set the offline python repository:**\n1. Download the *teravm-offline-dependencies-1.0.0* file, see [Downloading the Shell](#downloading-the-shell).\n\n2. Unzip it to a local repository. Make sure the execution server has access to this folder. \n\n3.  On the Quali Server machine, in the *~\\CloudShell\\Server\\customer.config* file, add the following key to specify the path to the default python package folder (for all Execution Servers):  \n\t`\u003cadd key=\"PythonOfflineRepositoryPath\" value=\"repository \nfull path\"/\u003e`\n\n4. If you want to override the default folder for a specific Execution Server, on the Execution Server machine, in the *~TestShell\\Execution Server\\customer.config* file, add the following key:  \n\t`\u003cadd key=\"PythonOfflineRepositoryPath\" value=\"repository \nfull path\"/\u003e`\n\n5. Restart the Execution Server.\n \n# Updating Python Dependencies for Shells\nThis section explains how to update your Python dependencies folder. This is required when you upgrade a shell that uses new/updated dependencies. It applies to both online and offline dependencies.\n\n### Updating offline Python dependencies\n**To update offline Python dependencies:**\n1. Download the latest Python dependencies package zip file locally.\n\n2. Extract the zip file to the suitable offline package folder(s). \n\n3. Terminate the shell’s instance, as explained [here](http://help.quali.com/Online%20Help/9.0/Portal/Content/CSP/MNG/Mng-Exctn-Srv-Exct.htm#Terminat).\n\n### Updating online Python dependencies\nIn online mode, the execution server automatically downloads and extracts the appropriate dependencies file to the online Python dependencies repository every time a new instance of the driver or script is created.\n\n**To update online Python dependencies:**\n* If there is a live instance of the shell's driver or script, terminate the shell’s instance, as explained [here](http://help.quali.com/Online%20Help/9.0/Portal/Content/CSP/MNG/Mng-Exctn-Srv-Exct.htm#Terminat). If an instance does not exist, the execution server will download the Python dependencies the next time a command of the driver or script runs.\n\n## Associating a CloudShell Service to a Non-Global Domain\n\nIn order to expose a service to users of a domain that is not the Global domain, you must associate the service to the domain. To do this, you need to associate the service to a category that is assigned to the domain.\n\nWhen you import a service shell, most shells are automatically assigned a default service category which is associated with the Global domain. For custom shells, this may not be true.\n\n**To associate the TeraVM Controller 2G service to a non-global domain:**\n\n**Note:** The association process differs depending on the type of shell - second generation (2G) shell or first generation (1G) shell. The instructions below detail the steps for a 2G service shell.\n\n1. (Optional) To associate the service to a new service category(s): \n\n\t**Note:** If you do not want to add a new category(s) to this shell, you can use the default category that comes out-of-the-box (if it exists).\n\t\n\t• Modify the *shelldefinition.yaml* file to add a service category(s) to the shell. See the CloudShell Developer Guide’s [Associating categories to a service shell](https://devguide.quali.com/shells/9.0.0/customizing-shells.html#associating-categories-to-a-service-shell) article. Note that when importing the shell into CloudShell, the new categories will be linked automatically with the Global domain.\n\t\n2. Associate the shell’s service category (either the out-of-the-box category or the new category you created in step 1) to a non-Global domain.\n\t1. In the **Manage** dashboard, click **Categories** from the left sidebar, or **Domains** if you are a domain admin.\n\t\n\t2. Select **Services Categories**.\n\t\n\t3. Click the service category that is associated with your service shell.\n\t\n\t4. In the **Edit Category** dialog box, from the **Domains** drop-down list, select the desired domain(s).\n\t\n\t5. Click **Save**.\n\n# Typical Workflow \n\n**Workflow 1 - Creating a new blueprint**\n1. Create a new blueprint.\n   1. Log in to CloudShell Portal and create a new blueprint (**Blueprint Catalog\u003eCreate Blueprint**).\n   2. Give the blueprint a name.\n   \n2. Add resources and services to the blueprint. \n   1. Click the **Resource** button and add the TeraVM Chassis resource and all needed ports into the diagram. \n   2. Associate the port sub resources with the TeraVM interfaces, by specifying the port attribute **Logical Name**.\n   3. Click the **App/Services** tab and add the **TeraVMController** service.\n   \n3. Add the teardown script *Cleanup Reservation.zip*, provided with the shell, see [Downloading the Shell](#downloading-the-shell). This script runs the **cleanup_reservation** driver command when the reservation ends and releases ports which were used by the reservation. \n   1. Go to the **Scripts** management page **Manage\u003eScripts\u003eBlueprint**, click **Add New Script** and choose the **Cleanup Reservation.zip** file. \n   2. Click **Edit** for the newly added script and change **Script Type** to **Teardown**.\n   3. Return to the blueprint and open properties, **Blueprint\u003eProperties**. \n   4. In the **Driver** section, select **Python Setup \u0026 Teardown**, add **Estimated teardown duration** 1 min.\n   5. Click **Add Script** and choose **Cleanup Reservation** from the list. \n   6. Click **Update** to save changes.\n\n**Workflow 2 - Running a test**\n1. Reserve a blueprint that is configured to run traffic tests, like the one configured in Workflow 1.\n\n2. From the TeraVMController service, run the **Load Configuration** command.\n   1. Hover over the TeraVMController service and click **Commands**.\n   2. In the **Resource Commands** pane, click the **Load Configuration** command.\n   3. In the **TeraVM config file** input, specify the path to your test configuration file. \u003cbr\u003eIt can be a full path, or relative path under the location specified in the attribute **Test Files Location**, such as *\u003creservation_id\u003e/test_group.xml* or only *test_group.xml*. Make sure the path is accessible to the Execution Server running the command.\n   4. Click **Run**, to load the test configuration to the TeraVM Controller.\n   \n3. Run the **Start Test** command.\n\n4. Run the **Stop Test** command.\n\n5. Get the test's result file.\n   * Run the **Get Result** command.\n   * The test's result file is attached to the sandbox.\n\n\n# References\nTo download and share integrations, see [Quali Community's Integrations](https://community.quali.com/integrations). \n\nFor instructional training and documentation, see [Quali University](https://www.quali.com/university/).\n\nTo suggest an idea for the product, see [Quali's Idea box](https://community.quali.com/ideabox). \n\nTo connect with Quali users and experts from around the world, ask questions and discuss issues, see [Quali's Community forums](https://community.quali.com/forums). \n\n# Release Notes \n\nFor release updates, see the shell's [GitHub releases page](https://github.com/QualiSystems/TeraVM-Controller-Shell-2G/releases).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqualisystems%2Fteravm-controller-shell-2g","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqualisystems%2Fteravm-controller-shell-2g","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqualisystems%2Fteravm-controller-shell-2g/lists"}