Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test opendev watcher master content in CI job #39

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 86 additions & 10 deletions .zuul.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,36 @@
- project:
name: openstack-k8s-operators/watcher-operator
default-branch: main
templates:
- opendev-master-watcher-operator-pipeline
github-check:
jobs:
- noop
- watcher-operator-doc-preview
- openstack-meta-content-provider:
vars:
cifmw_operator_build_meta_build: false
- watcher-operator-validation
- watcher-operator-kuttl

- job:
name: watcher-operator-base
override-checkout: main
parent: podified-multinode-edpm-deployment-crc-2comp
dependencies: ["openstack-meta-content-provider"]
dependencies: ["openstack-meta-content-provider-master"]
Copy link
Contributor

@marios marios Jan 21, 2025

Choose a reason for hiding this comment

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

why have the dependency at all then if we aren't going to use the built containers. do we need it for something else?

[edit]: maybe repos?
[edit][edit]: ah... operators https://github.com/openstack-k8s-operators/ci-framework/blob/affcd2a89dd04f6f5d0f6e64ddaf7b16b254ef10/roles/reproducer/templates/content-provider.yml.j2#L84

description: |
A multinode EDPM Zuul job which has one ansible controller, one
extracted crc and two computes. It will be used for testing watcher-operator.
vars:
watcher_repo: "{{ ansible_user_dir }}/src/github.com/openstack-k8s-operators/watcher-operator"
watcher_hook: "{{ watcher_repo }}/ci/playbooks/deploy_watcher_service.yaml"
watcher_coo_hook: "{{ watcher_repo }}/ci/playbooks/deploy_cluster_observability_operator.yaml"
run_tempest: false
# Based on current testing, https://github.com/openstack-k8s-operators/watcher-operator/pull/47#issuecomment-2607474033
# We need decision engine and applier CRD to ready to run
# whole test suite
cifmw_test_operator_tempest_include_list: |
watcher_tempest_plugin.tests.api.admin.test_api_discovery.TestApiDiscovery
# Donot use openstack services containers from meta content provider master
# job.
cifmw_update_containers_openstack: false
# controlplane customization to deploy telemetry service
cifmw_edpm_prepare_timeout: 60
cifmw_edpm_prepare_kustomizations:
Expand Down Expand Up @@ -65,25 +74,38 @@
parent: watcher-operator-base
description: |
A zuul job to validate the watcher operator and its service deployment.
It will deploy podified and EDPM using current-podified antelope content.
During watcher deployment, It will fetch master current-podified hash and pull
openstack watcher services containers from meta content provider.
It will test current-podified control plane EDPM deployment with openstack watcher
master content.
extra-vars:
# Override zuul meta content provider provided content_provider_dlrn_md5_hash
# var. As returned dlrn md5 hash comes from master release but job is using
# antelope content.
content_provider_dlrn_md5_hash: ''
Copy link
Contributor

Choose a reason for hiding this comment

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

(trying to understand)... is an alternative to doing this (false update_containers and hash set to '') perhaps to have a -antelope content provider instead of a master one here? or we don't want/need -antelope content provider?

Copy link
Contributor Author

@raukadah raukadah Jan 20, 2025

Choose a reason for hiding this comment

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

The goal here is to always test openstack watcher content from master branch in master and antelope based EDPM job. watcher-operator-validation job is deploying using antelope content and watcher-operator should use openstack services container from meta content provider master.

That's why we donot want to use antelope content provider.

Copy link
Contributor

Choose a reason for hiding this comment

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

ok thanks its a bit clearer now and i also read the commit message but theres a few things going on here.

i'm still not clear why we need the content provider at all then in those cases we don't use the built containers from it.

Copy link
Contributor

Choose a reason for hiding this comment

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

Note that we switched the default container images in the operator to use master since 5cf79ef if that helps.

vars:
run_tempest: false
# Based on current testing, https://github.com/openstack-k8s-operators/watcher-operator/pull/47#issuecomment-2607474033
# We need decision engine and applier CRD to ready to run
# whole test suite
cifmw_test_operator_tempest_include_list: |
watcher_tempest_plugin.tests.api.admin.test_api_discovery.TestApiDiscovery
# Donot use openstack services containers from meta content provider master
# job.
cifmw_update_containers_openstack: false

- job:
name: watcher-operator-kuttl
override-checkout: main
dependencies: ["openstack-meta-content-provider-master"]
parent: cifmw-multinode-kuttl-operator-target
description: |
A zuul job to run watcher operator kuttl tests.
It will pull operator images from meta content provider. There is no
change in openstack services container images.
vars:
operator_name: watcher-operator
cifmw_install_yamls_whitelisted_vars: *install_yamls_whitelist
watcher_repo: "{{ ansible_user_dir }}/src/github.com/openstack-k8s-operators/watcher-operator"
watcher_hook: "{{ watcher_repo }}/ci/playbooks/deploy_watcher_service.yaml"
deploy_watcher_service: false
# Do not fetch master dlrn md5 hash
fetch_master_dlrn_hash: false
# run the hook to install watcher at the end of the cifmw infra playbook. If we try to run it
# as a standalone plabyook, it tries to load the cifmw ci_script action
# plugin from the zuul executor and doesn't find it
Expand All @@ -93,6 +115,13 @@
source: "{{ watcher_hook }}"
extra_vars:
watcher_catalog_image: "{{ content_provider_registry_ip }}:5001/openstack-k8s-operators/watcher-operator-index:{{ zuul.patchset }}"
extra-vars:
# Override zuul meta content provider provided content_provider_dlrn_md5_hash
# var. As returned dlrn md5 hash comes from master release but job is using
# antelope content.
content_provider_dlrn_md5_hash: ''
# We also need to override the registry otherwise kuttl test will fail
content_provider_os_registry_url: "quay.io/podified-master-centos9"

