@@ -232,12 +232,25 @@ def get_federated_user(self, username):
232232 logger .info (f"User ({ username } ) does not exist" )
233233
234234 def create_federated_user (self , unique_id ):
235- url = f"{ self .auth_url } /users/{ unique_id } "
236- try :
237- r = self .session .put (url )
238- self .check_response (r )
239- except Conflict :
240- pass
235+ user_def = {
236+ "metadata" : {"name" : unique_id },
237+ "fullName" : unique_id ,
238+ }
239+
240+ identity_def = {
241+ "providerName" : self .id_provider ,
242+ "providerUserName" : unique_id ,
243+ }
244+
245+ identity_mapping_def = {
246+ "user" : {"name" : unique_id },
247+ "identity" : {"name" : self .qualified_id_user (unique_id )},
248+ }
249+
250+ self ._openshift_create_user (user_def )
251+ self ._openshift_create_identity (identity_def )
252+ self ._openshift_create_useridentitymapping (identity_mapping_def )
253+ logger .info (f"User { unique_id } successfully created" )
241254
242255 def assign_role_on_user (self , username , project_id ):
243256 # /users/<user_name>/projects/<project>/roles/<role>
@@ -291,9 +304,9 @@ def _get_project(self, project_id):
291304 return self .check_response (r )
292305
293306 def _delete_user (self , username ):
294- url = f" { self .auth_url } /users/ { username } "
295- r = self .session . delete ( url )
296- return self . check_response ( r )
307+ self ._openshift_delete_user ( username )
308+ self ._openshift_delete_identity ( username )
309+ logger . info ( f"User { username } successfully deleted" )
297310
298311 def get_users (self , project_id ):
299312 url = f"{ self .auth_url } /projects/{ project_id } /users"
@@ -304,12 +317,43 @@ def _openshift_get_user(self, username):
304317 api = self .get_resource_api (API_USER , "User" )
305318 return clean_openshift_metadata (api .get (name = username ).to_dict ())
306319
320+ def _openshift_create_user (self , user_def ):
321+ api = self .get_resource_api (API_USER , "User" )
322+ try :
323+ return clean_openshift_metadata (api .create (body = user_def ).to_dict ())
324+ except kexc .ConflictError :
325+ pass
326+
327+ def _openshift_delete_user (self , username ):
328+ api = self .get_resource_api (API_USER , "User" )
329+ return clean_openshift_metadata (api .delete (name = username ).to_dict ())
330+
307331 def _openshift_get_identity (self , id_user ):
308332 api = self .get_resource_api (API_USER , "Identity" )
309333 return clean_openshift_metadata (
310334 api .get (name = self .qualified_id_user (id_user )).to_dict ()
311335 )
312336
337+ def _openshift_create_identity (self , identity_def ):
338+ api = self .get_resource_api (API_USER , "Identity" )
339+ try :
340+ return clean_openshift_metadata (api .create (body = identity_def ).to_dict ())
341+ except kexc .ConflictError :
342+ pass
343+
344+ def _openshift_delete_identity (self , username ):
345+ api = self .get_resource_api (API_USER , "Identity" )
346+ return api .delete (name = self .qualified_id_user (username )).to_dict ()
347+
348+ def _openshift_create_useridentitymapping (self , identity_mapping_def ):
349+ api = self .get_resource_api (API_USER , "UserIdentityMapping" )
350+ try :
351+ return clean_openshift_metadata (
352+ api .create (body = identity_mapping_def ).to_dict ()
353+ )
354+ except kexc .ConflictError :
355+ pass
356+
313357 def _openshift_user_exists (self , user_name ):
314358 try :
315359 self ._openshift_get_user (user_name )
0 commit comments