Skip to content

[ci] Speculative s2i watcher deploy via OpenStackVersion - #443

Open
rebtoor wants to merge 1 commit into
mainfrom
feature/s2i-speculative-test
Open

[ci] Speculative s2i watcher deploy via OpenStackVersion#443
rebtoor wants to merge 1 commit into
mainfrom
feature/s2i-speculative-test

Conversation

@rebtoor

@rebtoor rebtoor commented Aug 21, 2026

Copy link
Copy Markdown

Summary

  • Add watcher-s2i-content-provider and watcher-s2i-tempest. The tempest job applies s2i-built watcher images to OpenStackVersion during edpm_prepare (cifmw_set_containers_images), not via a late pre_tests patch.
  • Fold those jobs into the existing opendev-watcher-edpm-pipeline so RDO config does not need a second template. The s2i jobs are limited to watcher/ source paths so python-watcherclient and watcher-tempest-plugin keep EDPM-only.
  • On github-check, run watcher-s2i-content-provider for watcher/watcher-base and watcher-s2i-tempest after the non-meta operator content provider.
  • Configure watcher-s2i-tempest with the same cifmw_extras as watcher-operator-base (edpm.yml telemetry/notifications + watcher-tempest.yml) and pin tempest to quay.io/openstack-k8s-operators/openstack-tempest:master-latest so tests use Prometheus instead of the antelope image's Gnocchi client.

Test plan

  • github-check schedules watcher-s2i-content-provider and watcher-s2i-tempest
  • Gerrit openstack/watcher check picks up the s2i jobs from opendev-watcher-edpm-pipeline with no extra project stanza in rdo config
  • python-watcherclient / watcher-tempest-plugin do not run the s2i jobs
  • watcher-s2i-tempest uses optimize.datasource = prometheus and the master-latest tempest image (not podified-antelope-centos9)

Depends-On: openstack-k8s-operators/ci-framework#4131

@openshift-ci
openshift-ci Bot requested review from dprince and stuggi August 21, 2026 14:14
@openshift-ci

openshift-ci Bot commented Aug 21, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign rlandy for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 1f716b54-a070-47a1-a950-0e1191263941

📥 Commits

Reviewing files that changed from the base of the PR and between 6c158b4 and 6f1c29b.

📒 Files selected for processing (1)
  • .zuul.yaml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Summary by CodeRabbit

  • CI/CD Improvements
    • Added speculative deployment testing for Watcher images built with Source-to-Image.
    • Updated validation and KUTTL tests to use the appropriate operator content provider.
    • Enhanced EDPM pipeline coverage with S2I content and deployment checks.
    • Limited Watcher image builds to the relevant base image in project checks.
    • Improved pipeline-specific provider selection and validation configuration.

Walkthrough

The Zuul configuration changes content-provider selection and adds speculative S2I Watcher image deployment jobs. GitHub-check and EDPM pipelines now wire operator content builds, S2I jobs, path filters, dependencies, and validation settings.

Changes

Watcher S2I validation

Layer / File(s) Summary
Content-provider selection
.zuul.yaml
Validation and KUTTL jobs use pipeline-specific content providers.
Speculative S2I deployment job
.zuul.yaml
The new job prepares speculative S2I Watcher images, sets the registry address, preserves unlisted containers, and maps custom images with cifmw_set_containers_images.
Pipeline job wiring
.zuul.yaml
GitHub-check and EDPM pipelines add operator-only content builds, non-voting S2I jobs, speculative deployment jobs, path filters, dependencies, and validation settings.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to 6f1c2

This change updates CI scheduling for speculative watcher deployments. No actionable merge-blocking risk remains based on the supplied evidence; it is merge-ready after normal checks.

Sequence Diagram(s)

sequenceDiagram
  participant Pipeline as Zuul pipeline
  participant Provider as Content provider
  participant S2I as S2I image job
  participant Deploy as Speculative deployment
  Pipeline->>Provider: Build operator or S2I content
  Pipeline->>S2I: Run watcher/watcher-base image build
  Provider->>Deploy: Provide registry content
  S2I->>Deploy: Provide speculative Watcher images
  Deploy->>Deploy: Apply set_containers image mappings
