Skip to content

make bosh release compatible with Resolute#2755

Open
mkocher wants to merge 2 commits into
mainfrom
resolute-compat-fixes
Open

make bosh release compatible with Resolute#2755
mkocher wants to merge 2 commits into
mainfrom
resolute-compat-fixes

Conversation

@mkocher

@mkocher mkocher commented Jun 26, 2026

Copy link
Copy Markdown
Member

Summary

  • workers now use BPM!
  • libpq is compiled from postgres-15 - it used to be compiled from postgres-10 which does not compile on Resolute. Otto says the line protocol has not changed, so compiling the client with the newest version is not a problem
  • update mysql compile to not treat discarded-qualifiers as an error, which was upgraded from a warning to an error in gcc

Please provide contextual information.

What tests have you run against this PR?

Compiled and deployed a director

How should this change be described in bosh release notes?

Bosh Director can now be deployed on a Resolute Raccoon stemcell

Does this PR introduce a breaking change?

Yes. Workers using BPM will require Docker CPI users to set a new property - cpi_additional_volumes - to allow workers to access a docker socket.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e36b909a-2059-49b3-9588-a6e6f4c5aa28

📥 Commits

Reviewing files that changed from the base of the PR and between 850eefe and d472240.

📒 Files selected for processing (1)
  • config/blobs.yml

Walkthrough

The PR removes the PostgreSQL 10 blob entry, updates libpq package selection and build steps to PostgreSQL 15, adds a new director worker entrypoint and BPM process definitions, changes director monit to start and stop workers through bpm, removes legacy worker control and ps utility scripts, and adjusts MariaDB Connector/C build flags for SSL verification and GCC 15 warnings.

Suggested reviewers

  • rkoster
  • selzoc
  • a-hassanin
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main goal of making the release compatible with Resolute.
Description check ✅ Passed The description covers summary, context, tests, release notes, and breaking change.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch resolute-compat-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@jobs/director/templates/bpm.yml`:
- Around line 42-59: The worker queue assignment in the template loop currently
leaves non-status workers subscribed to urgent in dedicated-status mode, so only
the first worker is isolated. Update the queue selection logic in the bpm.yml
worker process generation to use worker_1 for urgent-only and ensure the
remaining workers are set to normal when director.enable_dedicated_status_worker
is enabled and director.workers > 1, while preserving normal,urgent for the
non-dedicated case.

In `@packages/mysql/packaging`:
- Around line 11-14: Keep SSL certificate verification enabled in the mysql
packaging defaults and remove the DEFAULT_SSL_VERIFY_SERVER_CERT=0 override from
the connector build flags. Update the packaging logic around the
mysql2/mariadb-connector-c compatibility path so the GCC 15 CMAKE_C_FLAGS
workaround stays, but the TLS verification behavior is left secure by default in
the packaging/consumer layer.
- Line 12: The packaging command is overwriting the toolchain’s existing C flags
with a new CMAKE_C_FLAGS value, which discards any preconfigured hardening or
architecture flags. Update the MySQL packaging setup to append the
discarded-qualifiers workaround instead of replacing the base flags, using the
packaging command path that sets the CMake flags so existing CFLAGS are
preserved.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ea4448c9-0e1f-46b2-89bd-981ceb862c35

📥 Commits

Reviewing files that changed from the base of the PR and between e374eb2 and 83baef2.

📒 Files selected for processing (9)
  • config/blobs.yml
  • jobs/director/monit
  • jobs/director/spec
  • jobs/director/templates/bpm.yml
  • jobs/director/templates/worker
  • jobs/director/templates/worker_ctl.erb
  • packages/libpq/packaging
  • packages/libpq/spec
  • packages/mysql/packaging
💤 Files with no reviewable changes (2)
  • jobs/director/templates/worker_ctl.erb
  • config/blobs.yml

Comment thread jobs/director/templates/bpm.yml
Comment thread packages/mysql/packaging
Comment thread packages/mysql/packaging Outdated
@github-project-automation github-project-automation Bot moved this from Inbox to Waiting for Changes | Open for Contribution in Foundational Infrastructure Working Group Jun 26, 2026
aramprice
aramprice previously approved these changes Jun 26, 2026

@aramprice aramprice left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

seems like a reasonable change.

@mkocher

mkocher commented Jun 28, 2026

Copy link
Copy Markdown
Member Author

I've updated the description, but figured I should leave a comment - moving director workers to using BPM will require Docker CPI users to set a new property - cpi_additional_volumes - to allow workers to access a docker socket.

I considered giving up on BPM for workers, but since this only affects docker users and can be added to the bosh-deployment ops file it seems worth the short term pain.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@jobs/director/templates/bpm.yml`:
- Around line 54-57: The worker process definition in the BPM template is now
passing the BPM-style name instead of the legacy worker name to the binary.
Update the `worker` entry so the BPM process can still be named
`worker_#{index}`, but the `args` passed to `bosh-director-worker` should
preserve the legacy `worker-#{index}` identifier expected by the ps/drain
matching path. Use the `worker` hash in `jobs/director/templates/bpm.yml` as the
fix point and keep the child process command line compatible with the existing
`ps_utils` expectations.

In `@jobs/director/templates/worker`:
- Around line 5-9: The worker template is pointing PATH at an undeclared
Postgres package, which can reference a package directory the job does not
install. Update the PATH setup in the worker template to use the declared
package that actually provides the Postgres client binaries, and keep the
LD_LIBRARY_PATH consistent with that same package; use the existing
POSTGRES_PACKAGE and the worker template variables to locate and correct the
package reference.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 425b3b6f-e693-4b7a-bbee-0f01dafcbd7b

