Skip to content

Commit

Permalink
zstream: support trigger by non stable channel (#154)
Browse files Browse the repository at this point in the history
* zstream: support trigger by non stable channel

* improve logs
  • Loading branch information
myakove authored May 1, 2024
1 parent fdd0b87 commit 2fac2dc
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,21 +139,30 @@ def process_and_trigger_jobs(logger: logging.Logger, version: str | None = None)
trigger_res[_version] = "No jobs found"
continue

_latest_version = get_accepted_cluster_versions()["stable"][_version][0]
if "-" in _version:
_wanted_version, _version_channel = _version.split("-")
else:
_wanted_version = _version
_version_channel = "stable"

_all_versions = get_accepted_cluster_versions()
_latest_version = _all_versions.get(_version_channel)[_wanted_version][0]
if already_processed_version(
base_version=_version,
new_version=_latest_version,
processed_versions_file_path=_processed_versions_file_path,
logger=logger,
):
logger.info(f"{LOG_PREFIX} Version {_version} already processed, skipping")
logger.info(f"{LOG_PREFIX} Version {_wanted_version}:{_version_channel} already processed, skipping")
trigger_res[_version] = "Already processed"
continue

logger.info(f"{LOG_PREFIX} New Z-stream version {_latest_version} found, triggering jobs: {_jobs}")
logger.info(
f"{LOG_PREFIX} New Z-stream version {_latest_version}:{_version_channel} found, triggering jobs: {_jobs}"
)
if trigger_jobs(config=config, jobs=_jobs, logger=logger):
update_processed_version(
base_version=_version,
base_version=_wanted_version,
version=str(_latest_version),
processed_versions_file_path=_processed_versions_file_path,
logger=logger,
Expand Down
18 changes: 5 additions & 13 deletions ci_jobs_trigger/tests/zstream_trigger/test_zstream_trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def get_config_mocker(mocker):
def config_dict(get_config_mocker, base_config_dict):
base_config_dict["versions"] = {
"4.13": ["<openshift-ci-test-name-4.13>"],
"4.13-rc": ["<openshift-ci-test-name-4.13-rc>"],
}
get_config_mocker.return_value = base_config_dict

Expand Down Expand Up @@ -85,7 +86,7 @@ def test_process_and_trigger_jobs_config_with_empty_version(config_dict_empty_ve


def test_process_and_trigger_jobs(config_dict, job_trigger_and_get_versions_mocker):
assert process_and_trigger_jobs(logger=LOGGER)
assert process_and_trigger_jobs(logger=LOGGER) == {"4.13": "Triggered", "4.13-rc": "Triggered"}


def test_process_and_trigger_jobs_already_triggered(mocker, config_dict, job_trigger_and_get_versions_mocker):
Expand All @@ -94,20 +95,11 @@ def test_process_and_trigger_jobs_already_triggered(mocker, config_dict, job_tri
return_value={"4.13": ["4.13.34", "4.13.33"]},
)

assert process_and_trigger_jobs(logger=LOGGER) == {"4.13": "Already processed"}


def test_process_and_trigger_jobs_new_version(mocker, config_dict, job_trigger_and_get_versions_mocker):
mocker.patch(
f"{LIBS_ZSTREAM_TRIGGER_PATH}.processed_versions_file",
return_value={"4.13": ["4.13.33", "4.13.32"]},
)

assert process_and_trigger_jobs(logger=LOGGER)
assert process_and_trigger_jobs(logger=LOGGER) == {"4.13": "Already processed", "4.13-rc": "Triggered"}


def test_process_and_trigger_jobs_set_version(config_dict, job_trigger_and_get_versions_mocker):
assert process_and_trigger_jobs(version="4.13", logger=LOGGER)
assert process_and_trigger_jobs(version="4.13", logger=LOGGER) == {"4.13": True}


def test_process_and_trigger_jobs_pass_version(mocker, config_dict, job_trigger_and_get_versions_mocker):
Expand All @@ -116,7 +108,7 @@ def test_process_and_trigger_jobs_pass_version(mocker, config_dict, job_trigger_
return_value={"4.13": ["4.13.33", "4.13.32"]},
)

assert process_and_trigger_jobs(logger=LOGGER, version="4.13")
assert process_and_trigger_jobs(logger=LOGGER, version="4.13") == {"4.13": True}


def test_process_and_trigger_jobs_pass_version_not_in_config(mocker, config_dict, job_trigger_and_get_versions_mocker):
Expand Down
7 changes: 6 additions & 1 deletion config-examples/zstream-trigger-config.example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ run_interval: 24h # can be s/m/h
cron_schedule: "0 0 * * *" # cron schedule for the trigger

versions:
"4.13":
"4.14-rc": # Will take latest 4.14 RC version
- <openshift-ci-test-name-1>
- <openshift-ci-test-name-2>
- <openshift-ci-test-name-3>

"4.13": # Will take latest 4.13 stable version
- <openshift-ci-test-name-1>
- <openshift-ci-test-name-2>
- <openshift-ci-test-name-3>
Expand Down
12 changes: 11 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,22 @@
omit = ["ci_jobs_trigger/tests/*", "ci_jobs_trigger/app.py"]

[tool.coverage.report]
fail_under = 60
fail_under = 65
skip_empty = true

[tool.coverage.html]
directory = ".tests_coverage"

# TODO: Enable once all functions are typed
# [tool.mypy]
# check_untyped_defs = true
# disallow_any_generics = true
# disallow_incomplete_defs = true
# disallow_untyped_defs = true
# no_implicit_optional = true
# show_error_codes = true
# warn_unused_ignores = true

[tool.ruff]
preview = true
line-length = 120
Expand Down

0 comments on commit 2fac2dc

Please sign in to comment.