Building and Testing the Extension
Step 1 - Building and Uploading the Extension
Go ahead and run the UIP: Build
command
If you inspect the output, you will see two build artifacts were generated:
Anytime the zip_safe
flag in src/extension.yml
is set to false
, both the final extension zip (ue_task-1.0.0-py3.7.zip
) and the platform specific dependency wheel file (ue_task-1.0.0-cp37-cp37-linux_x86_64.whl
) will be generated. The final extension zip actually embeds the wheel file inside it.
The wheel file contains all the dependencies; in this case, that would be the requests
and psutil
modules. Furthermore, the wheel file was generated using a Python 3.7.16 virtual environment on a Linux x86-64 machine. As a result, if the Extension is NOT run using a Python 3.7 virtual environment on a Linux x86-64 system, the wheel file will not be used, and the extension may end up failing.
If your Extension supports various Python environments and systems, you must activate the desired virtual environment on the target machine and run the UIP: Build Dependency Wheel Only
(or if using only the CLI, run uip build --dep-whl-only
) command. Once the dependency wheel file is built, copy it to the dist/dep
folder on the Extension development environment. For instance, the Extension above targets Python 3.7.16 on Linux x86-64. If you wish to target Python 3.7.16 on Windows:
- activate the Python 3.7.16 virtual environment on Windows
- replicate the Extension development environment
- Run
uip build --dep-whl-only
. This should create a wheel file indist/dep
folder - Copy the
dist/dep/<wheel file>
to the Linux x86-64 Extension development environment - On the Linux x86-64 system, run
uip build
again to embed the wheel file in the final extension zip
Now that we have built the Extension, use the UIP: Upload
command to update the Extension on the Controller side:
If you run into issues uploading the Extension because of size limitations, make sure to adjust
- OMS Maximum Message Size using the
MAX_MSG_SIZE
configuration option - Universal Template Extension Maximum Bytes Controller Property (See doc for more details)
Alternatively, the UIP: Push
command could also have been used, but Build + Upload approach was used to highlight the new build artifact.
Step 2 - Running the Extension
Now that the Extension is updated on the Controller, go ahead and launch the task.
In STDOUT, you should see the output from psutil.test()
If the Extension fails with an import error, ensure
- the
zip_safe
flag was set tofalse
insrc/extension.yml
- the Python interpreter used to launch the Extension matches the wheel file. Inspect the Agent Log to ensure this.