Loading

Suggested reviewers: amoralej

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
Title check ✅ Passed The title clearly identifies the main change: speculative S2I Watcher deployment through OpenStackVersion.
Description check ✅ Passed The description directly explains the S2I content-provider and deployment changes, pipeline integration, path restrictions, and test plan.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/s2i-speculative-test

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

@centosinfra-prod-github-app

Copy link
Copy Markdown

Merge Failed.

This change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.
Warning:
Error merging github.com/openstack-k8s-operators/watcher-operator for 443,e58c22706abe07191dee4c83df0047122e2e876f

Comment thread .zuul.yaml
@rebtoor
rebtoor force-pushed the feature/s2i-speculative-test branch from e58c227 to 90bbf62 Compare August 21, 2026 14:18
@rebtoor
rebtoor force-pushed the feature/s2i-speculative-test branch from 90bbf62 to 7d3b880 Compare August 21, 2026 14:25
@rebtoor

rebtoor commented Aug 21, 2026

Copy link
Copy Markdown
Author

the pre-commit fix is ready but i will wait for the pipeline to end first :)

Comment thread .zuul.yaml
Comment thread .zuul.yaml Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

once the s2i provider is workign this can be reverted to the non meta version as well as it will only need to build the operator iamges

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/895669cd7b9c4be98efc94a462ba6033

✔️ openstack-meta-content-provider-master SUCCESS in 3h 05m 40s
✔️ watcher-operator-validation-master SUCCESS in 2h 23m 02s
✔️ noop SUCCESS in 0s
watcher-operator-kuttl RETRY_LIMIT in 6m 46s
✔️ s2i-openstack-container-content-provider SUCCESS in 1h 21m 56s (non-voting)
s2i-speculative-deploy-test-watcher FAILURE in 29m 55s (non-voting)

@rebtoor

rebtoor commented Aug 24, 2026

Copy link
Copy Markdown
Author

recheck

@rebtoor
rebtoor force-pushed the feature/s2i-speculative-test branch from 6f1c29b to e33a358 Compare August 24, 2026 15:23
@rebtoor

rebtoor commented Aug 24, 2026

Copy link
Copy Markdown
Author

@SeanMooney it works kinda well I guess :)

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/logs//446/rdoproject.org/4462fe3ffce347febe61aab68ec091c1/controller/ci-framework-data/logs/openstack-must-gather/quay-io-openstack-k8s-operators-openstack-must-gather-sha256-7c4e74411335a883ab800a2f1812e725a15ea42bdf17bba8192fc315f7f72332/namespaces/openstack/crs/openstackversions.core.openstack.org/controlplane.yaml

spec:
  customContainerImages:
    watcherAPIImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493
    watcherApplierImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493
    watcherDecisionEngineImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493

the job has failed on tempest -> https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/logs//446/rdoproject.org/4462fe3ffce347febe61aab68ec091c1/controller/ci-framework-data/tests/test_operator/tempest-tests-tempest/tempest_results.html

danpawlik added a commit to danpawlik/telemetry-operator that referenced this pull request Aug 25, 2026
Implement similar S2I testing workflow as watcher-operator [1]
that adds:

- s2i-speculative-deploy-test-telemetry job - validates speculatively-built
   S2I telemetry-operator container images against a live OpenStack deployment
   with telemetry enabled
- s2i-openstack-container-content-provider job - builds S2I containers
- Non-voting github-check jobs to validate S2I builds before merging

This enables testing whether speculatively-rebuilt telemetry container images
function correctly in real deployments.

Cloudkitty s2i (cloudkitty/cloudkitty-api) deferred: the cloudkitty deploy
path pulls the meta content provider, which conflicts with s2i image
injection. Add when a clean deploy path exists.

[1] openstack-k8s-operators/watcher-operator#443

Related-To: OSPRH-34558
Assisted-By: Claude Haiku 4.5 <noreply@anthropic.com>
Signed-off-by: Daniel Pawlik <dpawlik@redhat.com>
danpawlik added a commit to danpawlik/telemetry-operator that referenced this pull request Aug 25, 2026
Implement similar S2I testing workflow as watcher-operator [1]
that adds:

