Skip to content

Commit 60e891f

Browse files
ipa: IDUserOverride - Add override template method
1 parent 273b4ee commit 60e891f

File tree

1 file changed

+55
-0
lines changed
  • sssd_test_framework/roles

1 file changed

+55
-0
lines changed

sssd_test_framework/roles/ipa.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)