Skip to content

Commit 104f0b2

Browse files
committed
Merge branch 'main' into fix/dashboard-angular
2 parents c6157ed + e4deac6 commit 104f0b2

File tree

18 files changed

+271
-32
lines changed

18 files changed

+271
-32
lines changed

.github/workflows/fatimage.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ jobs:
118118
. venv/bin/activate
119119
openstack image unset --property signature_verified "${{ steps.manifest.outputs.image-id }}" || true
120120
121+
- name: Set image properties
122+
run: |
123+
. venv/bin/activate
124+
. dev/image-set-properties.sh "${{ steps.manifest.outputs.image-id }}"
125+
121126
- name: Upload manifest artifact
122127
uses: actions/upload-artifact@v4
123128
with:

.github/workflows/main.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ jobs:
143143
name: Trivy scan image for vulnerabilities
144144
needs: files_changed
145145
if: |
146-
github.event_name == 'pull_request' &&
147146
needs.files_changed.outputs.trivyscan == 'true'
148147
uses: ./.github/workflows/trivyscan.yml
149148
secrets: inherit

.github/workflows/s3-image-sync.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ jobs:
168168
. venv/bin/activate
169169
bash .github/bin/get-s3-image.sh ${{ env.TARGET_IMAGE }} ${{ env.S3_BUCKET }}
170170
171+
- name: Set Glance image properties correctly for Slurm images
172+
run: |
173+
. venv/bin/activate
174+
. dev/image-set-properties.sh "${{ env.TARGET_IMAGE }}"
175+
171176
- name: Cleanup OpenStack Image (on error or cancellation)
172177
if: cancelled() || failure()
173178
run: |

.github/workflows/trivyscan.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ jobs:
102102
run: sudo guestmount -a /mnt/images/${{ steps.manifest.outputs.image-name }}.qcow2 -i --ro -o allow_other './${{ steps.manifest.outputs.image-name }}'
103103

104104
- name: Run Trivy vulnerability scanner
105-
uses: aquasecurity/trivy-action@0.24.0
105+
uses: aquasecurity/trivy-action@v0.33.1
106106
with:
107107
scan-type: fs
108108
scan-ref: "${{ steps.manifest.outputs.image-name }}"
@@ -116,13 +116,13 @@ jobs:
116116
TRIVY_DB_REPOSITORY: ghcr.io/azimuth-cloud/trivy-db:2
117117

118118
- name: Upload Trivy scan results to GitHub Security tab
119-
uses: github/codeql-action/upload-sarif@v3
119+
uses: github/codeql-action/upload-sarif@v4
120120
with:
121121
sarif_file: "${{ steps.manifest.outputs.image-name }}.sarif"
122122
category: "${{ matrix.build }}"
123123

124124
- name: Fail if scan has CRITICAL vulnerabilities
125-
uses: aquasecurity/trivy-action@0.24.0
125+
uses: aquasecurity/trivy-action@v0.33.1
126126
with:
127127
scan-type: fs
128128
scan-ref: "${{ steps.manifest.outputs.image-name }}"
@@ -132,6 +132,8 @@ jobs:
132132
severity: 'CRITICAL'
133133
ignore-unfixed: true
134134
timeout: 15m
135+
# On a subsequent call to the action we know trivy is already installed so can skip this
136+
skip-setup-trivy: true
135137
env:
136138
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
137139
TRIVY_DB_REPOSITORY: ghcr.io/azimuth-cloud/trivy-db:2

ansible/roles/cuda/defaults/main.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@
22
# yamllint disable-line rule:line-length
33
cuda_repo_url: "https://developer.download.nvidia.com/compute/cuda/repos/rhel{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/cuda-rhel{{ ansible_distribution_major_version }}.repo"
44
cuda_nvidia_driver_stream: '580-open'
5-
cuda_nvidia_driver_pkg: "nvidia-open-3:580.82.07-1.el{{ ansible_distribution_major_version }}"
5+
cuda_nvidia_driver_version: '580.82.07-1'
6+
cuda_nvidia_driver_pkg: "nvidia-open-3:{{ cuda_nvidia_driver_version }}.el{{ ansible_distribution_major_version }}"
67
cuda_package_version: '13.0.1-1'
78
cuda_version_short: "{{ (cuda_package_version | split('.'))[0:2] | join('.') }}" # major.minor
8-
cuda_packages:
9+
cuda_packages_default:
910
- "cuda-toolkit-{{ cuda_package_version }}"
1011
- nvidia-gds
1112
- cmake
13+
cuda_packages_fabricmanager:
14+
- "nvidia-fabricmanager-{{ cuda_nvidia_driver_version }}"
15+
cuda_packages: "{{ cuda_packages_default + ( cuda_packages_fabricmanager if cuda_install_nvidiafabricmanger | bool else [] ) }}"
1216
cuda_samples_release_url: "https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v{{ cuda_version_short }}.tar.gz"
1317
cuda_samples_path: "/var/lib/{{ ansible_user }}/cuda_samples"
1418
cuda_samples_programs:
1519
- deviceQuery
1620
- bandwidthTest
1721
# cuda_devices: # discovered from deviceQuery run
1822
cuda_persistenced_state: started
23+
cuda_install_nvidiafabricmanger: false

