Deploying Eggplant Functional (Fusion Engine) in Containers
Intended Audience: Test developers familiar with using Git source control software workflows, automated pipelines, and containerized software.
Eggplant Functional's script execution engine is also known as the Eggplant Fusion Engine. The Fusion Engine is essentially Eggplant Functional running in command-line mode. When we refer to Eggplant Functional running in a container, we usually refer to it as the "Fusion Engine." However, we refer to it as both on this page.
You can integrate Eggplant Functional (EPF) tests into your continuous integration/continuous delivery (CI/CD) pipelines by deploying EPF in a container. To run in a container, you launch EPF with its runscript
command. The runscript
command can run EPF without its graphical user interface (GUI) from a command-line interface (CLI), which allows it to run in a container.
This page covers following topics:
Methods for Running Eggplant Functional (Fusion Engine) in a Container
You can run Eggplant Functional (Fusion Engine) in a container in one of two ways:
-
By passing a specific Eggplant SenseTalk test script to run as an argument with the
runscript
command. In this scenario, Eggplant Fusion Engine only runs for the duration of the specified script run. Below is an examplerunscript
command for this scenario:runscript /tests/Demo.suite/Scripts/check_tutorial_sut.script
For more information the
runscript
options available when you run the Eggplant Fusion Engine this way, see The Runscript Command, Running fron the Command Line, and Runscript Command Line Options. -
By running in Drive Mode, where you pass the
drivemode yes -driveport <port>
arguments with therunscript
command to run Eggplant Fusion Engine as a background service. Drive Mode provides a simple XML-RPC interface that other applications, such as the Eggplant DAI Run Agent, can use to send messages to and from Eggplant Fusion Engine. In Drive Mode, Eggplant Fusion Engine runs continuously to receive and send messages until you or a process explicitly stops it. Below is an examplerunscript
command for Drive Mode:runscript driveport 5400 -CommandLineOutput yes
For more information about the options available when you run Fusion Engine in Drive Mode, see About Eggdrive and Using Eggdrive with Eggplant Functional.
Container Image Options
To run Eggplant Functional (Fusion Engine) in a container (to containerize it), you have the following options:
-
You can use the prebuilt images as described in Using the Prebuilt Eggplant Functional Container Images.
-
You can build your own as described in Building Your Own Container Image.
Be sure to review the prerequisites below to ensure you have everything you need to run the Eggplant Fusion Engine in a container.
Container Prerequisites
To run Eggplant Functional (Fusion Engine) in a container, you need the following software:
General Requirements
Requirement | Notes |
---|---|
Git source control software | The latest version, if you plan to run your Fusion Engine container in a Gitlab pipeline. |
container software | Such as Docker, Ranger, or Red Hat Linux (RHEL) Podman or the pre-configured Eggplant Functional (Fusion Engine) container images, available in the Quay.io reository or Iron Bank repositories |
Eggplant Functional (Fusion Engine) Requirements
Requirement | Notes |
---|---|
Supported Linux OSs running on Intel (x86_64) systems only | See the Eggplant Functional Prerequisites page for information about Eggplant Fusion Engine (Eggplant Functional) supported Linux operating systems and versions. |
Eggplant Functional (Fusion Engine) | Launched using runscript . |
Reprise License Manager (RLM) Server | The currently supported version of the RLM Server as documented in the Eggplant Functional Prerequisites page. |
Eggplant Functional Reprise License Manager (RLM) license(s) | 1 Developer or Execution license for each instance of Eggplant Fusion Engine (Eggplant Functional) you want to run. You must use licenses served from an RLM Server. You cannot use node-locked licenses when you run Eggplant Fusion Engine in a container. For information about using the RLM Server for licenses, see Using RLM for Team License Management. You can create licenses through the Keysight Software Manager. |
network access to an RLM Server host | The Eggplant Fusion Engine in a container must have network access to the system running the RLM Server it from which it needs to check out a license. |
Disable the BonJour Discovery option | You must set the Eggplant Fusion Engine (Eggplant Functional) BonjourDiscoveryEnabled option to false when you run it in a container. This option is unnecessary when you run a Fusion Engine container in a pipeline where it does not need the ability to poll for other VNC Servers. |
Using Prebuilt Eggplant Functional (Fusion Engine) Container Images
Keysight provides Red Hat Enterprise Linux (RHEL) containers prebuilt with the Eggplant Functional script execution engine (Fusion Engine) that you can use. The entrypoint
for these containers are wrappers around the Eggplant Functional runscript
command, which can run from a Docker image on any Open Container Initiative (OCI) Runtime. For information about OCI Runtime specifications, see the Linux Foundation Open Container Initiative site. The containers are available from two repositories:
-
Red Hat Quay.io Eggplant Fusion Engine in a Container, which is also linked on our Eggplant Functional Software Downloads page.
-
Iron Bank Eggplant Functional Container, which is Platform One's hardened container image repository. This repository provides a secure software supply chain for all software engineers in the greater United States Department of Defense (DoD) community. For more information, visit Platform One.
Pulling the Prebuilt Container Images
You can pull the prebuilt Eggplant Fusion Engine container images from their repositories by following these steps:
-
Open a browser and navigate to the repository:
- Quay.io repository:
https://quay.io/repository/eggplantsoftware/fusion-engine-ubi8
- Iron Bank repository:
https://repo1.dso.mil/dsop/keysight/eggplant/epf-ubi8
- Quay.io repository:
-
Pull a copy of the container with either the
podman
command or thedocker
command depending on the container software you are using.先端You can copy sample commands in this guide by hovering over the command and then clicking the copy (two pages) button when it appears on the right side of the command.
For the Quay.io container:
Podman command:
podman pull quay.io/eggplantsoftware/fusion-engine-ubi8
Docker command:
docker pull quay.io/eggplantsoftware/fusion-engine-ubi8
ノートYou may need to explicitly append the Fusion Engine container version (preceded with a colon) to the end of the container path in the
pull
command as shown in the following example:podman pull quay.io./eggplantsoftware/fusion-engine-ubi8:<version>
.For the Iron Bank container: Use the
pull
commands above but substitute the path to the Iron Bank container image.
Running the Prebuilt Container Images
After you pull the Eggplant Fusion Engine container image, you need to configure it to run as shown in the following example podman run
commands. The samples include ways to accept the EULA and Privacy agreements, either as variables or by passing those acceptances in a SenseTalk script. (This information is also provided in Quay.io repository Description.)
As described above, the ENTRYPOINT
for this container image is a wrapper around the Eggplant runscript
command. This wrapper requires you to set three environment variables:
EGGPLANT_ACCEPT_EULA=true
EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true
EGGPLANT_LICENSE_HOST=<your_RLM_Server_Host>
Where:
EGGPLANT_ACCEPT_EULA=true
specifies to accept the End User License Agreement (EULA). You can read the EULA hereEGGPLANT_ACCEPT_PRIVACY=true
specifies to accept the Privacy Policy. You can read the Privacy Policy here.EGGPLANT_LICENSE_HOST=<your_RLM_Server_host>
specifies the host name or IP address of the system running the Reprise License Manager (RLM) Server that the Fusion Engine needs to access to check out a license. For more information about RLM Servers, see Using RLM for Team License Management.