- s2i-speculative-deploy-test-telemetry job - validates speculatively-built
   S2I telemetry-operator container images against a live OpenStack deployment
   with telemetry enabled
- s2i-openstack-container-content-provider job - builds S2I containers
- Non-voting github-check jobs to validate S2I builds before merging

This enables testing whether speculatively-rebuilt telemetry container images
function correctly in real deployments.

Cloudkitty s2i (cloudkitty/cloudkitty-api) deferred: the cloudkitty deploy
path pulls the meta content provider, which conflicts with s2i image
injection. Add when a clean deploy path exists.

[1] openstack-k8s-operators/watcher-operator#443

Related-To: OSPRH-34558
Assisted-By: Claude Haiku 4.5 <noreply@anthropic.com>

Depends-On: openstack-k8s-operators/ci-framework#4131

Signed-off-by: Daniel Pawlik <dpawlik@redhat.com>
@SeanMooney

Copy link
Copy Markdown
Collaborator

@SeanMooney it works kinda well I guess :)

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/logs//446/rdoproject.org/4462fe3ffce347febe61aab68ec091c1/controller/ci-framework-data/logs/openstack-must-gather/quay-io-openstack-k8s-operators-openstack-must-gather-sha256-7c4e74411335a883ab800a2f1812e725a15ea42bdf17bba8192fc315f7f72332/namespaces/openstack/crs/openstackversions.core.openstack.org/controlplane.yaml

spec:
  customContainerImages:
    watcherAPIImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493
    watcherApplierImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493
    watcherDecisionEngineImage: 38.102.83.106:5001/openstack/openstack-watcher-base:443-e33a3586f74b0ade0480f74a86b9baf09a40b493

the job has failed on tempest -> https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/logs//446/rdoproject.org/4462fe3ffce347febe61aab68ec091c1/controller/ci-framework-data/tests/test_operator/tempest-tests-tempest/tempest_results.html

