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 29 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 map the /dev/nvme0n1 device in the API container, which is used by the SEA edge compute action to get diagnostic SSD SMART data. The default value is dynamically retrieved using the command lsblk -I 8 -npdo KNAME which should work in most cases, and resolves to /dev/nvme0n1 for SEA sensors. This default could cause missing metadata when using the SEA action if the SSD_DEVICE is not an SSD. The default setting will also cause SCOS Sensor to fail to start if multiple devices are returned by lsblk -I 8 -npdo KNAME.

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.

If merged after #289, 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?

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