koji_block_retired: Fix bugs after staging tests
Signed-off-by: Lenka Segura <lsegura@redhat.com>
This commit is contained in:
parent
e5eac0894b
commit
1965b98baf
3 changed files with 81 additions and 11 deletions
|
@ -21,6 +21,7 @@ def config():
|
|||
"keytab": "keytab",
|
||||
"pagure_url": "https://src.fedoraproject.org",
|
||||
"pagure_api_key": "pagure_api_key",
|
||||
"lookaside_url": "https://src.fedoraproject.org/lookaside",
|
||||
}
|
||||
|
||||
|
||||
|
@ -587,6 +588,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok = True
|
||||
mock_response.json.return_value = {
|
||||
"epel9": [
|
||||
"epel_pkg",
|
||||
|
@ -647,6 +649,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok = True
|
||||
mock_response.json.return_value = {
|
||||
"epel9": [
|
||||
"epel_pkg",
|
||||
|
@ -700,6 +703,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok = True
|
||||
mock_response.json.return_value = {
|
||||
"rawhide": [
|
||||
"fedora_pkg",
|
||||
|
@ -753,6 +757,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok = True
|
||||
mock_response.json.return_value = {
|
||||
"rawhide": [
|
||||
"fedora_pkg",
|
||||
|
@ -833,6 +838,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok = True
|
||||
mock_response.json.return_value = {
|
||||
"rawhide": [
|
||||
"fedora_pkg",
|
||||
|
@ -878,6 +884,46 @@ class TestProcessBlockRetired:
|
|||
|
||||
self.toddler_cls.koji_session.packageListBlock.assert_not_called()
|
||||
|
||||
@patch("requests.get")
|
||||
@patch("toddlers.plugins.koji_block_retired.bodhi.set_bodhi")
|
||||
@patch("toddlers.plugins.koji_block_retired.KojiBlockRetired._create_session")
|
||||
def test_playtime_call_lookaside_error(
|
||||
self,
|
||||
mock_create_session,
|
||||
mock_set_bodhi,
|
||||
mock_req,
|
||||
config,
|
||||
caplog,
|
||||
):
|
||||
mock_bodhi = MagicMock()
|
||||
mock_bodhi.get_active_branches.return_value = [
|
||||
"rawhide",
|
||||
]
|
||||
mock_bodhi.is_branch_frozen.return_value = False
|
||||
mock_set_bodhi.return_value = mock_bodhi
|
||||
caplog.set_level(logging.INFO)
|
||||
message = MagicMock()
|
||||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 404
|
||||
mock_response.ok = False
|
||||
|
||||
def req(*args, **kwargs):
|
||||
if (
|
||||
args[0]
|
||||
== "https://src.fedoraproject.org/lookaside/retired_in_rawhide.json"
|
||||
):
|
||||
return mock_response
|
||||
|
||||
mock_req.side_effect = req
|
||||
self.toddler_cls.process(config, message)
|
||||
self.toddler_cls.koji_session.listPackages.assert_not_called()
|
||||
assert (
|
||||
caplog.records[-1].message
|
||||
== "Not able to get data from the lookaside cache: 404"
|
||||
)
|
||||
self.toddler_cls.koji_session.packageListBlock.assert_not_called()
|
||||
|
||||
@patch("requests.get")
|
||||
@patch("toddlers.plugins.koji_block_retired.KojiBlockRetired.get_tag_from_target")
|
||||
@patch("toddlers.plugins.koji_block_retired.bodhi.set_bodhi")
|
||||
|
@ -902,6 +948,7 @@ class TestProcessBlockRetired:
|
|||
message.topic = "toddlers.trigger.koji_block_retired"
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.ok.return_value = True
|
||||
mock_response.json.return_value = {
|
||||
"rawhide": [
|
||||
"fedora_pkg",
|
||||
|
@ -917,6 +964,7 @@ class TestProcessBlockRetired:
|
|||
|
||||
mock_req.side_effect = req
|
||||
mock_rawhide.return_value = "f42"
|
||||
|
||||
self.toddler_cls.koji_session.listPackages.return_value = [
|
||||
{
|
||||
"blocked": False,
|
||||
|
@ -979,7 +1027,16 @@ class TestProcessBlockRetired:
|
|||
assert caplog.records[-2].message == "Branch rawhide is frozen, ignoring."
|
||||
|
||||
def test_adjust_releases_for_lookaside(self):
|
||||
releases = ["epel8", "epel9", "epel10", "f40", "f41", "f42"]
|
||||
releases = [
|
||||
"epel8",
|
||||
"epel9",
|
||||
"epel10",
|
||||
"f40",
|
||||
"f41",
|
||||
"f42",
|
||||
"eln",
|
||||
"epel9-next",
|
||||
]
|
||||
assert self.toddler_cls.adjust_releases_for_lookaside(releases) == [
|
||||
"epel10",
|
||||
"epel8",
|
||||
|
|
|
@ -103,6 +103,9 @@ dist_git_url = "https://src.fedoraproject.org"
|
|||
dist_git_token_seed = "private random string to change"
|
||||
dist_git_token = "private random string to change"
|
||||
|
||||
# URL to lookaside cache
|
||||
lookaside_url = "https://src.fedoraproject.org/lookaside"
|
||||
|
||||
# Configuration file storing all the email overrides in the form of:
|
||||
# "foo@bar.com" = "bar@foo.org"
|
||||
# This is the same format as used by the distgit_bugzilla_sync cron/app
|
||||
|
|
|
@ -79,22 +79,32 @@ class KojiBlockRetired(ToddlerBase):
|
|||
releases.remove(max(releases))
|
||||
# And add rawhide instead
|
||||
releases.append("rawhide")
|
||||
releases.sort()
|
||||
return releases
|
||||
lookaside_release = []
|
||||
for release in releases:
|
||||
if "eln" in release or "-next" in release:
|
||||
continue
|
||||
lookaside_release.append(release)
|
||||
lookaside_release.sort()
|
||||
return lookaside_release
|
||||
|
||||
def find_and_block(self, config):
|
||||
self.bodhi = bodhi.set_bodhi(config)
|
||||
active_releases = self.bodhi.get_active_branches()
|
||||
adjusted = self.adjust_releases_for_lookaside(active_releases)
|
||||
base_url = f"{config['dist_git_url']}/lookaside"
|
||||
needs_blocking = defaultdict(list)
|
||||
for active_release in adjusted:
|
||||
if self.bodhi.is_branch_frozen(active_release):
|
||||
_log.info(f"Branch {active_release} is frozen, ignoring.")
|
||||
continue
|
||||
retired_url = f"{base_url}/retired_in_{active_release}.json"
|
||||
retired_url = f"{config['lookaside_url']}/retired_in_{active_release}.json"
|
||||
response = requests.get(retired_url)
|
||||
if not response.ok:
|
||||
_log.error(
|
||||
f"Not able to get data from the lookaside cache: {response.status_code}"
|
||||
)
|
||||
return
|
||||
packages = response.json()[active_release]
|
||||
|
||||
for package in packages:
|
||||
if active_release == "rawhide":
|
||||
active_release = self.get_tag_from_target("rawhide")
|
||||
|
@ -106,7 +116,7 @@ class KojiBlockRetired(ToddlerBase):
|
|||
)
|
||||
try:
|
||||
(resp,) = self.execute_koji_call(
|
||||
self.koji_session.listPackages.__name__,
|
||||
"listPackages",
|
||||
pkgID=package,
|
||||
tagID=active_release,
|
||||
)
|
||||
|
@ -135,9 +145,9 @@ class KojiBlockRetired(ToddlerBase):
|
|||
|
||||
self.config = config
|
||||
|
||||
self.koji_url = f"{self.config}/kojihub"
|
||||
self.principal = config["principal"]
|
||||
self.keytab = config["keytab"]
|
||||
self.koji_url = f"{self.config['koji_url']}/kojihub"
|
||||
self.principal = self.config["principal"]
|
||||
self.keytab = self.config["keytab"]
|
||||
|
||||
if topic.endswith("toddlers.trigger.koji_block_retired"):
|
||||
if self.koji_session is None:
|
||||
|
@ -206,7 +216,7 @@ class KojiBlockRetired(ToddlerBase):
|
|||
|
||||
_log.info(f"Blocking package {repo}, tag: {tag_name}")
|
||||
self.execute_koji_call(
|
||||
self.koji_session.packageListBlock.__name__,
|
||||
"packageListBlock",
|
||||
taginfo=tag_name,
|
||||
pkginfo=repo,
|
||||
)
|
||||
|
@ -221,7 +231,7 @@ class KojiBlockRetired(ToddlerBase):
|
|||
f"Unblocking EPEL tag for package: {repo}, tag: {tag_name}"
|
||||
)
|
||||
self.execute_koji_call(
|
||||
self.koji_session.packageListUnblock.__name__,
|
||||
"packageListUnblock",
|
||||
taginfo=tag_name,
|
||||
pkginfo=repo,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue