@@ -757,6 +757,61 @@ def __init__(self, user: IPAUser) -> None:
757757 super ().__init__ (user .role , user .name )
758758 self .name = user .name
759759
760+ def add_override_template (
761+ self ,
762+ idview_name : str ,
763+ * ,
764+ home : str | None = None ,
765+ shell : str | None = None ,
766+ domain_name : str | None = None ,
767+ global_template : bool = False ,
768+ ** kwargs ,
769+ ) -> ProcessResult [ProcessError ]:
770+ """
771+ Add a new User ID override.
772+
773+ :param idview_name: Name of IDView.
774+ :type idview_name: str
775+ :param description: Description.
776+ :type description: str | None, defaults to None
777+ :param home: Overridden Home directory.
778+ :type home: str | None, defaults to None
779+ :param shell: Overridden Login shell.
780+ :type shell: str | None, defaults to None
781+ :param domain_name: Override template Domain name. Assumes domain template will be added.
782+ :type domain_name: str | None, defaults to None
783+ :param global_template: Global template override.
784+ :type global_template: bool, defaults to False.
785+ :return: ProcessResult
786+ :rtype: ProcessResult[ProcessError]
787+ """
788+
789+ if domain_name and global_template :
790+ raise ValueError ("Cannot add ID override template that is domain AND global." )
791+
792+ attrs : CLIBuilderArgs = {
793+ "homedir" : (self .cli .option .VALUE , home ),
794+ "shell" : (self .cli .option .VALUE , shell ),
795+ }
796+
797+ if kwargs :
798+ unexpected_keys = ",d " .join (kwargs .keys ())
799+ raise TypeError (f"Unexpected keyword arguments: { unexpected_keys } " )
800+
801+ # Create the ID override first
802+ if domain_name :
803+ result = self .role .host .conn .exec (
804+ ["ipa" , "idoverrideuser-add" , idview_name , "*" , "--template" , domain_name ] + to_list_without_none (self .cli .args (attrs )),
805+ raise_on_error = False ,
806+ )
807+ elif global_template :
808+ result = self .role .host .conn .exec (
809+ ["ipa" , "idoverrideuser-add" , idview_name , "*" , "--global-template" ] + to_list_without_none (self .cli .args (attrs )),
810+ raise_on_error = False ,
811+ )
812+
813+ return result
814+
760815 def add_override (
761816 self ,
762817 idview_name : str ,
0 commit comments