so the tests that are failing are failing becuase its trying to gnocchi

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/logs//446/rdoproject.org/4462fe3ffce347febe61aab68ec091c1/controller/ci-framework-data/tests/test_operator/tempest-tests-tempest/tempest_results.html

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py", line 52, in test_execute_basic_strategy
    self._create_one_instance_per_host_with_statistic()
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/tests/scenario/base.py", line 238, in _create_one_instance_per_host_with_statistic
    self.make_instance_statistic(instance, metrics=metrics)
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/tests/scenario/base.py", line 357, in make_instance_statistic
    _, res = self.create_resource(**resource_params)
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/tests/scenario/base.py", line 259, in create_resource
    resp, body = self.gnocchi.create_resource(**kwargs)
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/services/base.py", line 37, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/services/metric/v1/json/client.py", line 46, in create_resource
    return self._create_request('/resource/{type}'.format(
  File "/usr/lib/python3.9/site-packages/watcher_tempest_plugin/services/base.py", line 150, in _create_request
    resp, body = self.post(uri, body=body, headers=headers)
  File "/usr/lib/python3.9/site-packages/tempest/lib/common/rest_client.py", line 314, in post
    resp_header, resp_body = self.request(
  File "/usr/lib/python3.9/site-packages/tempest/lib/common/rest_client.py", line 746, in request
    resp, resp_body = self._request(method, url, headers=headers,
  File "/usr/lib/python3.9/site-packages/tempest/lib/common/rest_client.py", line 609, in _request
    req_url, req_headers, req_body = self.auth_provider.auth_request(
  File "/usr/lib/python3.9/site-packages/tempest/lib/auth.py", line 185, in auth_request
    auth_url, auth_headers, auth_body = self._decorate_request(
  File "/usr/lib/python3.9/site-packages/tempest/lib/auth.py", line 277, in _decorate_request
    base_url = self.base_url(filters=filters, auth_data=auth_data)
  File "/usr/lib/python3.9/site-packages/tempest/lib/auth.py", line 574, in base_url
    raise exceptions.EndpointNotFound(msg % (
tempest.lib.exceptions.EndpointNotFound: Endpoint not found
Details: No matching service found in the catalog.
Scope: project, Credentials: {'domain_id': None, 'domain_name': 'Default', 'username': 'admin', 'project_domain_id': 'default', 'project_domain_name': 'Default', 'project_id': '20b5e08f24d44200bc893801c214c54e', 'project_name': 'admin', 'tenant_id': '20b5e08f24d44200bc893801c214c54e', 'tenant_name': 'admin', 'user_domain_id': 'default', 'user_domain_name': 'Default', 'user_id': '412b0d39140d415f953fa5e9b91f1157', 'system': None}
Auth data: {'methods': ['password'], 'user': {'domain': {'id': 'default', 'name': 'Default'}, 'id': '412b0d39140d415f953fa5e9b91f1157', 'name': 'admin', 'password_expires_at': None}, 'audit_ids': ['r1Gy_6AkQOiMFZ3XZgDMDA'], 'expires_at': '2026-08-24T17:46:32.000000Z', 'issued_at': '2026-08-24T16:46:32.000000Z', 'project': {'domain': {'id': 'default', 'name': 'Default'}, 'id': '20b5e08f24d44200bc893801c214c54e', 'name': 'admin'}, 'is_domain': False, 'roles': [{'id': '714636cbd6fc4d738a2d47e8dc979d90', 'name': 'member'}, {'id': '3be109f1b8fb40dbaaf6b4f36872cb89', 'name': 'reader'}, {'id': '40d9aa4c96ae4e29b7042edc9d4bf274', 'name': 'admin'}], 'catalog': [{'endpoints': [{'name': 'watcher', 'id': '046f17f7d83c4189bc9e2c972c96d445', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://watcher-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'name': 'watcher', 'id': 'fa6f2d4038b24b0d9497b06d852ed6b0', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://watcher-internal.openstack.svc:9322', 'region': 'regionOne'}], 'id': '201de6a3487a44db94b9bdf759bde5f8', 'type': 'infra-optim', 'name': 'watcher'}, {'endpoints': [{'name': 'glance', 'id': '6b755b3080254230b6555f834bdb17b9', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://glance-default-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'name': 'glance', 'id': 'e1d3cdb8b9b44929b4fb04f312044153', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://glance-default-internal.openstack.svc:9292', 'region': 'regionOne'}], 'id': '29ce0abddb424599b85dd4da6425aeaf', 'type': 'image', 'name': 'glance'}, {'endpoints': [{'id': '66523a45c82843d1ba28b796406e58fb', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://keystone-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'id': 'c58a67d15f04434b90fc51697063ec80', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://keystone-internal.openstack.svc:5000', 'region': 'regionOne'}], 'id': '31bbf2ae29e74d3da88c620aa8fcf11b', 'type': 'identity', 'name': 'keystone'}, {'endpoints': [{'name': 'nova', 'id': 'b9002d65b0d64dc6a6ed6902b81d07ce', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://nova-internal.openstack.svc:8774/v2.1', 'region': 'regionOne'}, {'name': 'nova', 'id': 'cdcfa46b1a134158af8bfff4f776d3c4', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://nova-public-openstack.apps-crc.testing/v2.1', 'region': 'regionOne'}], 'id': '72af28c92b8740f5bd10d5fc14dce0e8', 'type': 'compute', 'name': 'nova'}, {'endpoints': [{'name': 'neutron', 'id': '3099e019631a4cfcb4273f62c79dfca8', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://neutron-internal.openstack.svc:9696', 'region': 'regionOne'}, {'name': 'neutron', 'id': 'f374cb1ec42046ba8d983290dff6d813', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://neutron-public-openstack.apps-crc.testing', 'region': 'regionOne'}], 'id': '758767991d3a4f28b1b9d1ec18118ae6', 'type': 'network', 'name': 'neutron'}, {'endpoints': [{'name': 'placement', 'id': '93b637c0136a4620b0fbaddcc5f95768', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://placement-internal.openstack.svc:8778', 'region': 'regionOne'}, {'name': 'placement', 'id': 'c8d1c0d921af4aac932bc179b6f2366f', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://placement-public-openstack.apps-crc.testing', 'region': 'regionOne'}], 'id': '79ce5a1d1dc8426aa4cf1a0eb35e4541', 'type': 'placement', 'name': 'placement'}, {'endpoints': [], 'id': 'b0fafa2442f840bd90538c375356206e', 'type': 'Ceilometer', 'name': 'ceilometer'}, {'endpoints': [{'name': 'swift', 'id': '1a7eca7f642e4d1e8d87c3b33e13aa3b', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://swift-internal.openstack.svc:8080/v1/AUTH_20b5e08f24d44200bc893801c214c54e', 'region': 'regionOne'}, {'name': 'swift', 'id': 'a993974b8aaf47b1a1c6a0a6a3410a19', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://swift-public-openstack.apps-crc.testing/v1/AUTH_20b5e08f24d44200bc893801c214c54e', 'region': 'regionOne'}], 'id': 'e0af5c31e0f048d2ad736670c02d6f21', 'type': 'object-store', 'name': 'swift'}, {'endpoints': [{'name': 'cinderv3', 'id': '345c97bfcaae4f498a75e82c2aa34f69', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://cinder-internal.openstack.svc:8776/v3', 'region': 'regionOne'}, {'name': 'cinderv3', 'id': '8664850e6fb84e00b10021f1fb54996c', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://cinder-public-openstack.apps-crc.testing/v3', 'region': 'regionOne'}], 'id': 'f90799938c3e40ab9c3d6de9d81dc258', 'type': 'volumev3', 'name': 'cinderv3'}]}
Service: metric, Region: regionOne, endpoint_type: public
Catalog: [{'endpoints': [{'name': 'watcher', 'id': '046f17f7d83c4189bc9e2c972c96d445', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://watcher-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'name': 'watcher', 'id': 'fa6f2d4038b24b0d9497b06d852ed6b0', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://watcher-internal.openstack.svc:9322', 'region': 'regionOne'}], 'id': '201de6a3487a44db94b9bdf759bde5f8', 'type': 'infra-optim', 'name': 'watcher'}, {'endpoints': [{'name': 'glance', 'id': '6b755b3080254230b6555f834bdb17b9', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://glance-default-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'name': 'glance', 'id': 'e1d3cdb8b9b44929b4fb04f312044153', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://glance-default-internal.openstack.svc:9292', 'region': 'regionOne'}], 'id': '29ce0abddb424599b85dd4da6425aeaf', 'type': 'image', 'name': 'glance'}, {'endpoints': [{'id': '66523a45c82843d1ba28b796406e58fb', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://keystone-public-openstack.apps-crc.testing', 'region': 'regionOne'}, {'id': 'c58a67d15f04434b90fc51697063ec80', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://keystone-internal.openstack.svc:5000', 'region': 'regionOne'}], 'id': '31bbf2ae29e74d3da88c620aa8fcf11b', 'type': 'identity', 'name': 'keystone'}, {'endpoints': [{'name': 'nova', 'id': 'b9002d65b0d64dc6a6ed6902b81d07ce', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://nova-internal.openstack.svc:8774/v2.1', 'region': 'regionOne'}, {'name': 'nova', 'id': 'cdcfa46b1a134158af8bfff4f776d3c4', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://nova-public-openstack.apps-crc.testing/v2.1', 'region': 'regionOne'}], 'id': '72af28c92b8740f5bd10d5fc14dce0e8', 'type': 'compute', 'name': 'nova'}, {'endpoints': [{'name': 'neutron', 'id': '3099e019631a4cfcb4273f62c79dfca8', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://neutron-internal.openstack.svc:9696', 'region': 'regionOne'}, {'name': 'neutron', 'id': 'f374cb1ec42046ba8d983290dff6d813', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://neutron-public-openstack.apps-crc.testing', 'region': 'regionOne'}], 'id': '758767991d3a4f28b1b9d1ec18118ae6', 'type': 'network', 'name': 'neutron'}, {'endpoints': [{'name': 'placement', 'id': '93b637c0136a4620b0fbaddcc5f95768', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://placement-internal.openstack.svc:8778', 'region': 'regionOne'}, {'name': 'placement', 'id': 'c8d1c0d921af4aac932bc179b6f2366f', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://placement-public-openstack.apps-crc.testing', 'region': 'regionOne'}], 'id': '79ce5a1d1dc8426aa4cf1a0eb35e4541', 'type': 'placement', 'name': 'placement'}, {'endpoints': [], 'id': 'b0fafa2442f840bd90538c375356206e', 'type': 'Ceilometer', 'name': 'ceilometer'}, {'endpoints': [{'name': 'swift', 'id': '1a7eca7f642e4d1e8d87c3b33e13aa3b', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://swift-internal.openstack.svc:8080/v1/AUTH_20b5e08f24d44200bc893801c214c54e', 'region': 'regionOne'}, {'name': 'swift', 'id': 'a993974b8aaf47b1a1c6a0a6a3410a19', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://swift-public-openstack.apps-crc.testing/v1/AUTH_20b5e08f24d44200bc893801c214c54e', 'region': 'regionOne'}], 'id': 'e0af5c31e0f048d2ad736670c02d6f21', 'type': 'object-store', 'name': 'swift'}, {'endpoints': [{'name': 'cinderv3', 'id': '345c97bfcaae4f498a75e82c2aa34f69', 'interface': 'internal', 'region_id': 'regionOne', 'url': 'https://cinder-internal.openstack.svc:8776/v3', 'region': 'regionOne'}, {'name': 'cinderv3', 'id': '8664850e6fb84e00b10021f1fb54996c', 'interface': 'public', 'region_id': 'regionOne', 'url': 'https://cinder-public-openstack.apps-crc.testing/v3', 'region': 'regionOne'}], 'id': 'f90799938c3e40ab9c3d6de9d81dc258', 'type': 'volumev3', 'name': 'cinderv3'}]

Comment thread .zuul.yaml
Comment thread .zuul.yaml
@rebtoor
rebtoor force-pushed the feature/s2i-speculative-test branch from e33a358 to cbadba8 Compare August 26, 2026 15:13
Inject s2i-built watcher images through cifmw_set_containers_images
during edpm_prepare so they land in OpenStackVersion before the control
plane deploys. github-check uses the non-meta operator content provider
for operator images and appends the s2i registry as an extra insecure
registry so CRC can pull both the operator catalog and watcher service
images.

Name the jobs watcher-s2i-content-provider and watcher-s2i-tempest,
fold them into opendev-watcher-edpm-pipeline, and limit them to
watcher/ source paths so python-watcherclient and watcher-tempest-plugin
keep EDPM-only.

Give watcher-s2i-tempest the same cifmw_extras as watcher-operator-base
so telemetry metricStorage and watcher-tempest point at Prometheus, and
pin tempest to the master-latest image so the plugin does not fall back
to the antelope Gnocchi client.

Depends-On: openstack-k8s-operators/ci-framework#4131
Co-authored-by: Cursor <cursoragent@cursor.com>
@rebtoor
rebtoor force-pushed the feature/s2i-speculative-test branch from cbadba8 to 27890b1 Compare August 26, 2026 15:20
Comment thread .zuul.yaml
s2i_content_provider_os_custom_container_images | dict2items |
json_query('[].{name: key, full_registry: value}')
}}
# Same extras as watcher-operator-base: edpm.yml enables telemetry

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we may want to use yaml ancors for this later but i think this should work
let see what ci says

we may also refactor this later because we will want this to inherit form
watcher-operator-base later.

but not now.

@SeanMooney

Copy link
Copy Markdown
Collaborator

@rebtoor

rebtoor commented Aug 26, 2026

Copy link
Copy Markdown
Author

@SeanMooney

SeanMooney commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

we could the one thing i want to figure out is have we lost/removed our all master job

the current s2i job is testing watcher master (built by the content provider) but antelope of everything else, it would be nice to start moving all the ohter service contaienr to using the master-latest contianer images form quay.io

so i dont knwo if we want to manually force that for now or just wait for that to be done in the openstack operator.

but yes i think i would be ok with making it voting now that its green but we could also do that in a follow up after a week or so

our watcher-operator-validation-master job is already voting with s2i images but using the quay.io ones that are updated perodically.

that will eventully be replaced with your new job i think

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/605354b01dfe4af19d23bca82726ce9b

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.

2 participants