📥 Commits

Reviewing files that changed from the base of the PR and between 83baef2 and 585709a.

📒 Files selected for processing (10)
  • config/blobs.yml
  • jobs/director/monit
  • jobs/director/spec
  • jobs/director/templates/bpm.yml
  • jobs/director/templates/worker
  • jobs/director/templates/worker_ctl.erb
  • packages/libpq/packaging
  • packages/libpq/spec
  • packages/mysql/packaging
  • spec/director_templates_spec.rb
💤 Files with no reviewable changes (2)
  • jobs/director/templates/worker_ctl.erb
  • config/blobs.yml

Comment thread jobs/director/templates/bpm.yml
Comment thread jobs/director/templates/worker Outdated
@mkocher mkocher force-pushed the resolute-compat-fixes branch from 585709a to 58cb063 Compare June 28, 2026 06:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@spec/director_templates_spec.rb`:
- Around line 551-591: The CPI unrestricted_volumes assertion only covers
worker_* processes, but the same bpm.yml logic also applies to
dynamic_disks_worker_* processes. Extend the spec in director_templates_spec.rb
to set dynamic_disks_workers to a positive value and add an expectation on a
dynamic_disks_worker process that it includes the CPI job mount (and any
additional CPI volumes if relevant), using the existing worker_process helper
and rendered process lookup to keep the coverage aligned with the director
template behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ca16b828-29c4-4bd8-8371-334d158b7a0a

📥 Commits

Reviewing files that changed from the base of the PR and between 585709a and 58cb063.

📒 Files selected for processing (13)
  • config/blobs.yml
  • jobs/director/monit
  • jobs/director/spec
  • jobs/director/templates/bpm.yml
  • jobs/director/templates/ps_utils.sh
  • jobs/director/templates/worker
  • jobs/director/templates/worker_ctl.erb
  • packages/libpq/packaging
  • packages/libpq/spec
  • packages/mysql/packaging
  • spec/director_templates_spec.rb
  • spec/support/ps_utils_tests.sh
  • spec/utils_spec.rb
💤 Files with no reviewable changes (5)
  • spec/utils_spec.rb
  • config/blobs.yml
  • jobs/director/templates/worker_ctl.erb
  • jobs/director/templates/ps_utils.sh
  • spec/support/ps_utils_tests.sh

Comment thread spec/director_templates_spec.rb
* workers now use BPM!
* workers using BPM will require Docker CPI users to set a new property - cpi_additional_volumes - to allow workers to access a docker socket
* libpq is compiled from postgres-15 - it used to be compiled from postgres-10
which does not compile on Resolute. Otto says the line protocol has not
changed, so compiling the client with the newest version is not a problem
* update mysql compile to not treat discarded-qualifiers as an error, which was upgraded from a warning to an error in gcc
@mkocher mkocher force-pushed the resolute-compat-fixes branch from 58cb063 to 850eefe Compare June 28, 2026 06:59

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@jobs/director/templates/bpm.yml`:
- Line 8: The `director.cpi_additional_volumes` value used by the `bpm.yml`
template can be `nil`, which breaks later `extra_volumes.map(&:dup)` processing
during rendering. Normalize the value right where `extra_volumes` is assigned in
the template logic so `nil` becomes an empty array, keeping the property
optional and preventing deployment failures. Use the existing `extra_volumes`
handling in the `bpm.yml` template as the place to apply this defaulting.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2f98c087-2122-4d78-8f54-e6f682bff2df

📥 Commits

Reviewing files that changed from the base of the PR and between 58cb063 and 850eefe.

📒 Files selected for processing (13)
  • config/blobs.yml
  • jobs/director/monit
  • jobs/director/spec
  • jobs/director/templates/bpm.yml
  • jobs/director/templates/ps_utils.sh
  • jobs/director/templates/worker
  • jobs/director/templates/worker_ctl.erb
  • packages/libpq/packaging
  • packages/libpq/spec
  • packages/mysql/packaging
  • spec/director_templates_spec.rb
  • spec/support/ps_utils_tests.sh
  • spec/utils_spec.rb
💤 Files with no reviewable changes (5)
  • spec/utils_spec.rb
  • spec/support/ps_utils_tests.sh
  • jobs/director/templates/worker_ctl.erb
  • config/blobs.yml
  • jobs/director/templates/ps_utils.sh

Comment thread jobs/director/templates/bpm.yml
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 29, 2026
@github-project-automation github-project-automation Bot moved this from Waiting for Changes | Open for Contribution to Pending Merge | Prioritized in Foundational Infrastructure Working Group Jun 29, 2026
Comment thread packages/libpq/packaging
Comment on lines +3 to +4
tar xzf postgres/postgresql-15.*.tar.gz
cd postgresql-15*

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can / should we keep the more generic postgresql-*.tar.gz so that we don't have to update this each time we bump PostgreSQL?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Hmmm, does the cd break since there are postgres-13 and postgres-15 blobs?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think that packages/libpq/spec will restrict which package blob gets included, so the more generic glob is ok.

... updated my comment below

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I guess this one can change as long as libpq spec only has one postgres blob specified

Comment thread packages/libpq/spec
name: libpq
files:
- postgres/postgresql-10.*.tar.gz
- postgres/postgresql-15.*.tar.gz

@aramprice aramprice Jun 29, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same as https://github.com/cloudfoundry/bosh/pull/2755/changes#r3493630463 this needs to be specific so that only one postgresql version is included

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Pending Merge | Prioritized

Development

Successfully merging this pull request may close these issues.

2 participants