Repository navigation
Release candidate v1.108.0 - #6601
siddhartha-quad wants to merge 83 commits into
Conversation
Co-authored-by: Scott Gordon <scott.gordon@nag.com> Co-authored-by: Scott Gordon <154335392+scott-nag@users.noreply.github.com>
…ult recovery_timeout to 0s on Pathways (#6506)
…/ofe/infrastructure_files/gcs_bucket/webserver (#6517) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…net CIDR collision (#6523)
…nd cloud-router to v9.1+ (#6494)
…elastic-slices is 0 (#6528)
…nd kubernetes-engine to v46.0+ (#6521)
Co-authored-by: Neelabh Goyal <38628079+Neelabh94@users.noreply.github.com>
…-build (#6557) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…JobSet workloads (#6534)
…l PodSpec validation (#6515)
…s and remove stale JobSet annotation (#6586)
…e private-service-access use (#6564)
…ixes on deploy failure, and add --live skill evals (#6587)
…ng gcluster job submit (#6562)
…n the colocated Python sidecar is enabled (#6593)
… from multi-agent bug bash (#6592)
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This release candidate v1.108.0 introduces significant enhancements to the Cluster Toolkit CLI, most notably the new Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new 'gcluster explain' command to discover, inspect, and match cluster specifications to blueprints or modules. It also adds end-to-end blueprints for deploying IBM Spectrum Symphony on GCE and GKE, and large-scale GKE blueprints (up to 5,000 nodes) with Kueue, JobSet, and GCS FUSE/Lustre. Additionally, it parameterizes machine types and storage settings across numerous community examples, improves the robustness of GKE/TPU/GPU orchestration (such as concurrent TPU slice resumes and disk provisioning settings), and updates coding agent guidelines in AGENTS.md. The reviewer's feedback correctly identifies a potential runtime panic in 'inspectCtyVariable' when handling marked or nil 'cty.Value' types, and a potential unhandled 'ValueError' crash in the 'sym_mig_provider.py' script. Both issues should be addressed using the provided code suggestions.
| func inspectCtyVariable(name string, v cty.Value) ExplainVariable { | ||
| if expr, isExpr := config.IsExpressionValue(v); isExpr { | ||
| return inspectExpressionVariable(name, expr) | ||
| } | ||
| if !v.IsKnown() || v.IsNull() { | ||
| return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true} | ||
| } | ||
| return inspectKnownCtyVariable(name, v) | ||
| } |
There was a problem hiding this comment.
When working with cty.Value in Go, explicitly guard against cty.NilVal and unmark values (using .Unmark()) before checking Type(), IsNull(), or IsKnown() to prevent runtime panics. In inspectCtyVariable, calling v.IsKnown() and v.IsNull() directly on v without these guards can lead to a panic if the value is marked or nil.
func inspectCtyVariable(name string, v cty.Value) ExplainVariable {
if v == cty.NilVal {
return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true}
}
v, _ = v.Unmark()
if expr, isExpr := config.IsExpressionValue(v); isExpr {
return inspectExpressionVariable(name, expr)
}
if !v.IsKnown() || v.IsNull() {
return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true}
}
return inspectKnownCtyVariable(name, v)
}References
- When working with cty.Value in Go, explicitly guard against cty.NilVal and unmark values (using .Unmark()) before checking Type(), IsNull(), or IsKnown() to prevent runtime panics.
| try: | ||
| (id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',') | ||
| except ValueError: | ||
| print(f"Error: Invalid format for argument string: '{arg}'", file=sys.stderr) | ||
| print("Expected 8 comma-separated values.", file=sys.stderr) | ||
| continue # Skip this malformed argument | ||
|
|
||
| # Append the template to the list, converting numeric strings to integers | ||
| template_output['templates'].append( | ||
| make_template( | ||
| id=id_str, | ||
| max_num=int(max_str), |
There was a problem hiding this comment.
The conversion int(max_str) is performed outside of the try-except block. If max_str is not a valid integer string, this will raise an unhandled ValueError and crash the script. It is safer to parse and convert max_str within the try-except block to handle any malformed input gracefully.
| try: | |
| (id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',') | |
| except ValueError: | |
| print(f"Error: Invalid format for argument string: '{arg}'", file=sys.stderr) | |
| print("Expected 8 comma-separated values.", file=sys.stderr) | |
| continue # Skip this malformed argument | |
| # Append the template to the list, converting numeric strings to integers | |
| template_output['templates'].append( | |
| make_template( | |
| id=id_str, | |
| max_num=int(max_str), | |
| try: | |
| (id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',') | |
| max_num = int(max_str) | |
| except ValueError: | |
| print(f"Error: Invalid format or non-integer maxNumber in argument string: '{arg}'", file=sys.stderr) | |
| print("Expected 8 comma-separated values with an integer for maxNumber.", file=sys.stderr) | |
| continue # Skip this malformed argument | |
| # Append the template to the list, converting numeric strings to integers | |
| template_output['templates'].append( | |
| make_template( | |
| id=id_str, | |
| max_num=max_num, |
…ncrease A4 NCCL timeout (#6599)
Release candidate v1.108.0