@@ -241,12 +241,25 @@ def get_federated_user(self, username):
241241 logger .info (f"User ({ username } ) does not exist" )
242242
243243 def create_federated_user (self , unique_id ):
244- url = f"{ self .auth_url } /users/{ unique_id } "
245- try :
246- r = self .session .put (url )
247- self .check_response (r )
248- except Conflict :
249- pass
244+ user_def = {
245+ "metadata" : {"name" : unique_id },
246+ "fullName" : unique_id ,
247+ }
248+
249+ identity_def = {
250+ "providerName" : self .id_provider ,
251+ "providerUserName" : unique_id ,
252+ }
253+
254+ identity_mapping_def = {
255+ "user" : {"name" : unique_id },
256+ "identity" : {"name" : self .qualified_id_user (unique_id )},
257+ }
258+
259+ self ._openshift_create_user (user_def )
260+ self ._openshift_create_identity (identity_def )
261+ self ._openshift_create_useridentitymapping (identity_mapping_def )
262+ logger .info (f"User { unique_id } successfully created" )
250263
251264 def assign_role_on_user (self , username , project_id ):
252265 # /users/<user_name>/projects/<project>/roles/<role>
@@ -305,9 +318,9 @@ def _get_project(self, project_id):
305318 return self ._openshift_get_project (project_id )
306319
307320 def _delete_user (self , username ):
308- url = f" { self .auth_url } /users/ { username } "
309- r = self .session . delete ( url )
310- return self . check_response ( r )
321+ self ._openshift_delete_user ( username )
322+ self ._openshift_delete_identity ( username )
323+ logger . info ( f"User { username } successfully deleted" )
311324
312325 def get_users (self , project_id ):
313326 url = f"{ self .auth_url } /projects/{ project_id } /users"
@@ -318,12 +331,43 @@ def _openshift_get_user(self, username):
318331 api = self .get_resource_api (API_USER , "User" )
319332 return clean_openshift_metadata (api .get (name = username ).to_dict ())
320333
334+ def _openshift_create_user (self , user_def ):
335+ api = self .get_resource_api (API_USER , "User" )
336+ try :
337+ return clean_openshift_metadata (api .create (body = user_def ).to_dict ())
338+ except kexc .ConflictError :
339+ pass
340+
341+ def _openshift_delete_user (self , username ):
342+ api = self .get_resource_api (API_USER , "User" )
343+ return clean_openshift_metadata (api .delete (name = username ).to_dict ())
344+
321345 def _openshift_get_identity (self , id_user ):
322346 api = self .get_resource_api (API_USER , "Identity" )
323347 return clean_openshift_metadata (
324348 api .get (name = self .qualified_id_user (id_user )).to_dict ()
325349 )
326350
351+ def _openshift_create_identity (self , identity_def ):
352+ api = self .get_resource_api (API_USER , "Identity" )
353+ try :
354+ return clean_openshift_metadata (api .create (body = identity_def ).to_dict ())
355+ except kexc .ConflictError :
356+ pass
357+
358+ def _openshift_delete_identity (self , username ):
359+ api = self .get_resource_api (API_USER , "Identity" )
360+ return api .delete (name = self .qualified_id_user (username )).to_dict ()
361+
362+ def _openshift_create_useridentitymapping (self , identity_mapping_def ):
363+ api = self .get_resource_api (API_USER , "UserIdentityMapping" )
364+ try :
365+ return clean_openshift_metadata (
366+ api .create (body = identity_mapping_def ).to_dict ()
367+ )
368+ except kexc .ConflictError :
369+ pass
370+
327371 def _openshift_user_exists (self , user_name ):
328372 try :
329373 self ._openshift_get_user (user_name )
0 commit comments