@@ -793,6 +793,10 @@ def parse_initial_users_from_aws_secret_json(self, secret_json):
793793 secondary = []
794794 for (email , csv ) in secret_json .items ():
795795 values = csv .split ("," )
796+
797+ if len (values ) != 3 :
798+ raise Exception (f"Wrong number of CSV values for { email } (expected 3 but got { len (values )} )" )
799+
796800 user_type = values [0 ].strip ()
797801 given_name = values [1 ].strip ()
798802 family_name = values [2 ].strip ()
@@ -834,15 +838,46 @@ def create_initial_users_for_saas(self, initial_users):
834838 if type (secondary_users ) is not list :
835839 raise Exception ("'users.secondary' is not a list" )
836840
841+ if len (primary_users ) == 0 and len (secondary_users ) == 0 :
842+ self .logger .info ("No users left to sync, nothing to do" )
843+ return {"completed" : [], "failed" : []}
844+
837845 # before we do anything, let's check all MAS applications are ready
838846 for mas_application_id in self .mas_workspace_application_ids :
839847 self .await_mas_application_availability (mas_application_id )
840848
849+ completed = []
850+ failed = []
851+
841852 for primary_user in primary_users :
842- self .create_initial_user_for_saas (primary_user , "PRIMARY" )
853+ self .logger .info ("" )
854+ try :
855+ self .logger .info (f"Syncing primary user { primary_user ['email' ]} " )
856+ self .create_initial_user_for_saas (primary_user , "PRIMARY" )
857+ completed .append (primary_user )
858+ self .logger .info (f"Completed sync of primary user { primary_user ['email' ]} " )
859+ except Exception as e :
860+ self .logger .error (f"Sync of primary user { primary_user ['email' ]} failed: { str (e )} " )
861+ failed .append (primary_user )
862+ self .logger .info ("" )
843863
844864 for secondary_user in secondary_users :
845- self .create_initial_user_for_saas (secondary_user , "SECONDARY" )
865+ self .logger .info ("" )
866+ try :
867+ self .logger .info ("" )
868+ self .logger .info (f"Syncing secondary user { secondary_user ['email' ]} " )
869+ self .create_initial_user_for_saas (secondary_user , "SECONDARY" )
870+ completed .append (secondary_user )
871+ self .logger .info (f"Completed sync of secondary user { secondary_user ['email' ]} " )
872+ except Exception as e :
873+ self .logger .error (f"Sync of secondary user { secondary_user ['email' ]} failed: { str (e )} " )
874+ failed .append (secondary_user )
875+ self .logger .info ("" )
876+
877+ return {
878+ "completed" : completed ,
879+ "failed" : failed
880+ }
846881
847882 def create_initial_user_for_saas (self , user , user_type ):
848883 if "email" not in user :
0 commit comments