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

Exclude Filestore module from integration test #2725

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@
awk -F'"' '{print $2}'

## Create cluster
- name: Run Pre Create Tasks
ansible.builtin.include_tasks: "{{ pre_create_task }}"
loop: "{{ pre_create_tasks | default([]) }}"
loop_control:
loop_var: pre_create_task

- name: Create Deployment Directory
ansible.builtin.include_tasks:
file: tasks/create_deployment_directory.yml
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
- name: Assert variables are defined
ansible.builtin.assert:
that:
- workspace is defined
- blueprint_yaml is defined
- custom_vars.modules_to_remove is defined

- name: Remove modules
ansible.builtin.command: "{{ workspace }}/tools/cloud-build/daily-tests/remove_module.py --blueprint {{ blueprint_yaml }} --module {{ module_to_remove }}"
loop: "{{ custom_vars.modules_to_remove }}"
loop_control:
loop_var: module_to_remove
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@
awk -F'"' '{print $2}'

## Create cluster
- name: Run Pre Create Tasks
ansible.builtin.include_tasks: "{{ pre_create_task }}"
loop: "{{ pre_create_tasks | default([]) }}"
loop_control:
loop_var: pre_create_task

- name: Create Deployment Directory
ansible.builtin.include_tasks:
file: tasks/create_deployment_directory.yml
Expand All @@ -53,7 +59,7 @@
loop_control:
loop_var: pre_deploy_task

- name: Create Cluster with GHPC
- name: Deploy Cluster with GHPC
register: deployment
changed_when: deployment.changed
ansible.builtin.command: ./ghpc deploy {{ deployment_name }} --auto-approve
Expand Down
52 changes: 52 additions & 0 deletions tools/cloud-build/daily-tests/remove_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env python3
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import yaml # pip install pyyaml

def delete_module(bp, mod_id: str):
Copy link
Collaborator

Choose a reason for hiding this comment

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

If we print to console in this method, will it show up in CloudBuild logs? If so, I think it would be really helpful to see in the logs exactly which modules were removed from the blueprint. It would also be really helpful to see two more artifacts:

  1. Original blueprint
  2. Modified blueprint

Maybe we could save them in GCS and reference them in our CloudBuild yaml like this?
https://cloud.google.com/build/docs/building/store-artifacts-in-cloud-storage

At the very least, for this PR, it would be good to print the blueprint before and after modification to the log.

for g in bp["deployment_groups"]:
for im, m in enumerate(g["modules"]):
if m["id"] == mod_id:
del g["modules"][im]
return
raise RuntimeError(f"Module {mod_id} not found")

def update_bp(bp, mod_id: str):
delete_module(bp, mod_id)
# remove module from "use"
for g in bp["deployment_groups"]:
for m in g["modules"]:
if mod_id in m.get("use", []):
m["use"].remove(mod_id)
# TODO:
# - move all settings of removed module into some "/dev/null" to prevent
# "variable not used" validation errors
# - handle references to removed module (e.g. raise error if referenced)

def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--blueprint", required=True, type=str)
parser.add_argument("--module", required=True, type=str, help="Module ID to remove")
args = parser.parse_args()

with open(args.blueprint) as yf:
bp = yaml.safe_load(yf)
update_bp(bp, mod_id=args.module)
with open(args.blueprint, "w") as yf:
yaml.dump(bp, yf)

if __name__ == "__main__":
main()
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,22 @@ deployment_name: "slm-crd-{{ build }}"
slurm_cluster_name: "slmcrd{{ build[0:4] }}"
zone: europe-west1-d
cli_deployment_vars:
network_name: "{{ network }}"
region: europe-west1
zone: "{{ zone }}"
workspace: /workspace
blueprint_yaml: "{{ workspace }}/community/examples/hpc-slurm-chromedesktop-v5-legacy.yaml"
network: "{{ test_name }}-net"
network: "{{ deployment_name }}-net"
# Note: Pattern matching in gcloud only supports 1 wildcard.
login_node: "{{ slurm_cluster_name }}-login-*"
controller_node: "{{ slurm_cluster_name }}-controller"
pre_create_tasks:
- pre-create-tasks/remove-modules.yml
post_deploy_tests:
- test-validation/test-mounts.yml
- test-validation/test-crd.yml
custom_vars:
mounts:
- /home
modules_to_remove:
- homefs
partitions:
- desktop
- compute
Expand Down
9 changes: 5 additions & 4 deletions tools/cloud-build/daily-tests/tests/slurm-v6-rocky8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,24 @@ deployment_name: "rock-8-{{ build }}"
slurm_cluster_name: "rock8{{ build[0:5] }}"

cli_deployment_vars:
network_name: "{{ network }}"
region: us-west4
zone: us-west4-c

zone: us-west4-c
workspace: /workspace
blueprint_yaml: "{{ workspace }}/examples/hpc-slurm.yaml"
network: "{{ test_name }}-net"
network: "{{ deployment_name }}-net"
# Note: Pattern matching in gcloud only supports 1 wildcard, a*-login-* won't work.
login_node: "{{ slurm_cluster_name }}-slurm-login-*"
controller_node: "{{ slurm_cluster_name }}-controller"
pre_create_tasks:
- pre-create-tasks/remove-modules.yml
post_deploy_tests:
- test-validation/test-mounts.yml
- test-validation/test-partitions.yml
custom_vars:
modules_to_remove:
- homefs
partitions:
- compute
- debug
mounts:
- /home
Loading