From 7b3e61ed1e72081d6c2ac0f6f157163c4470648b Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Wed, 28 Jun 2023 16:41:38 +0200
Subject: [PATCH] make it impossible to skip past a provisioning proxy step
 without run results

---
 gso/services/provisioning_proxy.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py
index 5a224638..0c4dbb1c 100644
--- a/gso/services/provisioning_proxy.py
+++ b/gso/services/provisioning_proxy.py
@@ -14,6 +14,7 @@ from orchestrator.forms import FormPage, ReadOnlyField
 from orchestrator.forms.validators import Accept, Label, LongText
 from orchestrator.types import UUIDstr, State, strEnum
 from orchestrator.utils.json import json_dumps
+from pydantic import validator
 
 from gso import settings
 from gso.products.product_types.device import DeviceProvisioning
@@ -179,6 +180,13 @@ def await_pp_results(subscription: SubscriptionModel,
         pp_run_results: dict = None
         confirm: Accept = Accept('INCOMPLETE')
 
+        @validator('pp_run_results', allow_reuse=True, pre=True, always=True)
+        def run_results_must_be_given(cls, run_results):
+            if run_results is None:
+                raise ValueError('Run results may not be empty. '
+                                 'Wait for the provisioning proxy to finish.')
+            return run_results
+
     result_page = yield ProvisioningResultPage
 
     return result_page.dict()
-- 
GitLab