Skip to content

Add cluster-init hooks for chefless PBS Pro - #98

Open
Jelena Gvero (jgvero32) wants to merge 18 commits into
masterfrom
jelena/hooks-pbspro
Open

Jelena Gvero (jgvero32) wants to merge 18 commits into
masterfrom
jelena/hooks-pbspro

Conversation

@jgvero32

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Critical release, packaging, and CentOS 7 compatibility blockers remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds role-aware cluster-init hooks for chefless PBS Pro and updates Python 3.11, API, and containerized packaging workflows.

Changes:

  • Adds shared server, login, and execute hook handling.
  • Removes legacy role-specific stages and tests.
  • Updates templates, credentials, packaging, and release tooling.
File summaries
File Summary
util/Dockerfile Defines the Python 3.11 packaging image.
util/build.sh Runs containerized builds; stale dist/ handling is critical (2 votes), and the local scalelib path is dropped (moderate, 2 votes).
util.py Adjusts API wheel download handling.
templates/openpbs.txt Adds role and node configuration.
specs/server/cluster-init/tests/tryme.py Removes the legacy test helper.
specs/server/cluster-init/tests/test_submit.py Removes the legacy integration test.
specs/server/cluster-init/tests/helper.py Removes legacy test utilities.
specs/login/cluster-init/tests/test_execute.py Removes the login test.
specs/login/cluster-init/stages/install.sh Removes the legacy login installation stage.
specs/execute/cluster-init/tests/test_execute.py Removes the execute test.
specs/execute/cluster-init/stages/activate.sh Removes the legacy execute activation stage.
specs/default/cluster-init/roles/server-install.sh Updates server setup.
specs/default/cluster-init/roles/login-install.sh Adds login-node setup.
specs/default/cluster-init/roles/execute-install.sh Adds execute-node setup.
specs/default/cluster-init/install-hook.sh Dispatches installation by role.
specs/default/cluster-init/files/utils.sh Removes obsolete hostname discovery.
specs/default/cluster-init/files/skel.sh Installs demo files.
specs/default/cluster-init/files/hwlocs-install.sh Adds shared initialization dependencies.
specs/default/cluster-init/configure-hook.sh Adds role-specific configuration.
specs/default/cluster-init/activate-hook.sh Starts PBS on execute nodes.
README.md Simplifies autoscaler credential handling.
project.ini Updates the API wheel manifest; its release asset mismatch is critical (1 vote).
package.sh Adds packaging entry points.
package.py Updates the API dependency; its workflow version mismatch is critical (2 votes).
install.sh Requires Python 3.11; CentOS 7 compatibility is critical (2 votes).
generate_autoscale_json.sh Makes credentials optional.
docker-rpmbuild.sh Switches the RPM build image.
docker-package.sh Adds Docker/Podman packaging; non-interactive -ti usage is moderate (1 vote).
build.sh Adds venv validation; the unqualified Python interpreter is moderate (2 votes).
.gitignore Ignores build logs.
.github/workflows/release.yml Uses AlmaLinux release builds; missing container runtime is critical (3 votes), and Python command availability is moderate (1 vote).
Review details

Suppressed comments (2)

.github/workflows/release.yml:21

  • build.sh still invokes python3 -m venv and python3 -m pip, but this prerequisite step installs only python3.11 and python3.11-pip. The minimal AlmaLinux image does not provide the unversioned python3 command by default, so the job can fail before reaching the container build. Install the interpreter/pip names that build.sh invokes or update that script to use 3.11 consistently.
          dnf install -y python3.11 python3.11-pip git tar gzip which findutils

docker-package.sh:80

  • This command is always run non-interactively by the release build, but -ti requests an attached terminal. Docker/Podman can reject this with the input device is not a TTY before util/build.sh runs; the build does not read stdin, so the TTY flags should be removed.
  $runtime run --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$(pwd):${local_azpbs}" $runtime_args $extra_args -ti azpbs_build:latest /bin/bash ${local_azpbs}/util/build.sh $local_scalelib
  • Files reviewed: 29/31 changed files
  • Comments generated: 7
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

sudo apt update || apt update
sudo apt-get install -y python3 python3-pip || apt-get install -y python3 python3-pip
./build.sh
run: ./build.sh
Comment thread install.sh
if [ $? != 0 ]; then
if [ $INSTALL_PYTHON3 == 1 ]; then
yum install -y -q python3 || exit 1
yum install -y -q python3.11 || exit 1
Comment thread package.py
Comment thread project.ini
Comment thread util/build.sh
cd $SOURCE
rm -f dist/*
./package.sh
mv dist/* blobs/
Comment thread build.sh
if [ -z "$(find . -path ./venv/created -mtime -7 -print -quit)" ] ||
! venv/bin/python -c 'import sys; raise SystemExit(sys.version_info < (3, 11))' 2>/dev/null; then
rm -rf venv
python3 -m venv venv
Comment thread util/build.sh

cd $SOURCE
rm -f dist/*
./package.sh
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.

3 participants