@@ -679,17 +679,20 @@ def prepareAiServicePipelinesNamespace(
679679 logger .info (f"Storage class { storageClass } uses volumeBindingMode={ volumeBindingMode } , skipping PVC bind wait" )
680680
681681
682- def prepareRestoreSecrets (dynClient : DynamicClient , namespace : str , restoreConfigs : dict = None ):
682+ def prepareRestoreSecrets (dynClient : DynamicClient , namespace : str , restoreConfigs : dict = None , additionalConfigs : dict = None , ibm_entitlement_key : str = None ):
683683 """
684- Create or update secret required for MAS Restore pipeline.
684+ Create or update secrets required for MAS Restore pipeline.
685685
686- Creates secret in the specified namespace:
686+ Creates secrets in the specified namespace:
687687 - pipeline-restore-configs
688+ - pipeline-additional-configs
688689
689690 Parameters:
690691 dynClient (DynamicClient): OpenShift Dynamic Client
691692 namespace (str): The namespace to create secrets in
692693 restoreConfigs (dict, optional): configuration data for restore. Defaults to None (empty secret).
694+ additionalConfigs (dict, optional): Additional configuration data. Defaults to None (empty secret).
695+ ibm_entitlement_key (str, optional): IBM entitlement key for authentication. Defaults to None.
693696
694697 Returns:
695698 None
@@ -716,6 +719,38 @@ def prepareRestoreSecrets(dynClient: DynamicClient, namespace: str, restoreConfi
716719 }
717720 secretsAPI .create (body = restoreConfigs , namespace = namespace )
718721
722+ # 2. Secret/pipeline-additional-configs
723+ # -------------------------------------------------------------------------
724+ # Must exist, but can be empty
725+ try :
726+ secretsAPI .delete (name = "pipeline-additional-configs" , namespace = namespace )
727+ except NotFoundError :
728+ pass
729+
730+ if additionalConfigs is None :
731+ additionalConfigs = {
732+ "apiVersion" : "v1" ,
733+ "kind" : "Secret" ,
734+ "type" : "Opaque" ,
735+ "metadata" : {
736+ "name" : "pipeline-additional-configs"
737+ }
738+ }
739+
740+ additionalConfigs .setdefault ("apiVersion" , "v1" )
741+ additionalConfigs .setdefault ("kind" , "Secret" )
742+ additionalConfigs .setdefault ("type" , "Opaque" )
743+ additionalConfigs .setdefault ("metadata" , {})
744+ additionalConfigs ["metadata" ]["name" ] = "pipeline-additional-configs"
745+
746+ # Add IBM_ENTITLEMENT_KEY to the secret if provided
747+ if ibm_entitlement_key :
748+ if "data" not in additionalConfigs :
749+ additionalConfigs ["data" ] = {}
750+ additionalConfigs ["data" ]["IBM_ENTITLEMENT_KEY" ] = base64 .b64encode (ibm_entitlement_key .encode ()).decode ()
751+
752+ secretsAPI .create (body = additionalConfigs , namespace = namespace )
753+
719754
720755def prepareInstallSecrets (
721756 dynClient : DynamicClient ,
0 commit comments