From 3114ca44e117c751be6f91800da48adea0661c7a Mon Sep 17 00:00:00 2001 From: Aleix Casanovas Date: Thu, 21 Nov 2024 10:02:13 -0500 Subject: [PATCH] feat: Forward white-glove into RC --- .../app/Workshops/WorkshopsItemDetails.tsx | 37 +++++++++++-------- workshop-manager/operator/babylon.py | 1 + workshop-manager/operator/workshop.py | 4 ++ .../operator/workshopprovision.py | 3 ++ 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/catalog/ui/src/app/Workshops/WorkshopsItemDetails.tsx b/catalog/ui/src/app/Workshops/WorkshopsItemDetails.tsx index 1721abbfb..b58f14ae0 100644 --- a/catalog/ui/src/app/Workshops/WorkshopsItemDetails.tsx +++ b/catalog/ui/src/app/Workshops/WorkshopsItemDetails.tsx @@ -9,7 +9,6 @@ import { DescriptionListDescription, Tooltip, Switch, - Button, TextInput, Radio, } from '@patternfly/react-core'; @@ -181,6 +180,26 @@ const WorkshopsItemDetails: React.FC<{ } } + async function handleWhiteGloveChange(_: any, isChecked: boolean) { + const patchObj = { + metadata: { + annotations: { + [`${DEMO_DOMAIN}/white-glove`]: String(isChecked), + }, + }, + }; + onWorkshopUpdate( + await patchWorkshop({ + name: workshop.metadata.name, + namespace: workshop.metadata.namespace, + patch: patchObj, + }) + ); + for (let resourceClaim of resourceClaims) { + patchResourceClaim(resourceClaim.metadata.namespace, resourceClaim.metadata.name, patchObj); + } + } + return ( @@ -500,21 +519,7 @@ const WorkshopsItemDetails: React.FC<{ label="White-Glove Support (for admins to tick when giving a white gloved experience)" isChecked={whiteGloved} hasCheckIcon - onChange={async (_event, isChecked) => { - onWorkshopUpdate( - await patchWorkshop({ - name: workshop.metadata.name, - namespace: workshop.metadata.namespace, - patch: { - metadata: { - annotations: { - [`${DEMO_DOMAIN}/white-glove`]: String(isChecked), - }, - }, - }, - }) - ); - }} + onChange={handleWhiteGloveChange} /> diff --git a/workshop-manager/operator/babylon.py b/workshop-manager/operator/babylon.py index fa7c2167a..ea2d3a2f2 100644 --- a/workshop-manager/operator/babylon.py +++ b/workshop-manager/operator/babylon.py @@ -23,6 +23,7 @@ class Babylon(): lab_ui_urls_annotation = f"{babylon_domain}/labUserInterfaceUrls" notifier_annotation = f"{babylon_domain}/notifier" ordered_by_annotation = f"{demo_domain}/orderedBy" + white_glove_annotation = f"{demo_domain}/white-glove" purpose_annotation = f"{demo_domain}/purpose" purpose_activity_annotation = f"{demo_domain}/purpose-activity" requester_annotation = f"{demo_domain}/requester" diff --git a/workshop-manager/operator/workshop.py b/workshop-manager/operator/workshop.py index c9f17b2ea..835cfc110 100644 --- a/workshop-manager/operator/workshop.py +++ b/workshop-manager/operator/workshop.py @@ -78,6 +78,10 @@ def requester(self): def ordered_by(self): return self.annotations.get(Babylon.ordered_by_annotation) + @property + def white_gloved(self): + return self.annotations.get(Babylon.white_glove_annotation) + @property def service_url(self): return self.annotations.get(Babylon.url_annotation) diff --git a/workshop-manager/operator/workshopprovision.py b/workshop-manager/operator/workshopprovision.py index 65202174f..9eb214cde 100644 --- a/workshop-manager/operator/workshopprovision.py +++ b/workshop-manager/operator/workshopprovision.py @@ -165,6 +165,9 @@ async def create_resource_claim(self, logger, workshop): if workshop.ordered_by: resource_claim_definition['metadata']['annotations'][Babylon.ordered_by_annotation] = workshop.ordered_by + + if workshop.white_gloved: + resource_claim_definition['metadata']['annotations'][Babylon.white_glove_annotation] = workshop.white_gloved if catalog_item.lab_ui_type: resource_claim_definition['metadata']['labels'][Babylon.lab_ui_label] = catalog_item.lab_ui_type