Skip to content
Snippets Groups Projects
Commit 0285448b authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Allow for a subscription validation to be skipped with a special note

When the note of a subscription starts with "SKIP VALIDATION: " followed by a reason, it is not included in the nightly schedule.
parent c74cd632
Branches
Tags
1 merge request!441Allow for a subscription validation to be skipped with a special note
Pipeline #95120 passed
......@@ -7,6 +7,8 @@ From this list, each workflow is selected that meets the following:
* The name of the workflow follows the pattern `validate_*`.
"""
import re
import structlog
from celery import shared_task
from orchestrator.services.processes import get_execution_context
......@@ -37,6 +39,17 @@ def validate_subscriptions() -> None:
return
for subscription in subscriptions:
if re.search(r"SKIP VALIDATION: .+", subscription.note or ""):
# The subscription is marked to skip validation altogether. We continue to the next subscription.
logger.warning(
"Manually skipped validation workflows for a subscription.",
product=subscription.product.name,
subscription_id=subscription.subscription_id,
subscription_description=subscription.description,
skip_reason=subscription.note,
)
continue
found_a_validation_workflow = False
for workflow in subscription.product.workflows:
if workflow.target == Target.SYSTEM and workflow.name.startswith("validate_"):
......
......@@ -93,7 +93,10 @@ def test_subscriptions_without_system_target_workflow(
mock_logger,
validate_subscriptions,
):
mock_get_active_subscriptions.return_value = [MagicMock(product=MagicMock(workflows=[]))]
subscription_mock = MagicMock()
subscription_mock.product.workflows = []
subscription_mock.note = None
mock_get_active_subscriptions.return_value = [subscription_mock]
validate_subscriptions()
mock_logger.warning.assert_called_once()
......@@ -106,6 +109,7 @@ def test_subscription_status_not_usable(
subscription_mock = MagicMock()
subscription_mock.product.workflows = [MagicMock(target=Target.SYSTEM, name="workflow_name")]
subscription_mock.status = "Not Usable Status"
subscription_mock.note = None
mock_get_active_subscriptions.return_value = [subscription_mock]
validate_subscriptions()
......@@ -123,6 +127,7 @@ def test_valid_subscriptions_for_validation(
mocked_workflow = MagicMock(target=Target.SYSTEM, name="workflow_name")
subscription_mock.product.workflows = [mocked_workflow]
subscription_mock.status = "active"
subscription_mock.note = None
mock_get_active_subscriptions.return_value = [subscription_mock]
validate_subscriptions()
validate_func = mock_get_execution_context()["validate"]
......@@ -130,3 +135,18 @@ def test_valid_subscriptions_for_validation(
mocked_workflow.name,
json=[{"subscription_id": str(subscription_mock.subscription_id)}],
)
def test_subscription_skipped_with_note(
mock_get_active_subscriptions,
mock_get_execution_context,
validate_subscriptions,
):
subscription_mock = MagicMock()
subscription_mock.product.workflows = [MagicMock(target=Target.SYSTEM, name="workflow_name")]
subscription_mock.note = "SKIP VALIDATION: Because we don't want to."
mock_get_active_subscriptions.return_value = [subscription_mock]
validate_subscriptions()
validate_func = mock_get_execution_context()["validate"]
validate_func.assert_not_called()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment