Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle Docker Compose configuration entirely with environment variables #282

Open
wants to merge 31 commits into
base: master
Choose a base branch
from

Conversation

aromanielloNTIA
Copy link
Member

@aromanielloNTIA aromanielloNTIA commented Mar 22, 2024

Resolves #279 by adding new environment variables SSD_DEVICE and API_SHM_SIZE.

Now, SSD_DEVICE is used to provide the host's storage device path to the API container. This environment variable is used by the SEA edge compute action to get diagnostic SSD SMART data. The default included in the env.template file is /dev/nvme0n1. This default could cause missing metadata when using the SEA action if the SSD_DEVICE is not an SSD. SCOS Actions handling of this new environment variable was added in 11.1.0 (NTIA/scos-actions#126).

API_SHM_SIZE is used to set the shared memory in the API container, and a default is provided keeping it at 16 GB. This is used to provide sufficient shared memory to the Ray package for parallel processing of large IQ captures.

After merging this, the following need to be added to the environment variables documentation in the wiki:

  • API_SHM_SIZE: Size to allocate shared memory (/dev/shm) in the API container. This
    is currently used to allocate shared memory for parallel processing of IQ data with Ray.
  • SSD_DEVICE: The device (e.g., /dev/sda/) which is mapped to /dev/nvme0n1 within
    the API container. This is currently only used to retrieve SSD SMART diagnostics (in
    SCOS Actions).

@aromanielloNTIA aromanielloNTIA marked this pull request as draft April 4, 2024 17:24
@aromanielloNTIA aromanielloNTIA marked this pull request as ready for review October 17, 2024 17:02
@jhazentia jhazentia self-requested a review December 13, 2024 15:27
compose.yaml Outdated Show resolved Hide resolved
env.template Show resolved Hide resolved
env.template Outdated
@@ -89,12 +88,22 @@ SSL_CA_PATH=scos_test_ca.crt
SSL_CERT_PATH=sensor01.pem
SSL_KEY_PATH=sensor01.pem

# Device made available to SCOS Plugins, e.g. for getting SMART data
SSD_DEVICE="$(lsblk -I 8 -npdo KNAME)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This command isn't returning anything on the sensors or my laptop

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replaced with a plaintext default value which can be changed when configuring a sensor.

Note also that I made changes in scos-actions (NTIA/scos-actions#126) which will result in a default value of /dev/nvme0n1 being used by the SEA action if the environment variable is not provided.

@@ -95,7 +94,7 @@ services:
- SYS_ADMIN # required for ^ with NVMe drives
devices:
- /dev/bus/usb:/dev/bus/usb:rw
- /dev/nvme0n1:/dev/nvme0n1:ro
- ${SSD_DEVICE}:/dev/nvme0n1:ro
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this would work if the SSD_DEVICE is a SATA device which is then mapped to an nvme device in the container? Perhaps it would be better to use ${SSD_DEVICE} for both then pass the SSD_DEVICE environment variable to scos-actions to get the path?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has worked when testing using my Linux laptop with a SATA SSD (/dev/sda on the host)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Environment variables should be used for all configuration
2 participants