- job:
name: watcher-operator-doc-preview
Expand All @@ -103,3 +132,50 @@
vars:
asciidoc_available: true
doc_available: false

##########################################################
# #
# Master Zuul Jobs #
# #
##########################################################
- job:
name: openstack-meta-content-provider-master
override-checkout: main
description: |
A zuul job building content from OpenDev master release.
parent: openstack-meta-content-provider
vars:
cifmw_operator_build_meta_build: false
cifmw_bop_openstack_release: master
cifmw_bop_dlrn_baseurl: "https://trunk.rdoproject.org/centos9-master"
cifmw_repo_setup_branch: master
cifmw_build_containers_registry_namespace: podified-master-centos9

- job:
name: watcher-operator-validation-master
parent: watcher-operator-base
override-checkout: main
description: |
A Zuul job consuming content from openstack-meta-content-provider-master
and deploying EDPM with master content.
vars:
cifmw_repo_setup_branch: master
# To consume containers from meta content provider
cifmw_update_containers_openstack: true

##########################################################
# #
# Project Template #
# #
##########################################################

- project-template:
name: opendev-master-watcher-operator-pipeline
description: |
Project template to run meta content provider and
EDPM job with master opendev and github operator
content.
github-check:
jobs:
- openstack-meta-content-provider-master
- watcher-operator-validation-master
12 changes: 9 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,14 @@ update-watcher-csv:
fi

CATALOG_IMAGE ?= quay.io/openstack-k8s-operators/watcher-operator-index:latest
WATCHER_API_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-api:current-podified
WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-decision-engine:current-podified
WATCHER_APPLIER_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-applier:current-podified

.PHONY: watcher
watcher: export WATCHER_API_IMAGE=${WATCHER_API_IMAGE_URL_DEFAULT}
watcher: export WATCHER_DECISION_ENGINE_IMAGE=${WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT}
watcher: export WATCHER_APPLIER_IMAGE=${WATCHER_APPLIER_IMAGE_URL_DEFAULT}
watcher: export CATALOG_IMG=${CATALOG_IMAGE}
watcher: ## Install watcher operator via olm
bash ci/olm.sh
Expand Down Expand Up @@ -449,9 +455,9 @@ SKIP_CERT ?=false
.PHONY: run-with-webhook
run-with-webhook: export METRICS_PORT?=33080
run-with-webhook: export HEALTH_PORT?=33081
run-with-webhook: export WATCHER_API_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-api:current-podified
run-with-webhook: export WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-decision-engine:current-podified
run-with-webhook: export WATCHER_APPLIER_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-applier:current-podified
run-with-webhook: export WATCHER_API_IMAGE_URL_DEFAULT=${WATCHER_API_IMAGE_URL_DEFAULT}
run-with-webhook: export WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT=${WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT}
run-with-webhook: export WATCHER_APPLIER_IMAGE_URL_DEFAULT=${WATCHER_APPLIER_IMAGE_URL_DEFAULT}
run-with-webhook: manifests generate fmt vet ## Run a controller from your host.
/bin/bash hack/clean_local_webhook.sh
/bin/bash hack/run_with_local_webhook.sh
Expand Down
8 changes: 8 additions & 0 deletions ci/olm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,12 @@ spec:
channel: alpha
source: watcher-operator-index
sourceNamespace: openstack-operators
config:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

env:
- name: WATCHER_API_IMAGE_URL_DEFAULT
value: ${WATCHER_API_IMAGE}
- name: WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT
value: ${WATCHER_DECISION_ENGINE_IMAGE}
- name: WATCHER_APPLIER_IMAGE_URL_DEFAULT
value: ${WATCHER_APPLIER_IMAGE}
EOF_CAT
16 changes: 16 additions & 0 deletions ci/playbooks/deploy_watcher_service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,29 @@
KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}"
PATH: "{{ cifmw_path }}"
tasks:
- name: Fetch dlrn md5_hash from master DLRN repo
when: fetch_master_dlrn_hash | default(true) | bool
ansible.builtin.uri:
url: "https://{{ watcher_dlrn_server | default('trunk.rdoproject.org') }}/{{ watcher_dlrn_namespace | default('centos9-master') }}/{{ watcher_dlrn_tag | default('current-podified') }}/delorean.repo.md5"
return_content: true
register: latest_dlrn_tag
until: latest_dlrn_tag.status == 200
retries: 6
delay: 5

- name: Install Watcher Operator
vars:
_tag: "{{ latest_dlrn_tag.content | default('current-podified') }}"
_registry_url: "{{ content_provider_os_registry_url | default('quay.io/podified-master-centos9') }}"
cifmw.general.ci_script:
output_dir: "{{ cifmw_basedir }}/artifacts"
chdir: "{{ ansible_user_dir }}/src/github.com/openstack-k8s-operators/watcher-operator"
script: make watcher
extra_args:
CATALOG_IMAGE: "{{ watcher_catalog_image | default('quay.io/openstack-k8s-operators/watcher-operator-index:latest') }}"
WATCHER_API_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-api:{{ _tag }}"
WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-decision-engine:{{ _tag }}"
WATCHER_APPLIER_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-applier:{{ _tag }}"

- name: Deploy Watcher service
when: deploy_watcher_service | default('true') | bool
Expand Down
Loading