ansible/roles/dnf_repos/tasks/disable_repos.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
loop: "{{ dnf_repos_repos | dict2items }}"
1111
loop_control:
1212
label: "{{ repo_name }}[{{ repo_os }}]: {{ repo_values }}"
13+
when: repo_values | length > 0
1314
vars:
1415
repo_os: "{{ ansible_distribution_version if ansible_distribution_version in item.value else ansible_distribution_major_version }}"
15-
repo_values: "{{ item.value[repo_os] }}"
16+
repo_values: "{{ item.value.get(repo_os, {}) }}"
1617
repo_name: "{{ repo_values.repo_name | default(item.key) }}"
1718
repo_content_url: "{{ repo_values.pulp_content_url | default(dnf_repos_pulp_content_url) }}"
1819

ansible/roles/dnf_repos/tasks/set_repos.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
loop: "{{ dnf_repos_repos | dict2items }}"
1313
loop_control:
1414
label: "{{ repo_name }}[{{ repo_os }}]: {{ repo_values }}"
15-
when: repo_name != 'epel'
15+
when:
16+
- repo_name != 'epel'
17+
- repo_values | length > 0
1618
vars:
1719
repo_os: "{{ ansible_distribution_version if ansible_distribution_version in item.value else ansible_distribution_major_version }}"
18-
repo_values: "{{ item.value[repo_os] }}"
20+
repo_values: "{{ item.value.get(repo_os, {}) }}"
1921
repo_name: "{{ repo_values.repo_name | default(item.key) }}"
2022
repo_content_url: "{{ repo_values.pulp_content_url | default(dnf_repos_pulp_content_url) }}"
2123

@@ -36,9 +38,11 @@
3638
loop: "{{ dnf_repos_repos | dict2items }}"
3739
loop_control:
3840
label: "{{ repo_name }}[{{ repo_os }}]: {{ repo_values }}"
39-
when: repo_name == 'epel'
41+
when:
42+
- repo_name == 'epel'
43+
- repo_values | length > 0
4044
vars:
4145
repo_os: "{{ ansible_distribution_version if ansible_distribution_version in item.value else ansible_distribution_major_version }}"
42-
repo_values: "{{ item.value[repo_os] }}"
46+
repo_values: "{{ item.value.get(repo_os, {}) }}"
4347
repo_name: "{{ repo_values.repo_name | default(item.key) }}"
4448
repo_content_url: "{{ repo_values.pulp_content_url | default(dnf_repos_pulp_content_url) }}"

ansible/roles/eessi/tasks/install.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
- name: Import downloaded GPG key # noqa: no-changed-when
1212
ansible.builtin.command: rpm --import cvmfs-key.gpg # noqa: command-instead-of-module
1313

14-
- name: Add CVMFS repo
15-
ansible.builtin.dnf:
16-
name: "https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-{{ cvmfs_release_version }}.noarch.rpm"
14+
# cvmfs repo provided by dnf_repos role
1715

1816
- name: Install CVMFS
1917
ansible.builtin.dnf:

ansible/roles/openondemand/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ This role enables SSL on the Open Ondemand server, using the following self-sign
7373
- `openondemand_desktop_screensaver`: Optional. Whether to enable screen locking/screensaver. **NB:** Users must have passwords if this is enabled. Bool, default `false`.
7474
- `openondemand_filesapp_paths`: List of paths (in addition to $HOME, which is always added) to include shortcuts to within the Files dashboard app.
7575
- `openondemand_jupyter_partition`: Required. Name of Slurm partition to use for Jupyter Notebook servers. Requires a corresponding group named "openondemand_jupyter" and entry in openhpc_partitions.
76+
- `openondemand_gres_options`: Optional. A list of `[label, value]` items used
77+
to provide a drop-down for resource/GRES selection in application forms. The
78+
default constructs a list from all GRES definitions in the cluster. See the
79+
`option` attribute of the Select Field [form widget](https://osc.github.io/ood-documentation/latest/how-tos/app-development/interactive/form-widgets.html#form-widgets).
7680

7781
### Monitoring
7882

ansible/roles/openondemand/defaults/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ openondemand_osc_ood_defaults:
102102
ood_auth_openidc: "{{ openondemand_auth_defaults.oidc.ood_auth_openidc if (openondemand_auth | lower) == 'oidc' else none }}"
103103
httpd_auth: "{{ openondemand_auth_defaults[openondemand_auth | lower].httpd_auth }}"
104104

105+
# Use repo file provided by dnf_repos by default
106+
ood_use_existing_repo_file: true
107+
108+
# Apps:
105109
openondemand_code_server_version: 4.102.2
106110
openondemand_rstudio_version: 2025.05.1-513
107111
openondemand_matlab_version: ''
112+
# Below is automatically calculated during role run:
113+
openondemand_gres_options: "{{ _openondemand_sinfo_gres.stdout | to_gres_options }}"

0 commit comments

Comments
 (0)