Skip to content

Issue 4664 allow a custom default version for a tool - #4665

Merged
SilinPavel merged 17 commits into
issue_4656/pin_run_image_digestfrom
issue_4664/default_tool_version
Nov 6, 2026
Merged

SilinPavel merged 17 commits into
issue_4656/pin_run_image_digestfrom
issue_4664/default_tool_version

Conversation

@sidoruka

@sidoruka sidoruka commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Implements #4664
Related to #4660 — this branch is based on issue_4656/pin_run_image_digest, so it shall be merged after #4660.

Any version of a tool can be set as its default version, which is used in place of latest. Users with the WRITE permission set and remove it at the Versions tab (POST /tool/{id}/defaultVersion?version=, DELETE /tool/{id}/defaultVersion; /tool/update does not touch it). An image without a tag resolves to the default version, else latest, from the tool record only, with no registry call (see the comment on #4664); the GUI and the VS Code extension pre-select the default version if it exists, else latest, else the only version, and always send an explicit tag. A tool without a default version behaves as before. Symlinks use the default version of the original tool. Deleting the default version, or another version of the same image (same digest), removes it, and the delete confirmation warns about both.

The tool platform, the registry tree OS and the GPU tool detection, which were joined on latest, follow the default version too. Fixed on the way: an endless recursion in the launch form parameters fallback (version[0] instead of versions[0]) and the AI chat launch form defaultTag getter (fotmStore). The vscode-cloud-pipeline module gets a test runner (npm test, the Node 20 test runner, no new dependencies).

A commit no longer pushes latest into a tool, which has a default version set (commit_run.sh asks the new commit_run.py idvs only when latest is missing; an older pipe-common, which does not know idvs, answers nothing, and latest is pushed as before). The new version gets the settings of the default version of the run's tool, not always those of latest; a commit into the run's own version, or into that default version, copies nothing, as a commit into latest did. pipe-common's Tool carries default_version, which is not sent back in to_json.

The commits are split by area: API and core, GUI, CLI, VS Code extension, the commit scripts and pipe-common, docs, and the manual UI test cases (docs/testcases/UI/Tools/4664_default_version, 4664_1 to 4664_12, indexed in GUI_tests.md; 4419_1, 4419_5 and 2323_1 now name the default version where they relied on latest).

Test plan

  • :api:test, the whole suite, against PostgreSQL 16.4 as in CI: 4172 tests, 0 failures, 42 skipped; checkstyle and PMD of api and core
  • :core:test, :notifier:smtp:test
  • client: npm test (333 tests), npm run lint and npm run stylelint (no new problems; the lint baseline shrank)
  • pipe-cli on Python 2.7: the new tests pass; tests/test_pipe.py, tests/api fail the same 10 tests as on the base commit
  • vscode-cloud-pipeline: npm test (compile and 5 tests)
  • workflows/pipe-common, pytest on Python 3.12: 383 passed; on Python 2.7: 381 passed, and the 2 test_scale_down.py failures known on develop. The new tests cover commit_run.py, the API client's Tool, and commit_run.sh itself, run with stubs (test_commit_run_script.py); 20 of their 27 fail without the change
  • Reviews of the diff by separate agents; their findings are fixed, with tests (3 on the first change, 5 on the test cases, 4 on the commit fix, 2 on the delete warning)
  • Live on a dev sandbox (Kubernetes 1.15.4 on AWS), with the API of this branch: setting a missing version is refused; with the default 7, then v2, a run of library/centos without a tag got centos:7, then centos:v2, and the v2 run succeeded on its own node (the registry has no latest); deleting the default version clears it, and a delete the registry refuses keeps it
  • The GUI in headless Chromium against that API: the default label and its tooltips, set / remove default, the Settings tab alerts, the launch form and its image browser preselecting v2 (default), the delete warning and the deletion. Two messages fixed after it (7d2613c)
  • The delete warning in headless Chromium, on a sandbox tool with versions a and b of one image and c of another, default a: deleting b warns that a refers to the same image, c has no warning, a has the plain one; deleting b removed a too and cleared the default
  • Commit through the platform, on a sandbox with Issue 4657 dev sandbox: support commit, pause and the other node SSH operations of a run #4662's commit fixes merged in locally and this branch's pipe-common served to the nodes: a run without a tag, with the default 7, committed into v3 pushed no latest and logged tool has a default version set, latest version will not be created, and v3 got the settings of 7; with the default removed, a commit into v4 created latest, as before
  • pipe run live: no Python 3 image here for this branch's pipe
  • The manual UI test cases 4664_1 to 4664_12 on a deployment
  • Screenshots of the new controls in the manual

🤖 Generated with Claude Code

sidoruka and others added 6 commits October 16, 2026 08:01
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…ension

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
sidoruka and others added 7 commits October 16, 2026 11:47
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
… a tool

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…a default version

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…s image deletes the default one

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…sion of the default version's image

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…ult version's image

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
rodichenko and others added 3 commits November 6, 2026 10:24
…g and the launch form settings, drop stale default settings, name the fallback version in the deletion warning

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
…of a tool without the latest version

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
@rodichenko

Copy link
Copy Markdown
Contributor

Pushed 3 commits with GUI review fixes and the agreed behaviour of the default version controls.

Behaviour of the Versions tab (agreed)

  • Every version row has the default version button (a check in a circle), unscanned versions too. It comes first, before Configure access.
  • The button is filled only for the version set as the default one (the tool's defaultVersion), and outlined for all others.
  • A click always asks for a confirmation: set as default, or unset.
  • The default label is shown only for the version set as the default one. While none is set, the latest (or the only) version is still used, but it has no label, and its button is outlined.
  • If the default version no longer exists in the registry, a warning above the list says so and has an Unset button. Users without WRITE, and tool links, see the warning without the button.
  • The image pickers (the launch form and the versioned storage launch) show (default) only for a version set as the default one. While none is set, they still select latest (or the only version) first.

Fixes

  • The tool page no longer keeps the settings of the old default version, once the tool has no default version.
  • A hot node pool image without a tag selects the default version, not latest. A reopened pool dialog no longer crashes on it.
  • The launch form loads the settings of the default version for an image without a tag, not of the first version.
  • The delete warning names what is used next: the latest version, the only version left, or none.

Docs and test cases

  • 10.4._Edit_a_Tool.md and the release notes follow the new behaviour.
  • The 4664 test cases are updated. 4664_13 is new: deleting the default version of a tool without latest. 4664_11 also checks the warning for a user without WRITE and for a tool link. 2323_1, 4419_1 and 4419_5 have the new wording.

Checks

  • client: npm test passed (340 tests). npm run lint and npm run stylelint show no new problems.
  • A separate agent reviewed the diff. Its findings are fixed.
  • Not done: a live check against an API built from this branch. The dev deployment used here has no default version support.

Commits:

@SilinPavel
SilinPavel marked this pull request as ready for review November 6, 2026 12:04
@SilinPavel
SilinPavel merged commit d96d5a4 into issue_4656/pin_run_image_digest Nov 6, 2026
SilinPavel added a commit that referenced this pull request Nov 6, 2026
* Issue 4656 pin run pod images by docker image digest

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4656 show the run's docker image digest in the GUI

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4656 show the run's docker image digest in pipe view-runs

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Docs: Issue 4656 describe pinning a run to the docker image digest

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4656 add UI testcases for the docker image digest pinning

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4656 share the docker image digest check between the run pages

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4656 pin run image digest: refactor to have resolveImageDigest as part of ToolManager

* Issue 4656 reuse digest during restart a run

* Issue 4664 allow a custom default version for a tool (#4665)

* Issue 4664 allow a custom default version for a tool

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 set, show and use the default version of a tool in the GUI

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 launch the default version of a tool from pipe run

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 preselect the default version of a tool in the VS Code extension

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Docs: Issue 4664 describe the default version of a tool

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 add UI testcases for the default version of a tool

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 fix the spacing and wording of the default version messages

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 update the UI testcases affected by the default version of a tool

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 do not push the latest version on commit into a tool with a default version

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Docs: Issue 4664 describe a commit into a tool with a default version

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 warn that deleting another version of the default version's image deletes the default one

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 expect the deletion warning in the testcase of another version of the default version's image

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Docs: Issue 4664 the deletion warning for another version of the default version's image

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 GUI: use the default version for a pool image without a tag and the launch form settings, drop stale default settings, name the fallback version in the deletion warning

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Docs: Issue 4664 the version used once the default version is deleted

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 testcases for the deletion warning of the default version of a tool without the latest version

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>

* Issue 4664 default tool version: refactor

---------

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Mikhail Rodichenko <Mikhail_Rodichenko@epam.com>
Co-authored-by: Pavel Silin <pavel_silin@epam.com>

* issue 4656 fix for defaultVersion after merge

---------

Co-authored-by: Cloud Pipeline Agent (Claude Opus 5.5) <noreply@epam.com>
Co-authored-by: Mikhail Rodichenko <Mikhail_Rodichenko@epam.com>
Co-authored-by: Pavel Silin <pavel_silin@epam.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

intel/artificial 🤖 Items created by/with a help of AI agents

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants