Skip to content
Snippets Groups Projects
Verified Commit 2df16921 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Improve logging in the subscription validation task

Fix an issue where validation workflows would run out-of-order, or in duplicate.
parent 1a277beb
Branches
Tags
1 merge request!420Improve logging in the subscription validation task
Pipeline #94025 passed
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
# limitations under the License. # limitations under the License.
# <!-- vale on --> # <!-- vale on -->
import logging import logging
from collections.abc import Callable from collections.abc import Callable
......
...@@ -37,26 +37,43 @@ def validate_subscriptions() -> None: ...@@ -37,26 +37,43 @@ def validate_subscriptions() -> None:
return return
for subscription in subscriptions: for subscription in subscriptions:
validation_workflow = None found_a_validation_workflow = False
for workflow in subscription.product.workflows: for workflow in subscription.product.workflows:
if workflow.target == Target.SYSTEM and workflow.name.startswith("validate_"): if workflow.target == Target.SYSTEM and workflow.name.startswith("validate_"):
validation_workflow = workflow.name validation_workflow = workflow.name
found_a_validation_workflow = True
if validation_workflow:
validation_workflow_usable = (subscription.status in TARGET_DEFAULT_USABLE_MAP[Target.SYSTEM]) and ( validation_workflow_usable = (subscription.status in TARGET_DEFAULT_USABLE_MAP[Target.SYSTEM]) and (
subscription.insync or (workflow in WF_USABLE_WHILE_OUT_OF_SYNC) subscription.insync or (validation_workflow in WF_USABLE_WHILE_OUT_OF_SYNC)
) )
if validation_workflow_usable: if validation_workflow_usable:
json = [{"subscription_id": str(subscription.subscription_id)}] logger.info(
"Found a usable validation workflow, scheduling task.",
product=subscription.product.name,
subscription_id=subscription.subscription_id,
subscription_description=subscription.description,
workflow=validation_workflow,
)
json = [{"subscription_id": str(subscription.subscription_id)}]
validate_func = get_execution_context()["validate"] validate_func = get_execution_context()["validate"]
validate_func(validation_workflow, json=json) validate_func(validation_workflow, json=json)
if not validation_workflow: else:
logger.info(
"Validation workflow is not usable on this subscription instance",
product=subscription.product.name,
subscription_id=subscription.subscription_id,
subscription_description=subscription.description,
status=subscription.status,
insync=subscription.insync,
workflow=validation_workflow,
)
if not found_a_validation_workflow:
logger.warning( logger.warning(
"SubscriptionTable has no validation workflow", "SubscriptionTable has no validation workflow",
subscription=subscription,
product=subscription.product.name, product=subscription.product.name,
subscription_id=subscription.subscription_id,
subscription_description=subscription.description,
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment