Skip to content

Commit 564f96c

Browse files
ipa: IDUserOverride - Add override template method
1 parent b4b07d5 commit 564f96c

File tree

1 file changed

+57
-0
lines changed
  • sssd_test_framework/roles

1 file changed

+57
-0
lines changed

sssd_test_framework/roles/ipa.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,63 @@ def __init__(self, user: IPAUser) -> None:
826826
super().__init__(user.role, user.name)
827827
self.name = user.name
828828

829+
def add_override_template(
830+
self,
831+
idview_name: str,
832+
*,
833+
home: str | None = None,
834+
shell: str | None = None,
835+
domain_name: str | None = None,
836+
global_template: bool = False,
837+
**kwargs,
838+
) -> ProcessResult[ProcessError]:
839+
"""
840+
Add a new User ID override.
841+
842+
:param idview_name: Name of IDView.
843+
:type idview_name: str
844+
:param description: Description.
845+
:type description: str | None, defaults to None
846+
:param home: Overridden Home directory.
847+
:type home: str | None, defaults to None
848+
:param shell: Overridden Login shell.
849+
:type shell: str | None, defaults to None
850+
:param domain_name: Override template Domain name. Assumes domain template will be added.
851+
:type domain_name: str | None, defaults to None
852+
:param global_template: Global template override.
853+
:type global_template: bool, defaults to False.
854+
:return: ProcessResult
855+
:rtype: ProcessResult[ProcessError]
856+
"""
857+
858+
if domain_name and global_template:
859+
raise ValueError("Cannot add ID override template that is domain AND global.")
860+
861+
attrs: CLIBuilderArgs = {
862+
"homedir": (self.cli.option.VALUE, home),
863+
"shell": (self.cli.option.VALUE, shell),
864+
}
865+
866+
if kwargs:
867+
unexpected_keys = ",d ".join(kwargs.keys())
868+
raise TypeError(f"Unexpected keyword arguments: {unexpected_keys}")
869+
870+
# Create the ID override first
871+
if domain_name:
872+
result = self.role.host.conn.exec(
873+
["ipa", "idoverrideuser-add", idview_name, "*", "--template", domain_name]
874+
+ to_list_without_none(self.cli.args(attrs)),
875+
raise_on_error=False,
876+
)
877+
elif global_template:
878+
result = self.role.host.conn.exec(
879+
["ipa", "idoverrideuser-add", idview_name, "*", "--global-template"]
880+
+ to_list_without_none(self.cli.args(attrs)),
881+
raise_on_error=False,
882+
)
883+
884+
return result
885+
829886
def add_override(
830887
self,
831888
idview_name: str,

0 commit comments

Comments
 (0)